@@ -3,11 +3,9 @@ module Test.Main where
33import Prelude
44
55import Data.Maybe (Maybe (..), fromMaybe )
6- import Data.Number ((%), abs , acos , asin , atan , atan2 , ceil , cos , exp , floor ,
7- fromString , infinity , isFinite , isNaN , ln10 , ln2 , log10e , log2e , nan , pi , pow ,
8- round , sign , sin , sqrt , sqrt1_2 , sqrt2 , tan , tau , trunc )
6+ import Data.Number ((%), abs , acos , asin , atan , atan2 , ceil , cos , exp , floor , fromString , infinity , isFinite , isNaN , ln10 , ln2 , log10e , log2e , nan , pi , pow , round , sign , sin , sqrt , sqrt1_2 , sqrt2 , tan , tau , trunc )
97import Data.Number (log ) as Num
10- import Data.Number.Approximate (Fraction (..), Tolerance (..), eqRelative , eqAbsolute , (≅), (≇))
8+ import Data.Number.Approximate (Fraction (..), Tolerance (..), eqAbsolute , eqRelative , (≅), (≇))
119import Data.Number.Format (precision , fixed , exponential , toStringWith , toString )
1210import Effect (Effect )
1311import Effect.Console (log )
@@ -291,102 +289,103 @@ numbersTestCode = do
291289
292290numericsTestCode :: Effect Unit
293291numericsTestCode = do
292+ let assertApproxEqual = \x y -> assert (eqAbsolute (Tolerance 1e-12 ) x y)
294293 let pi_4 = pi / 4.0
295294 let pi_2 = pi / 2.0
296295 let neg_pi = -pi
297296
298297 log " Data.Number.sin"
299298 log " sin 0.0 = 0.0"
300- sin 0.0 `assertNearlyEqual ` 0.0
299+ sin 0.0 `assertApproxEqual ` 0.0
301300
302301 log " sin (pi / 4.0) = sqrt1_2"
303- sin pi_4 `assertNearlyEqual ` sqrt1_2
302+ sin pi_4 `assertApproxEqual ` sqrt1_2
304303
305304 log " sin (pi / 2.0) = 1.0"
306- sin pi_2 `assertNearlyEqual ` 1.0
305+ sin pi_2 `assertApproxEqual ` 1.0
307306
308307 log " sin pi = 0.0"
309- sin pi `assertNearlyEqual ` 0.0
308+ sin pi `assertApproxEqual ` 0.0
310309
311310 log " sin tau = 0.0"
312- sin tau `assertNearlyEqual ` 0.0
311+ sin tau `assertApproxEqual ` 0.0
313312
314313 log " Data.Number.cos"
315314 log " cos 0.0 = 1.0"
316- cos 0.0 `assertNearlyEqual ` 1.0
315+ cos 0.0 `assertApproxEqual ` 1.0
317316
318317 log " cos (pi / 4.0) = sqrt1_2"
319- cos pi_4 `assertNearlyEqual ` sqrt1_2
318+ cos pi_4 `assertApproxEqual ` sqrt1_2
320319
321320 log " cos (pi / 2.0) = 0.0"
322- cos pi_2 `assertNearlyEqual ` 0.0
321+ cos pi_2 `assertApproxEqual ` 0.0
323322
324323 log " cos pi = -1.0"
325- cos pi `assertNearlyEqual ` -1.0
324+ cos pi `assertApproxEqual ` -1.0
326325
327326 log " cos tau = 1.0"
328- cos tau `assertNearlyEqual ` 1.0
327+ cos tau `assertApproxEqual ` 1.0
329328
330329 log " Data.Number.tan"
331330 log " tan 0.0 = 0.0"
332- tan 0.0 `assertNearlyEqual ` 0.0
331+ tan 0.0 `assertApproxEqual ` 0.0
333332
334333 log " tan (pi / 4.0) = 1.0"
335- tan pi_4 `assertNearlyEqual ` 1.0
334+ tan pi_4 `assertApproxEqual ` 1.0
336335
337336 log " tan pi = 0.0"
338- tan pi `assertNearlyEqual ` 0.0
337+ tan pi `assertApproxEqual ` 0.0
339338
340339 log " tan tau = 0.0"
341- tan tau `assertNearlyEqual ` 0.0
340+ tan tau `assertApproxEqual ` 0.0
342341
343342 log " Data.Number.asin"
344343 log " asin (sin 0.0) = 0.0"
345- asin (sin 0.0 ) `assertNearlyEqual ` 0.0
344+ asin (sin 0.0 ) `assertApproxEqual ` 0.0
346345
347346 log " asin (sin pi / 4.0) = pi / 4.0"
348- asin (sin pi_4) `assertNearlyEqual ` pi_4
347+ asin (sin pi_4) `assertApproxEqual ` pi_4
349348
350349 log " asin (sin pi / 2.0) = pi / 2.0"
351- asin (sin pi_2) `assertNearlyEqual ` pi_2
350+ asin (sin pi_2) `assertApproxEqual ` pi_2
352351
353352 log " Data.Number.acos"
354353 log " acos (cos 0.0) = 0.0"
355- acos (cos 0.0 ) `assertNearlyEqual ` 0.0
354+ acos (cos 0.0 ) `assertApproxEqual ` 0.0
356355
357356 log " acos (cos pi / 4.0) = pi / 4.0"
358- acos (cos pi_4) `assertNearlyEqual ` pi_4
357+ acos (cos pi_4) `assertApproxEqual ` pi_4
359358
360359 log " acos (cos pi / 2.0) = pi / 2.0"
361- acos (cos pi_2) `assertNearlyEqual ` pi_2
360+ acos (cos pi_2) `assertApproxEqual ` pi_2
362361
363362 log " Data.Number.atan"
364363 log " atan (tan 0.0) = 0.0"
365- atan (tan 0.0 ) `assertNearlyEqual ` 0.0
364+ atan (tan 0.0 ) `assertApproxEqual ` 0.0
366365
367366 log " atan (tan pi / 4.0) = pi / 4.0"
368- atan (tan pi_4) `assertNearlyEqual ` pi_4
367+ atan (tan pi_4) `assertApproxEqual ` pi_4
369368
370369 log " atan (tan pi / 2.0) = pi / 2.0"
371- atan (tan pi_2) `assertNearlyEqual ` pi_2
370+ atan (tan pi_2) `assertApproxEqual ` pi_2
372371
373372 log " Data.Number.atan2"
374373 log " atan2 1.0 2.0 = atan (1.0 / 2.0)"
375- atan2 1.0 2.0 `assertNearlyEqual ` atan (1.0 / 2.0 )
374+ atan2 1.0 2.0 `assertApproxEqual ` atan (1.0 / 2.0 )
376375
377376 log " Data.Number.log"
378377 log " log 2.0 = ln2"
379- Num .log 2.0 `assertNearlyEqual ` ln2
378+ Num .log 2.0 `assertApproxEqual ` ln2
380379
381380 log " log 10.0 = ln10"
382- Num .log 10.0 `assertNearlyEqual ` ln10
381+ Num .log 10.0 `assertApproxEqual ` ln10
383382
384383 log " Data.Number.exp"
385384 log " exp ln2 = 2.0"
386- exp ln2 `assertNearlyEqual ` 2.0
385+ exp ln2 `assertApproxEqual ` 2.0
387386
388387 log " exp ln10 = 10.0"
389- exp ln10 `assertNearlyEqual ` 10.0
388+ exp ln10 `assertApproxEqual ` 10.0
390389
391390 log " Data.Number.abs"
392391 log " abs pi = pi"
@@ -404,14 +403,14 @@ numericsTestCode = do
404403
405404 log " Data.Number.sqrt"
406405 log " sqrt 2.0 = sqrt2"
407- sqrt 2.0 `assertNearlyEqual ` sqrt2
406+ sqrt 2.0 `assertApproxEqual ` sqrt2
408407
409408 log " sqrt (1.0 / 2.0) = sqrt1_2"
410- sqrt (1.0 / 2.0 ) `assertNearlyEqual ` sqrt1_2
409+ sqrt (1.0 / 2.0 ) `assertApproxEqual ` sqrt1_2
411410
412411 log " Data.Number.pow"
413412 log " 2.0 `pow` (1.0 / 2.0) = sqrt2"
414- (2.0 `pow` (1.0 / 2.0)) `assertNearlyEqual ` sqrt2
413+ (2.0 `pow` (1.0 / 2.0)) `assertApproxEqual ` sqrt2
415414
416415 log " Data.Number.min"
417416 log " min 0.0 1.0 = 0.0"
@@ -479,10 +478,7 @@ numericsTestCode = do
479478
480479 log " Data.Number constants"
481480 log " log10e = 1.0 / ln10"
482- log10e `assertNearlyEqual ` (1.0 / ln10)
481+ log10e `assertApproxEqual ` (1.0 / ln10)
483482
484483 log " log2e = 1.0 / ln2"
485- log2e `assertNearlyEqual` (1.0 / ln2)
486-
487- assertNearlyEqual :: Number -> Number -> Effect Unit
488- assertNearlyEqual x y = assert ((abs (x - y)) < 1e-12 )
484+ log2e `assertApproxEqual` (1.0 / ln2)
0 commit comments