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