summaryrefslogtreecommitdiff
path: root/lib/Math
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-04-28 13:32:17 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-04-28 13:32:17 +0000
commit9fbe1b1205249925c401758cbbd21f50240a1ed6 (patch)
tree96e95170b0e89163f35d788abc869182adb99fcd /lib/Math
parent3a188f30750b7b6044dc11da3853f0d540738f37 (diff)
downloadperl-9fbe1b1205249925c401758cbbd21f50240a1ed6.tar.gz
Try to get "Inf" by using &POSIX::HUGE_VAL in sprintf.
p4raw-id: //depot/cfgperl@5998
Diffstat (limited to 'lib/Math')
-rw-r--r--lib/Math/Complex.pm41
1 files changed, 22 insertions, 19 deletions
diff --git a/lib/Math/Complex.pm b/lib/Math/Complex.pm
index 3c4894ad8e..857b8f85af 100644
--- a/lib/Math/Complex.pm
+++ b/lib/Math/Complex.pm
@@ -5,17 +5,31 @@
# -- Daniel S. Lewart Since Sep 1997
#
-require Exporter;
package Math::Complex;
-use 5.005_64;
-use strict;
+$VERSION = "1.30";
+
+our($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $Inf);
+
+BEGIN {
+ eval { require POSIX; import POSIX 'HUGE_VAL' };
+ if (defined &HUGE_VAL) {
+ $Inf = sprintf "%g", &HUGE_VAL;
+ } else {
+ my $e = $!;
+ $Inf = CORE::exp(CORE::exp(30));
+ $! = $e; # Clear ERANGE.
+ undef $Inf unless $Inf =~ /^inf$/; # Inf INF inf
+ }
+ $Inf = "Inf" if !defined $Inf || !($Inf > 0);
+}
-our($VERSION, @ISA, @EXPORT, %EXPORT_TAGS);
+use strict;
-my ( $i, %logn );
+my $i;
+my %LOGN;
-$VERSION = sprintf("%s", q$Id: Complex.pm,v 1.26 1998/11/01 00:00:00 dsl Exp $ =~ /(\d+\.\d+)/);
+require Exporter;
@ISA = qw(Exporter);
@@ -67,21 +81,10 @@ use overload
# Package "privates"
#
-my $package = 'Math::Complex'; # Package name
my %DISPLAY_FORMAT = ('style' => 'cartesian',
'polar_pretty_print' => 1);
my $eps = 1e-14; # Epsilon
-my $Inf;
-# Unicos gets a fatal runtime error without -h matherr=errno in ccflags
-unless ($^O eq 'unicos') {
- my $e = $!;
- $Inf = CORE::exp(CORE::exp(30));
- $! = $e; # Clear ERANGE.
- undef $Inf unless $Inf =~ /^inf$/; # Inf INF inf
-}
-$Inf = "Inf" if !defined $Inf || !$Inf > 0;
-
#
# Object attributes (internal):
# cartesian [real, imaginary] -- cartesian form
@@ -766,8 +769,8 @@ sub log10 {
sub logn {
my ($z, $n) = @_;
$z = cplx($z, 0) unless ref $z;
- my $logn = $logn{$n};
- $logn = $logn{$n} = CORE::log($n) unless defined $logn; # Cache log(n)
+ my $logn = $LOGN{$n};
+ $logn = $LOGN{$n} = CORE::log($n) unless defined $logn; # Cache log(n)
return &log($z) / $logn;
}