@@ -400,15 +400,15 @@ fn test_covariance() {
400400 mut data0 := [10.0 , 4.45 , 5.9 , 2.7 ]
401401 mut data1 := [5.0 , 14.45 , - 15.9 , 22.7 ]
402402 mut o := stats.covariance (data0 , data1 )
403- assert math.alike (o, - 17.37078207731247 )
403+ assert math.alike (o, - 17.37078125 )
404404 data0 = [- 3.0 , 67.31 , 4.4 , 1.89 ]
405405 data1 = [5.0 , 77.31 , 44.4 , 11.89 ]
406406 o = stats.covariance (data0 , data1 )
407- assert math.alike (o, 740.0695419311523 )
407+ assert math.alike (o, 740.06955 )
408408 data0 = [12.0 , 7.88 , 76.122 , 54.83 ]
409409 data1 = [2.0 , 5.88 , 7.122 , 5.83 ]
410410 o = stats.covariance (data0 , data1 )
411- assert math.alike (o, 36.65028190612793 )
411+ assert math.alike (o, 36.650282000000004 )
412412
413413 // test for int, i64, f32 array
414414 data0_int := [1 , 2 , 3 , 1 ]
@@ -428,13 +428,15 @@ fn test_covariance() {
428428fn test_lag1_autocorrelation () {
429429 mut data := [10.0 , 4.45 , 5.9 , 2.7 ]
430430 mut o := stats.lag1_autocorrelation (data)
431- assert math.alike (o, - 0.554228566606572 )
431+ mut e := 0.0
432+ assert math.alike (o, - 0.5542285481446095 )
432433 data = [- 3.0 , 67.31 , 4.4 , 1.89 ]
433434 o = stats.lag1_autocorrelation (data)
434- assert math.alike (o, - 0.5102510823460722 )
435+ assert math.alike (o, - 0.5102510654033415 )
435436 data = [12.0 , 7.88 , 76.122 , 54.83 ]
436437 o = stats.lag1_autocorrelation (data)
437- assert math.alike (o, 0.10484451825170164 )
438+ e = 0.10484450460892072
439+ assert math.alike (o, e), diff (o, e)
438440
439441 // test for int, i64, f32 array
440442 assert stats.lag1_ autocorrelation[int ]([1 , 2 , 3 , 1 ]) == 0
@@ -443,54 +445,65 @@ fn test_lag1_autocorrelation() {
443445 assert math.alike (o, 0.1975308507680893 )
444446}
445447
448+ fn diff (actual f64 , expected f64 ) string {
449+ return '\n actual:${actual :40.35 f }\n expected:${expected :40.35 f }\n diff:${actual - expected :40.35 f }'
450+ }
451+
446452fn test_kurtosis () {
447453 mut data := [10.0 , 4.45 , 5.9 , 2.7 ]
448454 mut o := stats.kurtosis (data)
449- assert math.alike (o, - 1.0443214689384779 )
455+ mut e := - 1.0443212849233845
456+ assert math.close (o, e), diff (o, e)
450457 data = [- 3.0 , 67.31 , 4.4 , 1.89 ]
451458 o = stats.kurtosis (data)
452- assert math.alike (o, - 0.688495594786176 )
459+ e = - 0.6884953374814851
460+ assert math.close (o, e), diff (o, e)
453461 data = [12.0 , 7.88 , 76.122 , 54.83 ]
454462 o = stats.kurtosis (data)
455- assert math.alike (o, - 1.7323772574195067 )
463+ assert math.alike (o, - 1.7323772836921467 )
456464
457465 // test for int, i64, f32 array
458466 assert stats.kurtosis[int ]([1 , 2 , 3 , 1 ]) == 1
459467 assert stats.kurtosis[i64 ]([i64 (1 ), 2 , 3 , 1 ]) == 1
460468 o = stats.kurtosis[f32 ]([f32 (1.0 ), 3 , 5 , 7 , 3 ])
461- assert math.alike (o, - 1.0443782806396484 )
469+ e = - 1.044378399848938
470+ assert math.alike (o, e), diff (o, e)
462471}
463472
464473fn test_skew () {
465474 mut data := [10.0 , 4.45 , 5.9 , 2.7 ]
466475 mut o := stats.skew (data)
467- assert math.alike (o, 0.5754020379048158 )
476+ mut e := 0.5754021106320453
477+ assert math.veryclose (o, e), diff (o, e)
468478 data = [- 3.0 , 67.31 , 4.4 , 1.89 ]
469479 o = stats.skew (data)
470- assert math.alike (o, 1.1248732608899568 )
480+ e = 1.1248733711136492
481+ assert math.veryclose (o, e), diff (o, e)
471482 data = [12.0 , 7.88 , 76.122 , 54.83 ]
472483 o = stats.skew (data)
473- assert math.alike (o, 0.19007917421924964 )
484+ e = 0.19007911706827735
485+ assert math.alike (o, e), diff (o, e)
474486
475487 // test for int, i64, f32 array
476488 assert stats.skew[int ]([1 , 2 , 3 , 1 ]) == 2
477489 assert stats.skew[i64 ]([i64 (1 ), 2 , 3 , 1 ]) == 2
478490 o = stats.skew[f32 ]([f32 (1.0 ), 3 , 5 , 7 , 3 ])
479- assert math.alike (o, 0.2715454697608948 )
491+ e = 0.27154541015625
492+ assert math.alike (o, e), diff (o, e)
480493}
481494
482495fn test_quantile () {
483496 // Assumes sorted array
484497
485498 mut data := [2.7 , 4.45 , 5.9 , 10.0 ]
486499 mut o := stats.quantile (data, 0.1 )!
487- assert math.alike (o, 3.225000020861626 )
500+ assert math.alike (o, 3.225 )
488501 data = [- 3.0 , 1.89 , 4.4 , 67.31 ]
489502 o = stats.quantile (data, 0.2 )!
490- assert math.alike (o, - 0.06599988341331486 )
503+ assert math.alike (o, - 0.06599999999999961 )
491504 data = [7.88 , 12.0 , 54.83 , 76.122 ]
492505 o = stats.quantile (data, 0.3 )!
493- assert math.alike (o, 11.587999901771546 )
506+ assert math.alike (o, 11.588 )
494507
495508 stats.quantile (data, - 0.3 ) or { assert err.msg () == 'index out of range' }
496509
0 commit comments