File Coverage

blib/lib/ToolSet/Math.pm
Criterion Covered Total %
statement 56 56 100.0
branch 2 2 100.0
condition n/a
subroutine 21 21 100.0
pod 0 2 0.0
total 79 81 97.5


line stmt bran cond sub pod time code
1             package ToolSet::Math;
2 1     1   532 use base qw(ToolSet);
  1         3  
  1         558  
3              
4 1     1   1165 use 5.008_005;
  1         4  
5 1     1   5 use strict;
  1         2  
  1         17  
6 1     1   5 use warnings;
  1         3  
  1         36  
7              
8 1     1   6 use List::Util qw(reduce);
  1         2  
  1         183  
9              
10             BEGIN {
11 1     1   4 our $VERSION = "1.001";
12 1         55 $VERSION = eval $VERSION;
13              
14 1         87 our @EXPORT = qw(
15             E LN2 LN10 PI PI2 PI4 PIP2 PIP4 SQRT2 SQRT5 SQRT1_2 GOLDENR
16             log2 fac
17             );
18             }
19              
20             ToolSet->export(
21             "List::Util" => [qw(max min sum sum0)],
22             "Math::Trig" => undef,
23             "Math::Complex" => undef,
24             "Math::Complex" => [qw(:pi)],
25             "POSIX" => [qw(
26             ceil floor modf pow round
27             isfinite isinf isnan
28             FLT_EPSILON DBL_EPSILON nan NaN NAN
29             )], # use int() for trunc()
30             );
31              
32 1     1   6 use constant E => exp(1);
  1         2  
  1         139  
33 1     1   7 use constant LN2 => log(2);
  1         1  
  1         63  
34 1     1   6 use constant LN10 => log(10);
  1         14  
  1         65  
35              
36 1     1   6 use constant PI => 4 * CORE::atan2(1, 1);
  1         2  
  1         76  
37 1     1   6 use constant PI2 => PI * 2;
  1         2  
  1         47  
38 1     1   5 use constant PI4 => PI * 4;
  1         2  
  1         58  
39 1     1   16 use constant PIP2 => PI / 2;
  1         2  
  1         60  
40 1     1   6 use constant PIP4 => PI / 4;
  1         2  
  1         48  
41              
42 1     1   6 use constant SQRT2 => sqrt(2);
  1         1  
  1         54  
43 1     1   6 use constant SQRT5 => sqrt(5);
  1         2  
  1         60  
44 1     1   5 use constant SQRT1_2 => sqrt(1 / 2);
  1         2  
  1         74  
45 1     1   6 use constant GOLDENR => (1 + SQRT5) / 2;
  1         2  
  1         153  
46              
47 4     4 0 1953 sub log2 { Math::Complex::log($_[0]) / LN2 }
48              
49 13 100   13 0 28 sub fac { !$_[0] ? 1 : reduce { $a * $b } 1 .. $_[0] }
  5     5   597  
50              
51             1;
52             __END__