From 7aa50ecd9a6ceec26bd7505e993ccc22a1226ee5 Mon Sep 17 00:00:00 2001 From: colomon Date: Thu, 18 Feb 2010 17:47:27 +0000 Subject: [PATCH] [t/spec] Further optimizations to the trig tests. git-svn-id: http://svn.pugscode.org/pugs@29777 c213334d-75ef-0310-aa23-eaa082d1ae64 --- t/spec/S32-trig/TrigTestSupport | 35 ++++++++++++----------------------- t/spec/S32-trig/atan2.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cos.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cosec.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cosech.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cosh.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cotan.t | 35 ++++++++++++----------------------- t/spec/S32-trig/cotanh.t | 35 ++++++++++++----------------------- t/spec/S32-trig/sec.t | 35 ++++++++++++----------------------- t/spec/S32-trig/sech.t | 35 ++++++++++++----------------------- t/spec/S32-trig/sin.t | 35 ++++++++++++----------------------- t/spec/S32-trig/sinh.t | 35 ++++++++++++----------------------- t/spec/S32-trig/tan.t | 35 ++++++++++++----------------------- t/spec/S32-trig/tanh.t | 35 ++++++++++++----------------------- 14 files changed, 168 insertions(+), 322 deletions(-) diff --git a/t/spec/S32-trig/TrigTestSupport b/t/spec/S32-trig/TrigTestSupport index 967d4f638..fc65b1c55 100644 --- a/t/spec/S32-trig/TrigTestSupport +++ b/t/spec/S32-trig/TrigTestSupport @@ -12,43 +12,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/atan2.t b/t/spec/S32-trig/atan2.t index e24a05af1..916e66e15 100644 --- a/t/spec/S32-trig/atan2.t +++ b/t/spec/S32-trig/atan2.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cos.t b/t/spec/S32-trig/cos.t index f32eeffcb..d3ccad54c 100644 --- a/t/spec/S32-trig/cos.t +++ b/t/spec/S32-trig/cos.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cosec.t b/t/spec/S32-trig/cosec.t index 59090d907..1a4a2a19c 100644 --- a/t/spec/S32-trig/cosec.t +++ b/t/spec/S32-trig/cosec.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cosech.t b/t/spec/S32-trig/cosech.t index a6a4438f6..a41d63d6c 100644 --- a/t/spec/S32-trig/cosech.t +++ b/t/spec/S32-trig/cosech.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cosh.t b/t/spec/S32-trig/cosh.t index a9b267fec..60b38d2ce 100644 --- a/t/spec/S32-trig/cosh.t +++ b/t/spec/S32-trig/cosh.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cotan.t b/t/spec/S32-trig/cotan.t index 2bbbd8836..46aeda386 100644 --- a/t/spec/S32-trig/cotan.t +++ b/t/spec/S32-trig/cotan.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/cotanh.t b/t/spec/S32-trig/cotanh.t index c56f893e4..4b0faa787 100644 --- a/t/spec/S32-trig/cotanh.t +++ b/t/spec/S32-trig/cotanh.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/sec.t b/t/spec/S32-trig/sec.t index e6bf70d7d..d039f29a4 100644 --- a/t/spec/S32-trig/sec.t +++ b/t/spec/S32-trig/sec.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/sech.t b/t/spec/S32-trig/sech.t index 73b4d6926..091153dec 100644 --- a/t/spec/S32-trig/sech.t +++ b/t/spec/S32-trig/sech.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/sin.t b/t/spec/S32-trig/sin.t index edfa49309..3de6a6d08 100644 --- a/t/spec/S32-trig/sin.t +++ b/t/spec/S32-trig/sin.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/sinh.t b/t/spec/S32-trig/sinh.t index 86fc2a9e6..37374b2c7 100644 --- a/t/spec/S32-trig/sinh.t +++ b/t/spec/S32-trig/sinh.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/tan.t b/t/spec/S32-trig/tan.t index 31ddb7614..057efcb95 100644 --- a/t/spec/S32-trig/tan.t +++ b/t/spec/S32-trig/tan.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } diff --git a/t/spec/S32-trig/tanh.t b/t/spec/S32-trig/tanh.t index 6882991cd..3c3a26eda 100644 --- a/t/spec/S32-trig/tanh.t +++ b/t/spec/S32-trig/tanh.t @@ -15,43 +15,32 @@ class AngleAndResult { has $.angle_in_degrees; has $.result; - + + INIT { + our @radians-to-whatever = (1, 180 / pi, 200 / pi, 1 / (2 * pi)); + our @degrees-to-whatever = ((312689/99532) / 180, 1, 200 / 180, 1 / 360); + our @degrees-to-whatever-num = @degrees-to-whatever.map({ .Num }); + } + multi method new(Int $angle_in_degrees is copy, $result is copy) { self.bless(*, :$angle_in_degrees, :$result); } method complex($imaginary_part_in_radians, $base) { - my $z_in_radians = $.angle_in_degrees.Num / 180.0 * pi + ($imaginary_part_in_radians)i; - given $base { - when Degrees { $z_in_radians * 180.0 / pi; } - when Radians { $z_in_radians; } - when Gradians { $z_in_radians * 200.0 / pi; } - when Circles { $z_in_radians / (2.0 * pi); } - } + my $z_in_radians = $.angle_in_degrees / 180.0 * pi + ($imaginary_part_in_radians)i; + $z_in_radians * pir::get_global__Ps('@radians-to-whatever')[$base]; } method num($base) { - given $base { - when Degrees { $.angle_in_degrees.Num } - when Radians { $.angle_in_degrees.Num / 180.0 * pi } - when Gradians { $.angle_in_degrees.Num / 180.0 * 200.0 } - when Circles { $.angle_in_degrees.Num / 360.0 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever-num')[$base]; } method rat($base) { - given $base { - when Degrees { $.angle_in_degrees / 1 } - when Radians { $.angle_in_degrees / 180 * (314159265 / 100000000) } - when Gradians { $.angle_in_degrees * (200 / 180) } - when Circles { $.angle_in_degrees / 360 } - } + $.angle_in_degrees * pir::get_global__Ps('@degrees-to-whatever')[$base]; } method int($base) { - given $base { - when Degrees { $.angle_in_degrees } - } + $.angle_in_degrees; } } -- 2.11.4.GIT