@@ -121,12 +121,13 @@ def test_vpdivd_large_quotient_prec
121121 end
122122
123123 def test_vpdivd_with_one
124- x = BigDecimal ( '1234.2468000001234' )
125- assert_vpdivd_equal ( [ BigDecimal ( '1234' ) , BigDecimal ( '0.2468000001234' ) ] , [ x , BigDecimal ( 1 ) , 1 ] )
126- assert_vpdivd_equal ( [ BigDecimal ( '+1234.2468' ) , BigDecimal ( '+0.1234e-9' ) ] , [ +x , BigDecimal ( +1 ) , 2 ] )
127- assert_vpdivd_equal ( [ BigDecimal ( '-1234.2468' ) , BigDecimal ( '+0.1234e-9' ) ] , [ +x , BigDecimal ( -1 ) , 2 ] )
128- assert_vpdivd_equal ( [ BigDecimal ( '-1234.2468' ) , BigDecimal ( '-0.1234e-9' ) ] , [ -x , BigDecimal ( +1 ) , 2 ] )
129- assert_vpdivd_equal ( [ BigDecimal ( '+1234.2468' ) , BigDecimal ( '-0.1234e-9' ) ] , [ -x , BigDecimal ( -1 ) , 2 ] )
124+ rest = BigDecimal ( "0.1234e-#{ BASE_FIG } " )
125+ x = BigDecimal ( '1234.2468' ) + rest
126+ assert_vpdivd_equal ( [ BigDecimal ( '1234' ) , BigDecimal ( '0.2468' ) + rest ] , [ x , BigDecimal ( 1 ) , 1 ] )
127+ assert_vpdivd_equal ( [ BigDecimal ( '+1234.2468' ) , +rest ] , [ +x , BigDecimal ( +1 ) , 2 ] )
128+ assert_vpdivd_equal ( [ BigDecimal ( '-1234.2468' ) , +rest ] , [ +x , BigDecimal ( -1 ) , 2 ] )
129+ assert_vpdivd_equal ( [ BigDecimal ( '-1234.2468' ) , -rest ] , [ -x , BigDecimal ( +1 ) , 2 ] )
130+ assert_vpdivd_equal ( [ BigDecimal ( '+1234.2468' ) , -rest ] , [ -x , BigDecimal ( -1 ) , 2 ] )
130131 end
131132
132133 def test_vpdivd_precisions
@@ -169,9 +170,17 @@ def test_vpdivd_large_prec_divisor
169170 end
170171
171172 def test_vpdivd_intermediate_zero
172- x = BigDecimal ( '123456789.246913578000000000123456789' )
173- y = BigDecimal ( '123456789' )
174- assert_vpdivd_equal ( [ BigDecimal ( '1.000000002000000000000000001' ) , BigDecimal ( 0 ) ] , [ x , y , 4 ] )
175- assert_vpdivd_equal ( [ BigDecimal ( '1.000000000049999999' ) , BigDecimal ( '1e-18' ) ] , [ BigDecimal ( "2.000000000099999999" ) , 2 , 3 ] )
173+ case BASE_FIG
174+ when 9
175+ x = BigDecimal ( '123456789.246913578000000000123456789' )
176+ y = BigDecimal ( '123456789' )
177+ assert_vpdivd_equal ( [ BigDecimal ( '1.000000002000000000000000001' ) , BigDecimal ( 0 ) ] , [ x , y , 4 ] )
178+ assert_vpdivd_equal ( [ BigDecimal ( '1.000000000049999999' ) , BigDecimal ( '1e-18' ) ] , [ BigDecimal ( "2.000000000099999999" ) , 2 , 3 ] )
179+ when 18
180+ x = BigDecimal ( '123456789.246913578000000000000000000000000000123456789' )
181+ y = BigDecimal ( '123456789' )
182+ assert_vpdivd_equal ( [ BigDecimal ( '1.000000002000000000000000000000000000000000001' ) , BigDecimal ( 0 ) ] , [ x , y , 4 ] )
183+ assert_vpdivd_equal ( [ BigDecimal ( '1.000000000000000000049999999999999999' ) , BigDecimal ( '1e-36' ) ] , [ BigDecimal ( "2.000000000000000000099999999999999999" ) , 2 , 3 ] )
184+ end
176185 end
177186end
0 commit comments