@@ -126,6 +126,39 @@ def test_tan
126
126
assert_relative_precision { |n | tan ( PI ( 200 ) * 101 / 2 , n ) }
127
127
end
128
128
129
+ def test_asin
130
+ [ "-1" , "-0.9" , "-0.1" , "0" , "0.1" , "0.9" , "1" ] . each do |x |
131
+ assert_in_delta ( Math . asin ( x . to_f ) , asin ( BigDecimal ( x ) , N ) )
132
+ end
133
+ assert_raise ( Math ::DomainError ) { BigMath . asin ( BigDecimal ( "1.1" ) , N ) }
134
+ assert_raise ( Math ::DomainError ) { BigMath . asin ( BigDecimal ( "-1.1" ) , N ) }
135
+ assert_in_delta ( PI ( 100 ) / 6 , asin ( BigDecimal ( "0.5" ) , 100 ) , BigDecimal ( "1e-100" ) )
136
+ assert_relative_precision { |n | asin ( BigDecimal ( "-0.4" ) , n ) }
137
+ assert_relative_precision { |n | asin ( BigDecimal ( "0.3" ) , n ) }
138
+ assert_relative_precision { |n | asin ( BigDecimal ( "0.9" ) , n ) }
139
+ assert_relative_precision { |n | asin ( BigDecimal ( "0.#{ "9" * 50 } " ) , n ) }
140
+ assert_relative_precision { |n | asin ( BigDecimal ( "0.#{ "9" * 100 } " ) , n ) }
141
+ assert_relative_precision { |n | asin ( BigDecimal ( "0.#{ "9" * 195 } " ) , n ) }
142
+ assert_relative_precision { |n | asin ( BigDecimal ( "1e-30" ) , n ) }
143
+ end
144
+
145
+ def test_acos
146
+ [ "-1" , "-0.9" , "-0.1" , "0" , "0.1" , "0.9" , "1" ] . each do |x |
147
+ assert_in_delta ( Math . acos ( x . to_f ) , acos ( BigDecimal ( x ) , N ) )
148
+ end
149
+ assert_raise ( Math ::DomainError ) { BigMath . acos ( BigDecimal ( "1.1" ) , N ) }
150
+ assert_raise ( Math ::DomainError ) { BigMath . acos ( BigDecimal ( "-1.1" ) , N ) }
151
+ assert_equal ( 0 , acos ( BigDecimal ( "1.0" ) , N ) )
152
+ assert_in_delta ( PI ( 100 ) / 3 , acos ( BigDecimal ( "0.5" ) , 100 ) , BigDecimal ( "1e-100" ) )
153
+ assert_relative_precision { |n | acos ( BigDecimal ( "-0.4" ) , n ) }
154
+ assert_relative_precision { |n | acos ( BigDecimal ( "0.3" ) , n ) }
155
+ assert_relative_precision { |n | acos ( BigDecimal ( "0.9" ) , n ) }
156
+ assert_relative_precision { |n | acos ( BigDecimal ( "0.#{ "9" * 50 } " ) , n ) }
157
+ assert_relative_precision { |n | acos ( BigDecimal ( "0.#{ "9" * 100 } " ) , n ) }
158
+ assert_relative_precision { |n | acos ( BigDecimal ( "0.#{ "9" * 195 } " ) , n ) }
159
+ assert_relative_precision { |n | acos ( BigDecimal ( "1e-30" ) , n ) }
160
+ end
161
+
129
162
def test_atan
130
163
assert_equal ( 0.0 , atan ( BigDecimal ( "0.0" ) , N ) )
131
164
assert_in_delta ( Math ::PI /4 , atan ( BigDecimal ( "1.0" ) , N ) )
0 commit comments