From be44f6a97a52d19df63b3d4a66b53c2bb9ac17a2 Mon Sep 17 00:00:00 2001 From: Solomon Foster Date: Fri, 2 Oct 2009 15:49:14 -0400 Subject: [PATCH] Full support for Complex sec and asec. --- src/setting/Any-num.pm | 10 +++++++++- src/setting/Complex.pm | 8 ++++++++ src/setting/Int.pm | 2 +- src/setting/Num.pm | 4 ++-- src/setting/Rat.pm | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/setting/Any-num.pm b/src/setting/Any-num.pm index c7a42b5e849..1679866d067 100644 --- a/src/setting/Any-num.pm +++ b/src/setting/Any-num.pm @@ -154,7 +154,7 @@ class Any is also { self.Num.atan2($x, $base); } - our Num multi method asec($base = 'radians') is export { + our Num multi method asec($base = 'radians') { self.Num.asec($base); } @@ -220,6 +220,14 @@ multi sub atan($x, $base = 'radians') { $x.atan($base) } +multi sub sec($x, $base = 'radians') { + $x.sec($base) +} + +multi sub asec($x, $base = 'radians') { + $x.asec($base) +} + our Num sub rand (*@args) { die "too many arguments passed - 0 params expected" if @args; 1.rand diff --git a/src/setting/Complex.pm b/src/setting/Complex.pm index 7035be2ad53..9a3616f9bb5 100644 --- a/src/setting/Complex.pm +++ b/src/setting/Complex.pm @@ -48,6 +48,14 @@ class Complex { ((log(1 - (self)i) - log(1 + (self)i))i / 2)!from-radians($base); } + multi method sec($base = 'radians') { + 1 / self.cos($base); + } + + multi method asec($base = 'radians') { + (1 / self).acos($base); + } + multi method log() { Q:PIR { $P0 = get_root_namespace ['parrot'; 'Complex' ] diff --git a/src/setting/Int.pm b/src/setting/Int.pm index 7d57a64ebac..c6300ad1502 100644 --- a/src/setting/Int.pm +++ b/src/setting/Int.pm @@ -25,7 +25,7 @@ class Int is also { # Most of the trig functions for Int are in Any-num.pm, but # sec is a special case. - our Num multi method sec($base = 'radians') is export { + our Num multi method sec($base = 'radians') { self.Num.sec($base); } diff --git a/src/setting/Num.pm b/src/setting/Num.pm index d25b33b80d1..a32e547a9e4 100644 --- a/src/setting/Num.pm +++ b/src/setting/Num.pm @@ -87,7 +87,7 @@ class Num is also { $r!from-radians($base) } - our Num multi method asec($base = 'radians') is export { + our Num multi method asec($base = 'radians') { my $r = Q:PIR { $N0 = self $N1 = asec $N0 @@ -250,7 +250,7 @@ class Num is also { ~self } - our Num multi method sec($base = 'radians') is export { + our Num multi method sec($base = 'radians') { my $x = self!to-radians($base); Q:PIR { $P0 = find_lex "$x" diff --git a/src/setting/Rat.pm b/src/setting/Rat.pm index b4ea7709488..b82981854eb 100644 --- a/src/setting/Rat.pm +++ b/src/setting/Rat.pm @@ -33,7 +33,7 @@ class Rat { # Most of the trig functions for Rat are in Any-num.pm, but # sec is a special case. - our Num multi method sec($base = 'radians') is export { + our Num multi method sec($base = 'radians') { self.Num.sec($base); }