File tree 2 files changed +15
-1
lines changed
test/clojure/test_clojure
2 files changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -530,6 +530,10 @@ static long gcd(long u, long v){
530
530
public Number divide (Number x , Number y ){
531
531
long n = x .longValue ();
532
532
long val = y .longValue ();
533
+
534
+ if (n == Long .MIN_VALUE || val == Long .MIN_VALUE )
535
+ return BIGINT_OPS .divide (x , y );
536
+
533
537
long gcd = gcd (n , val );
534
538
if (gcd == 0 )
535
539
return num (0 );
Original file line number Diff line number Diff line change @@ -598,7 +598,17 @@ Math/pow overflows to Infinity."
598
598
(is (== (denominator 1/2 ) 2 ))
599
599
(is (== (numerator 1/2 ) 1 ))
600
600
(is (= (bigint (/ 100000000000000000000 3 )) 33333333333333333333 ))
601
- (is (= (long 10000000000000000000/3 ) 3333333333333333333 )))
601
+ (is (= (long 10000000000000000000/3 ) 3333333333333333333 ))
602
+
603
+ ; ; special cases around Long/MIN_VALUE
604
+ (is (= (/ 1 Long/MIN_VALUE) -1/9223372036854775808 ))
605
+ (is (true ? (< (/ 1 Long/MIN_VALUE) 0 )))
606
+ (is (true ? (< (* 1 (/ 1 Long/MIN_VALUE)) 0 )))
607
+ (is (= (abs (/ 1 Long/MIN_VALUE)) 1/9223372036854775808 ))
608
+ (is (false ? (< (abs (/ 1 Long/MIN_VALUE)) 0 )))
609
+ (is (false ? (< (* 1 (abs (/ 1 Long/MIN_VALUE))) 0 )))
610
+ (is (= (/ Long/MIN_VALUE -3 ) 9223372036854775808/3 ))
611
+ (is (false ? (< (/ Long/MIN_VALUE -3 ) 0 ))))
602
612
603
613
(deftest test-arbitrary-precision-subtract
604
614
(are [x y] (= x y)
You can’t perform that action at this time.
0 commit comments