diff --git a/src/setting/Any-num.pm b/src/setting/Any-num.pm index 8571a40f18e..c50c6ec561e 100644 --- a/src/setting/Any-num.pm +++ b/src/setting/Any-num.pm @@ -195,7 +195,14 @@ multi sub abs($x) { (+$x).abs() } multi sub exp($x) { $x.Num.exp() } multi sub log($x) { $x.Num.log() } multi sub log10($x) { $x.Num.log10 } -multi sub sin($x, $base = 'radians') { $x.sin($base) } + +multi sub sin($x, $base = 'radians') { + $x.sin($base) +} + +multi sub asin($x, $base = 'radians') { + $x.asin($base) +} our Num sub rand (*@args) { die "too many arguments passed - 0 params expected" if @args; diff --git a/src/setting/Complex.pm b/src/setting/Complex.pm index 95fc184a533..8dddd963103 100644 --- a/src/setting/Complex.pm +++ b/src/setting/Complex.pm @@ -27,7 +27,11 @@ class Complex { multi method sin($base = 'radians') { $.re.sin($base) * $.im.cosh($base) + ($.re.cos($base) * $.im.sinh($base))i; } - + + multi method asin($base = 'radians') { + -1i * log((self)i + sqrt(1 - self * self)); + } + multi method cos($base = 'radians') { $.re.cos($base) * $.im.cosh($base) - ($.re.sin($base) * $.im.sinh($base))i; } @@ -217,11 +221,4 @@ multi sub exp(Complex $x) { $x.exp() } -multi sub sin(Complex $x) { - $x.sin(); -} -multi sub sin(Complex $x, $base) { - $x.sin($base); -} - # vim: ft=perl6 diff --git a/src/setting/Num.pm b/src/setting/Num.pm index ab4efabe99d..7ed68671bb4 100644 --- a/src/setting/Num.pm +++ b/src/setting/Num.pm @@ -270,7 +270,7 @@ class Num is also { } } - our Num multi method sin($base = 'radians') is export { + our Num multi method sin($base = 'radians') { my $x = self!to-radians($base); Q:PIR { $P0 = find_lex "$x"