File tree 2 files changed +75
-0
lines changed
test/clojure/test_clojure
2 files changed +75
-0
lines changed Original file line number Diff line number Diff line change @@ -153,6 +153,11 @@ static public Number multiplyP(Object x, Object y){
153
153
}
154
154
155
155
static public Number divide (Object x , Object y ){
156
+ if (isNaN (x )){
157
+ return (Number )x ;
158
+ } else if (isNaN (y )){
159
+ return (Number )y ;
160
+ }
156
161
Ops yops = ops (y );
157
162
if (yops .isZero ((Number )y ))
158
163
throw new ArithmeticException ("Divide by zero" );
Original file line number Diff line number Diff line change @@ -809,3 +809,73 @@ Math/pow overflows to Infinity."
809
809
(<= 1000 Double/NaN) (<= 1000 (Double. Double/NaN))
810
810
(> 1000 Double/NaN) (> 1000 (Double. Double/NaN))
811
811
(>= 1000 Double/NaN) (>= 1000 (Double. Double/NaN))))
812
+
813
+ (deftest test-nan-as-operand
814
+ (testing " All numeric operations with NaN as an operand produce NaN as a result"
815
+ (let [nan Double/NaN
816
+ onan (cast Object Double/NaN)]
817
+ (are [x] (Double/isNaN x)
818
+ (+ nan 1 )
819
+ (+ nan 0 )
820
+ (+ nan 0.0 )
821
+ (+ 1 nan)
822
+ (+ 0 nan)
823
+ (+ 0.0 nan)
824
+ (+ nan nan)
825
+ (- nan 1 )
826
+ (- nan 0 )
827
+ (- nan 0.0 )
828
+ (- 1 nan)
829
+ (- 0 nan)
830
+ (- 0.0 nan)
831
+ (- nan nan)
832
+ (* nan 1 )
833
+ (* nan 0 )
834
+ (* nan 0.0 )
835
+ (* 1 nan)
836
+ (* 0 nan)
837
+ (* 0.0 nan)
838
+ (* nan nan)
839
+ (/ nan 1 )
840
+ (/ nan 0 )
841
+ (/ nan 0.0 )
842
+ (/ 1 nan)
843
+ (/ 0 nan)
844
+ (/ 0.0 nan)
845
+ (/ nan nan)
846
+ (+ onan 1 )
847
+ (+ onan 0 )
848
+ (+ onan 0.0 )
849
+ (+ 1 onan)
850
+ (+ 0 onan)
851
+ (+ 0.0 onan)
852
+ (+ onan onan)
853
+ (- onan 1 )
854
+ (- onan 0 )
855
+ (- onan 0.0 )
856
+ (- 1 onan)
857
+ (- 0 onan)
858
+ (- 0.0 onan)
859
+ (- onan onan)
860
+ (* onan 1 )
861
+ (* onan 0 )
862
+ (* onan 0.0 )
863
+ (* 1 onan)
864
+ (* 0 onan)
865
+ (* 0.0 onan)
866
+ (* onan onan)
867
+ (/ onan 1 )
868
+ (/ onan 0 )
869
+ (/ onan 0.0 )
870
+ (/ 1 onan)
871
+ (/ 0 onan)
872
+ (/ 0.0 onan)
873
+ (/ onan onan)
874
+ (+ nan onan)
875
+ (+ onan nan)
876
+ (- nan onan)
877
+ (- onan nan)
878
+ (* nan onan)
879
+ (* onan nan)
880
+ (/ nan onan)
881
+ (/ onan nan) ))))
You can’t perform that action at this time.
0 commit comments