#QUALITY by exept
class: RegressionTests::QDoubleTests
added: #test_02b_addition
changed: #test_04_relops
--- a/RegressionTests__QDoubleTests.st Sun Dec 01 05:28:52 2019 +0100
+++ b/RegressionTests__QDoubleTests.st Sun Dec 01 05:29:01 2019 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"{ Package: 'stx:goodies/regression' }"
"{ NameSpace: RegressionTests }"
@@ -164,6 +162,28 @@
"Modified: / 05-06-2019 / 20:15:38 / Claus Gittinger"
!
+test_02b_addition
+ |q1 q2 sum_q|
+
+ q1 := 1.0e20 asQDouble.
+ q2 := 1.0e-16 asQDouble.
+ sum_q := q1 + q2.
+ self assert:( sum_q - q1 = q2 ).
+ self assert:( sum_q - q2 = q1 ).
+
+ sum_q := sum_q + 1e-30.
+ self assert:( sum_q - q1 -q2 = 1e-30 ).
+
+ sum_q := sum_q + 1e10.
+ self assert:( sum_q - q1 - q2 - 1e10 = 1e-30 ).
+ self assert:( sum_q - q1 - q2 - 1e-30 = 1e10 ).
+
+ "
+ self run:#test_02b_addition
+ self new test_02b_addition
+ "
+!
+
test_03_subtract
|d1 d2 l1 l2 diff_l q1 q2 diff_d diff_q|
@@ -327,7 +347,28 @@
self assert: (1.0 < (1.0 asQDouble + 1e-80)).
self assert: (1.0 < (1.0 asQDouble + 1e-120)).
self assert: (1.0 < (1.0 asQDouble + 1e-300)).
+ self assert: (1.0 < (1.0 asQDouble + 1e-308)).
+
+ self assert: (1.0 asQDouble < (1.0 asQDouble + 1e-40) ).
+ self assert: ((1.0 asQDouble + 1e-40) > 1.0 asQDouble ).
+ self assert: ((1.0 asQDouble + 1e-80) > 1.0 asQDouble ).
+ self assert: ((1.0 asQDouble + 1e-120) > 1.0 asQDouble ).
+ self assert: ((1.0 asQDouble + 1e-300) > 1.0 asQDouble ).
+ self assert: ((1.0 asQDouble + 1e-308) > 1.0 asQDouble ).
+
+ self assert: ((1.0 asQDouble + 1e-40) > 1.0).
+ self assert: (1.0 < (1.0 asQDouble + 1e-40)).
+ self assert: (1.0 < (1.0 asQDouble + 1e-80)).
+ self assert: (1.0 < (1.0 asQDouble + 1e-120)).
self assert: (1.0 < (1.0 asQDouble + 1e-300)).
+ self assert: (1.0 < (1.0 asQDouble + 1e-300)).
+
+ self assert: (1.0 < (1.0 asQDouble + 1e-40) ).
+ self assert: ((1.0 asQDouble + 1e-40) > 1.0 ).
+ self assert: ((1.0 asQDouble + 1e-80) > 1.0 ).
+ self assert: ((1.0 asQDouble + 1e-120) > 1.0 ).
+ self assert: ((1.0 asQDouble + 1e-300) > 1.0 ).
+ self assert: ((1.0 asQDouble + 1e-308) > 1.0 ).
self assert: (1e10 asQDouble + 1.0) = 10000000001.0.
"/ that's the problem with Floats...
@@ -491,7 +532,7 @@
"/ self assert:(q1 d0 - f1) abs < 0.00000001.
"/ the first digits are (wolfram):
- "/ 2.688117141816135448412625551580013587361111877374192241519160861528028703490956491415887109721984571081167087... × 10^43
+ "/ 2.688117141816135448412625551580013587361111877374192241519160861528028703490956491415887109721984571081167087... × 10^43
"/ 100 exp
"/ 2.688117141816135448E+43
"/ 100QD exp
@@ -886,3 +927,4 @@
version_CVS
^ '$Header$'
! !
+