File Coverage

blib/lib/Math/Libm.pm
Criterion Covered Total %
statement 28 34 82.3
branch 4 10 40.0
condition 0 3 0.0
subroutine 8 9 88.8
pod n/a
total 40 56 71.4


line stmt bran cond sub pod time code
1             package Math::Libm;
2              
3 1     1   659 use strict;
  1         1  
  1         25  
4             # use warnings;
5 1     1   5 use Carp;
  1         1  
  1         85  
6 1     1   5 use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK @EXPORT $VERSION $AUTOLOAD);
  1         1  
  1         88  
7              
8             require Exporter;
9             require DynaLoader;
10 1     1   794 use AutoLoader;
  1         2048  
  1         6  
11              
12             @ISA = qw(Exporter DynaLoader);
13              
14             # Items to export into callers namespace by default. Note: do not export
15             # names by default without a very good reason. Use EXPORT_OK instead.
16             # Do not simply export all your public functions/methods/constants.
17              
18             # This allows declaration use Math::Libm ':all';
19             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
20             # will save memory.
21             %EXPORT_TAGS = ( 'all' => [ qw(
22             M_1_PI
23             M_2_PI
24             M_2_SQRTPI
25             M_E
26             M_LN10
27             M_LN2
28             M_LOG10E
29             M_LOG2E
30             M_PI
31             M_PI_2
32             M_PI_4
33             M_SQRT1_2
34             M_SQRT2
35             acos
36             acosh
37             asin
38             asinh
39             atan
40             atanh
41             cbrt
42             ceil
43             cosh
44             erf
45             erfc
46             expm1
47             floor
48             hypot
49             j0
50             j1
51             jn
52             lgamma_r
53             log10
54             log1p
55             pow
56             rint
57             sinh
58             tan
59             tanh
60             y0
61             y1
62             yn
63             ) ] );
64              
65             @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
66              
67             @EXPORT = qw();
68              
69             $VERSION = '1.00';
70              
71             sub AUTOLOAD {
72             # This AUTOLOAD is used to 'autoload' constants from the constant()
73             # XS function. If a constant is not found then control is passed
74             # to the AUTOLOAD in AutoLoader.
75              
76 13     13   8334 my $constname;
77 13         61 ($constname = $AUTOLOAD) =~ s/.*:://;
78 13 50       34 croak "& not defined" if $constname eq 'constant';
79 13 50       64 my $val = constant($constname, @_ ? $_[0] : 0);
80 13 50       41 if ($! != 0) {
81 1 0 0 1   1047 if ($! =~ /Invalid/ || $!{EINVAL}) {
  1         1699  
  1         82  
  0         0  
82 0         0 $AutoLoader::AUTOLOAD = $AUTOLOAD;
83 0         0 goto &AutoLoader::AUTOLOAD;
84             }
85             else {
86 0         0 croak "Your vendor has not defined Math::Libm macro $constname";
87             }
88             }
89             {
90 1     1   7 no strict 'refs';
  1         2  
  1         186  
  13         12  
91             # Fixed between 5.005_53 and 5.005_61
92 13 50       31 if ($] >= 5.00561) {
93             # *$AUTOLOAD = sub () { $val };
94 13     13   81 *$AUTOLOAD = sub { $val };
  13         90  
95             }
96             else {
97 0     0   0 *$AUTOLOAD = sub { $val };
  0         0  
98             }
99             }
100 13         38 goto &$AUTOLOAD;
101             }
102              
103             bootstrap Math::Libm $VERSION;
104              
105             # Preloaded methods go here.
106              
107             # Autoload methods go after =cut, and are processed by the autosplit program.
108              
109             1;
110             __END__