@@ -16,7 +16,7 @@ class TestBigMath < Test::Unit::TestCase
1616 def test_pi
1717 assert_equal (
1818 BigDecimal ( "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068" ) ,
19- PI ( 100 ) . round ( 100 )
19+ PI ( 100 )
2020 )
2121 assert_converge_in_precision { |n | PI ( n ) }
2222 end
@@ -37,8 +37,8 @@ def test_sqrt
3737 assert_raise ( FloatDomainError ) { sqrt ( BigDecimal ( "-1.0" ) , N ) }
3838 assert_raise ( FloatDomainError ) { sqrt ( NAN , N ) }
3939 assert_raise ( FloatDomainError ) { sqrt ( PINF , N ) }
40- assert_in_delta ( SQRT2 , sqrt ( BigDecimal ( "2" ) , 100 ) , BigDecimal ( "1e- 100" ) )
41- assert_in_delta ( SQRT3 , sqrt ( BigDecimal ( "3" ) , 100 ) , BigDecimal ( "1e- 100" ) )
40+ assert_in_exact_precision ( SQRT2 , sqrt ( BigDecimal ( "2" ) , 100 ) , 100 )
41+ assert_in_exact_precision ( SQRT3 , sqrt ( BigDecimal ( "3" ) , 100 ) , 100 )
4242 assert_converge_in_precision { |n | sqrt ( BigDecimal ( "2" ) , n ) }
4343 assert_converge_in_precision { |n | sqrt ( BigDecimal ( "2e-50" ) , n ) }
4444 assert_converge_in_precision { |n | sqrt ( BigDecimal ( "2e50" ) , n ) }
@@ -56,9 +56,9 @@ def test_sin
5656 assert_in_delta ( 0.0 , sin ( PI ( N ) * 21 , N ) )
5757 assert_in_delta ( 0.0 , sin ( PI ( N ) * 30 , N ) )
5858 assert_in_delta ( -1.0 , sin ( PI ( N ) * BigDecimal ( "301.5" ) , N ) )
59- assert_in_delta ( BigDecimal ( '0.5' ) , sin ( PI ( 100 ) / 6 , 100 ) , BigDecimal ( "1e- 100" ) )
60- assert_in_delta ( SQRT3 / 2 , sin ( PI ( 100 ) / 3 , 100 ) , BigDecimal ( "1e- 100" ) )
61- assert_in_delta ( SQRT2 / 2 , sin ( PI ( 100 ) / 4 , 100 ) , BigDecimal ( "1e- 100" ) )
59+ assert_in_exact_precision ( BigDecimal ( '0.5' ) , sin ( PI ( 100 ) / 6 , 100 ) , 100 )
60+ assert_in_exact_precision ( SQRT3 / 2 , sin ( PI ( 100 ) / 3 , 100 ) , 100 )
61+ assert_in_exact_precision ( SQRT2 / 2 , sin ( PI ( 100 ) / 4 , 100 ) , 100 )
6262 assert_converge_in_precision { |n | sin ( BigDecimal ( "1" ) , n ) }
6363 assert_converge_in_precision { |n | sin ( BigDecimal ( "1e50" ) , n ) }
6464 assert_converge_in_precision { |n | sin ( BigDecimal ( "1e-30" ) , n ) }
@@ -80,9 +80,9 @@ def test_cos
8080 assert_in_delta ( -1.0 , cos ( PI ( N ) * 21 , N ) )
8181 assert_in_delta ( 1.0 , cos ( PI ( N ) * 30 , N ) )
8282 assert_in_delta ( 0.0 , cos ( PI ( N ) * BigDecimal ( "301.5" ) , N ) )
83- assert_in_delta ( BigDecimal ( '0.5' ) , cos ( PI ( 100 ) / 3 , 100 ) , BigDecimal ( "1e- 100" ) )
84- assert_in_delta ( SQRT3 / 2 , cos ( PI ( 100 ) / 6 , 100 ) , BigDecimal ( "1e- 100" ) )
85- assert_in_delta ( SQRT2 / 2 , cos ( PI ( 100 ) / 4 , 100 ) , BigDecimal ( "1e- 100" ) )
83+ assert_in_exact_precision ( BigDecimal ( '0.5' ) , cos ( PI ( 100 ) / 3 , 100 ) , 100 )
84+ assert_in_exact_precision ( SQRT3 / 2 , cos ( PI ( 100 ) / 6 , 100 ) , 100 )
85+ assert_in_exact_precision ( SQRT2 / 2 , cos ( PI ( 100 ) / 4 , 100 ) , 100 )
8686 assert_converge_in_precision { |n | cos ( BigDecimal ( "1" ) , n ) }
8787 assert_converge_in_precision { |n | cos ( BigDecimal ( "1e50" ) , n ) }
8888 assert_converge_in_precision { |n | cos ( BigDecimal ( PI ( 50 ) / 2 ) , n ) }
@@ -100,14 +100,18 @@ def test_tan
100100 assert_in_delta ( 0.0 , tan ( -PI ( N ) , N ) )
101101 assert_in_delta ( -1.0 , tan ( -PI ( N ) / 4 , N ) )
102102 assert_in_delta ( -sqrt ( BigDecimal ( 3 ) , N ) , tan ( -PI ( N ) / 3 , N ) )
103+ assert_in_exact_precision ( SQRT3 , tan ( PI ( 100 ) / 3 , 100 ) , 100 )
104+ assert_converge_in_precision { |n | tan ( 1 , n ) }
105+ assert_converge_in_precision { |n | tan ( BigMath ::PI ( 50 ) / 2 , n ) }
106+ assert_converge_in_precision { |n | tan ( BigMath ::PI ( 50 ) , n ) }
103107 end
104108
105109 def test_atan
106110 assert_equal ( 0.0 , atan ( BigDecimal ( "0.0" ) , N ) )
107111 assert_in_delta ( Math ::PI /4 , atan ( BigDecimal ( "1.0" ) , N ) )
108112 assert_in_delta ( Math ::PI /6 , atan ( sqrt ( BigDecimal ( "3.0" ) , N ) / 3 , N ) )
109113 assert_in_delta ( Math ::PI /2 , atan ( PINF , N ) )
110- assert_in_delta ( PI ( 100 ) / 3 , atan ( SQRT3 , 100 ) , BigDecimal ( "1e- 100" ) )
114+ assert_in_exact_precision ( PI ( 100 ) / 3 , atan ( SQRT3 , 100 ) , 100 )
111115 assert_equal ( BigDecimal ( "0.823840753418636291769355073102514088959345624027952954058347023122539489" ) ,
112116 atan ( BigDecimal ( "1.08" ) , 72 ) . round ( 72 ) , '[ruby-dev:41257]' )
113117 assert_converge_in_precision { |n | atan ( BigDecimal ( "2" ) , n ) }
@@ -120,8 +124,11 @@ def test_exp
120124 assert_in_epsilon ( Math . exp ( x ) , BigMath . exp ( BigDecimal ( x , 0 ) , N ) )
121125 end
122126 assert_equal ( 1 , BigMath . exp ( BigDecimal ( "0" ) , N ) )
123- assert_in_epsilon ( BigDecimal ( "4.48168907033806482260205546011927581900574986836966705677265008278593667446671377298105383138245339138861635065183019577" ) ,
124- BigMath . exp ( BigDecimal ( "1.5" ) , 100 ) , BigDecimal ( "1e-100" ) )
127+ assert_in_exact_precision (
128+ BigDecimal ( "4.48168907033806482260205546011927581900574986836966705677265008278593667446671377298105383138245339138861635065183019577" ) ,
129+ BigMath . exp ( BigDecimal ( "1.5" ) , 100 ) ,
130+ 100
131+ )
125132 assert_converge_in_precision { |n | BigMath . exp ( BigDecimal ( "1" ) , n ) }
126133 assert_converge_in_precision { |n | BigMath . exp ( BigDecimal ( "-2" ) , n ) }
127134 assert_converge_in_precision { |n | BigMath . exp ( BigDecimal ( "-34" ) , n ) }
@@ -132,8 +139,11 @@ def test_exp
132139 def test_log
133140 assert_equal ( 0 , BigMath . log ( BigDecimal ( "1.0" ) , 10 ) )
134141 assert_in_epsilon ( Math . log ( 10 ) *1000 , BigMath . log ( BigDecimal ( "1e1000" ) , 10 ) )
135- assert_in_epsilon ( BigDecimal ( "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862" ) ,
136- BigMath . log ( BigDecimal ( "10" ) , 100 ) , BigDecimal ( "1e-100" ) )
142+ assert_in_exact_precision (
143+ BigDecimal ( "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862" ) ,
144+ BigMath . log ( BigDecimal ( "10" ) , 100 ) ,
145+ 100
146+ )
137147 assert_converge_in_precision { |n | BigMath . log ( BigDecimal ( "2" ) , n ) }
138148 assert_converge_in_precision { |n | BigMath . log ( BigDecimal ( "1e-30" ) + 1 , n ) }
139149 assert_converge_in_precision { |n | BigMath . log ( BigDecimal ( "1e-30" ) , n ) }
0 commit comments