Skip to content

Commit

Permalink
Move to-radians and from-radians from Any to Numeric, make them public.
Browse files Browse the repository at this point in the history
  • Loading branch information
colomon committed Apr 9, 2010
1 parent 4c94d70 commit 43f8659
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 43 deletions.
13 changes: 0 additions & 13 deletions src/core/Any-num.pm
Expand Up @@ -47,19 +47,6 @@ augment class Any {
self.Num.sqrt;
}

INIT {
our @trig-base-conversions = (1.0, pi / 180.0, pi / 200.0, 2.0 * pi);
}

# Used by the :Trig subs and methods in the Int and Num classes.
our multi method !to-radians($base) {
self * pir::get_global__Ps('@trig-base-conversions')[$base];
}

our multi method !from-radians($base) {
self / pir::get_global__Ps('@trig-base-conversions')[$base];
}

multi method log($base = e) {
$.Num.log($base);
}
Expand Down
28 changes: 14 additions & 14 deletions src/core/Complex.pm
Expand Up @@ -38,23 +38,23 @@ class Complex does Numeric {
}

multi method asin($base = Radians) {
(-1i * log((self)i + sqrt(1 - self * self)))!from-radians($base);
(-1i * log((self)i + sqrt(1 - self * self))).from-radians($base);
}

multi method cos($base = Radians) {
$.re.cos($base) * $.im.cosh($base) - ($.re.sin($base) * $.im.sinh($base))i;
}

multi method acos($base = Radians) {
(pi / 2)!from-radians($base) - self.asin($base);
(pi / 2).from-radians($base) - self.asin($base);
}

multi method tan($base = Radians) {
self.sin($base) / self.cos($base);
}

multi method atan($base = Radians) {
((log(1 - (self)i) - log(1 + (self)i))i / 2)!from-radians($base);
((log(1 - (self)i) - log(1 + (self)i))i / 2).from-radians($base);
}

multi method sec($base = Radians) {
Expand Down Expand Up @@ -86,23 +86,23 @@ class Complex does Numeric {
}

multi method asinh($base = Radians) {
(self + sqrt(1 + self * self)).log!from-radians($base);
(self + sqrt(1 + self * self)).log.from-radians($base);
}

multi method cosh($base = Radians) {
(1i * self).cos($base);
}

multi method acosh($base = Radians) {
(self + sqrt(self * self - 1)).log!from-radians($base);
(self + sqrt(self * self - 1)).log.from-radians($base);
}

multi method tanh($base = Radians) {
-((1i * self).tan($base))i;
}

multi method atanh($base = Radians) {
(((1 + self) / (1 - self)).log / 2)!from-radians($base);
(((1 + self) / (1 - self)).log / 2).from-radians($base);
}

multi method sech($base = Radians) {
Expand Down Expand Up @@ -207,35 +207,35 @@ class Complex does Numeric {
}
multi method cosec($base = Radians) {
1.0 / self!to-radians($base).sin;
1.0 / self.to-radians($base).sin;
}
multi method cosech($base = Radians) {
1.0 / self!to-radians($base).sinh;
1.0 / self.to-radians($base).sinh;
}
multi method acosec($base = Radians) {
(1.0 / self).asin!to-radians($base);
(1.0 / self).asin.to-radians($base);
}
multi method cotan($base = Radians) {
1.0 / self!to-radians($base).tan;
1.0 / self.to-radians($base).tan;
}
multi method cotanh($base = Radians) {
1.0 / self!to-radians($base).tanh;
1.0 / self.to-radians($base).tanh;
}
multi method acotan($base = Radians) {
(1.0 / self).atan!to-radians($base);
(1.0 / self).atan.to-radians($base);
}
multi method acosech($base = Radians) {
(1.0 / self).asinh!to-radians($base);
(1.0 / self).asinh.to-radians($base);
}
multi method acotanh($base = Radians) {
(1.0 / self).atanh!to-radians($base);
(1.0 / self).atanh.to-radians($base);
}
multi method Num {
Expand Down
32 changes: 16 additions & 16 deletions src/core/Num.pm
Expand Up @@ -88,63 +88,63 @@ augment class Num does Real {
}

multi method sin($base = Radians) {
pir::sin__Nn(self!to-radians($base));
pir::sin__Nn(self.to-radians($base));
}

multi method asin($base = Radians) {
pir::asin__Nn(self)!from-radians($base);
pir::asin__Nn(self).from-radians($base);
}

multi method cos($base = Radians) {
pir::cos__Nn(self!to-radians($base));
pir::cos__Nn(self.to-radians($base));
}

multi method acos($base = Radians) {
pir::acos__Nn(self)!from-radians($base);
pir::acos__Nn(self).from-radians($base);
}

multi method tan($base = Radians) {
pir::tan__Nn(self!to-radians($base));
pir::tan__Nn(self.to-radians($base));
}

multi method atan($base = Radians) {
pir::atan__Nn(self)!from-radians($base);
pir::atan__Nn(self).from-radians($base);
}

multi method sec($base = Radians) {
pir::sec__Nn(self!to-radians($base));
pir::sec__Nn(self.to-radians($base));
}

multi method asec($base = Radians) {
pir::asec__Nn(self)!from-radians($base);
pir::asec__Nn(self).from-radians($base);
}

multi method sinh($base = Radians) {
pir::sinh__Nn(self!to-radians($base));
pir::sinh__Nn(self.to-radians($base));
}

multi method asinh($base = Radians) {
(self + (self * self + 1).sqrt).log!from-radians($base);
(self + (self * self + 1).sqrt).log.from-radians($base);
}

multi method cosh($base = Radians) {
pir::cosh__Nn(self!to-radians($base));
pir::cosh__Nn(self.to-radians($base));
}

multi method acosh($base = Radians) {
(self + (self * self - 1).sqrt).log!from-radians($base);
(self + (self * self - 1).sqrt).log.from-radians($base);
}

multi method tanh($base = Radians) {
pir::tanh__Nn(self!to-radians($base));
pir::tanh__Nn(self.to-radians($base));
}

multi method atanh($base = Radians) {
(((1 + self) / (1 - self)).log / 2)!from-radians($base);
(((1 + self) / (1 - self)).log / 2).from-radians($base);
}

multi method sech($base = Radians) {
pir::sech__Nn(self!to-radians($base));
pir::sech__Nn(self.to-radians($base));
}

multi method asech($base = Radians) {
Expand Down Expand Up @@ -184,7 +184,7 @@ augment class Num does Real {
}

multi method atan2(Num $x = 1, $base = Radians) {
pir::atan__NNn(self, $x)!from-radians($base);
pir::atan__NNn(self, $x).from-radians($base);
}

our ::Complex multi method unpolar($angle) {
Expand Down
13 changes: 13 additions & 0 deletions src/core/Numeric.pm
@@ -1,4 +1,17 @@
role Numeric {
INIT {
our @trig-base-conversions = (1.0, pi / 180.0, pi / 200.0, 2.0 * pi);
}

# Used by the :Trig subs and methods in the Int and Num classes.
method to-radians($base) {
self * pir::get_global__Ps('@trig-base-conversions')[$base];
}

method from-radians($base) {
self / pir::get_global__Ps('@trig-base-conversions')[$base];
}

method log10(Numeric $x:) {
self.log(10);
}
Expand Down

0 comments on commit 43f8659

Please sign in to comment.