From 6c31fe31ab8b4a014d25fb5187501584ee353ac8 Mon Sep 17 00:00:00 2001 From: Zoffix Znet Date: Wed, 19 Oct 2016 17:21:38 -0400 Subject: [PATCH] [coverage] Cover nummy trig: sinh and asinh Includes cover for asinh case of https://github.com/rakudo/rakudo/commit/a7e801f396250da76529734764acb62087187834 and fudge for RT#129919: https://rt.perl.org/Ticket/Display.html?id=129919 --- S02-types/num.t | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/S02-types/num.t b/S02-types/num.t index 781e3bb24c..2e9ffc537c 100644 --- a/S02-types/num.t +++ b/S02-types/num.t @@ -4,7 +4,7 @@ use Test; #L and C Types/Perl 6 intrinsically supports big integers> -plan 90; +plan 92; isa-ok( EVAL(1.Num.perl), Num, 'EVAL 1.Num.perl is Num' ); is-approx( EVAL(1.Num.perl), 1, 'EVAL 1.Num.perl is 1' ); @@ -658,6 +658,43 @@ ok Num === Num, 'Num === Num should be truthy, and not die'; is-approx acotan(my num $ = -√(1-2/√5)), my num $ = -2*π/5, '-√(1-2/√5)'; is-approx acotan(my num $ = -(2-√3)), my num $ = -5*π/12, '-(2-√3)'; } + + subtest 'sinh(num)' => { + my @test-values = 𝑒, 0e0, 1e0, π, τ, 1e2; + plan 2*@test-values + 6; + + cmp-ok sinh(my num $ ), '===', NaN, 'uninitialized'; + cmp-ok sinh(my num $ = NaN), '===', NaN, 'NaN'; + + cmp-ok sinh(my num $ = ∞), '==', ∞, '∞'; + cmp-ok sinh(my num $ = -∞), '==', -∞, '-∞'; + cmp-ok sinh(my num $ = 1e20), '==', ∞, '1e20'; + cmp-ok sinh(my num $ = -1e20), '==', -∞, '-1e20'; + + for @test-values.map({|($_, -$_)}) -> $x { + is-approx sinh(my num $ = $x), my num $ = (𝑒**$x - 𝑒**(-$x))/2, ~$x; + } + } + + subtest 'asinh(num)' => { + my @test-values = 𝑒, 0e0, 1e0, π, τ, 1e2; + plan 2*@test-values + 7; + + cmp-ok asinh(my num $ ), '===', NaN, 'uninitialized'; + cmp-ok asinh(my num $ = NaN), '===', NaN, 'NaN'; + + cmp-ok asinh(my num $ = ∞), '==', ∞, '∞'; + cmp-ok asinh(my num $ = -∞), '==', -∞, '-∞'; + + cmp-ok asinh(my num $ = 1e200), '==', ∞, '1e200'; + #?rakudo 2 todo 'RT 129919' + cmp-ok asinh(my num $ = -1e200), '==', -∞, '-1e200'; + is asinh(my num $ = -0e0).Str, '-0', '-0e0 actually gives a minus 0'; + + for @test-values.map({|($_, -$_)}) -> $x { + is-approx asinh(my num $ = $x), my num $ = log($x+√($x²+1)), ~$x; + } + } } # vim: ft=perl6