@@ -386,6 +386,34 @@ assert Number.isInfinite(1/2) == false
386386assert Number.isInfinite(-1/2) == false
387387assert Number.isInfinite(BI.toNumber(-1t)) == false
388388
389+ // Number.isClose
390+ assert Number.isClose(1.0, 1.0)
391+ assert Number.isClose(1.0, 1.0, relativeTolerance=0.5, absoluteTolerance=0.5)
392+ assert Number.isClose(1.0, 1.0, relativeTolerance=0, absoluteTolerance=0)
393+ assert Number.isClose(0.0, 0.0)
394+ assert Number.isClose(0.0, 0.0, relativeTolerance=0.5, absoluteTolerance=0.5)
395+ assert Number.isClose(0.0, 0.0, relativeTolerance=0, absoluteTolerance=0)
396+ assert Number.isClose(1, 1)
397+ assert Number.isClose(1, 1, relativeTolerance=0.5, absoluteTolerance=0.5)
398+ assert Number.isClose(1, 1, relativeTolerance=0, absoluteTolerance=0)
399+ assert Number.isClose(1/2, 1/2)
400+ assert Number.isClose(1/2, 1/2, relativeTolerance=0.5, absoluteTolerance=0.5)
401+ assert Number.isClose(1/2, 1/2, relativeTolerance=0, absoluteTolerance=0)
402+ assert Number.isClose(0, 0.1) == false
403+ assert Number.isClose(0, 0.000000001) == false
404+ assert Number.isClose(0, 0.00000001, absoluteTolerance=1e-9) == false
405+ assert Number.isClose(0, 0.000000001, absoluteTolerance=1e-9)
406+ assert Number.isClose(-0, 0.000000001) == false
407+ assert Number.isClose(-0, 0.00000001, absoluteTolerance=1e-9) == false
408+ assert Number.isClose(-0, 0.000000001, absoluteTolerance=1e-9)
409+ assert Number.isClose(1.1, 1.10000001, absoluteTolerance=1e-9) == false
410+ assert Number.isClose(1.1, 1.100000001, absoluteTolerance=1e-9)
411+ assert Number.isClose(Infinity, Infinity)
412+ assert Number.isClose(-Infinity, -Infinity)
413+ assert Number.isClose(Infinity, -Infinity) == false
414+ assert Number.isClose(NaN, NaN) == false
415+ assert Number.isClose(Infinity, 99999999999999999) == false
416+
389417// parseFloat
390418// tests taken from Go's /src/strconv/atof_test.go
391419assert Number.parseFloat("") == Err("Invalid string")
@@ -658,6 +686,163 @@ assert Number.isNaN(Number.tan(9223372036854775809))
658686assert Number.isNaN(Number.tan(Infinity))
659687assert Number.isNaN(Number.tan(NaN))
660688
689+ // Number.asin
690+ assert Number.isNaN(Number.asin(-8.06684839057968084))
691+ assert Number.isNaN(Number.asin(-1.1))
692+ assert Number.isNaN(Number.asin(4.06684839057968084))
693+ assert Number.isNaN(Number.asin(1.1))
694+ assert Number.isNaN(Number.asin(15/10))
695+ assert Number.isNaN(Number.asin(-15/10))
696+ assert Number.isClose(
697+ Number.asin(0.661985898099504477),
698+ 0.723465243951545878,
699+ relativeTolerance=1e-9
700+ )
701+ assert Number.isClose(
702+ Number.asin(0.56175974622072411),
703+ 0.596511362227406194,
704+ relativeTolerance=1e-9
705+ )
706+ assert Number.isClose(
707+ Number.asin(-0.40660392238535531),
708+ -0.418733744293772248,
709+ relativeTolerance=1e-9
710+ )
711+ assert Number.isClose(Number.asin(1/2), Number.pi / 6, relativeTolerance=1e-9)
712+ assert Number.isClose(
713+ Number.asin(0.77415229659130369),
714+ 0.885374810931274348,
715+ relativeTolerance=1e-9
716+ )
717+ assert Number.isClose(
718+ Number.asin(-0.678763702639402444),
719+ -0.746077811411067326,
720+ relativeTolerance=1e-9
721+ )
722+ assert Number.isClose(
723+ Number.asin(1.0),
724+ 1.57079632679489656,
725+ relativeTolerance=1e-9
726+ )
727+ assert Number.isClose(
728+ Number.asin(1),
729+ 1.57079632679489656,
730+ relativeTolerance=1e-9
731+ )
732+ assert Number.isClose(
733+ Number.asin(-1.0),
734+ -1.57079632679489656,
735+ relativeTolerance=1e-9
736+ )
737+ assert Number.isClose(
738+ Number.asin(-1),
739+ -1.57079632679489656,
740+ relativeTolerance=1e-9
741+ )
742+ assert Number.asin(0) == 0.0
743+ assert Number.asin(0.0) == 0.0
744+ assert Number.asin(-0.0) == -0.0
745+ assert Number.isNaN(Number.asin(1.00000000000000022))
746+ assert Number.isNaN(Number.asin(-1.00000000000000022))
747+ assert Number.isNaN(Number.asin(Infinity))
748+ assert Number.isNaN(Number.asin(-Infinity))
749+ assert Number.isNaN(Number.asin(NaN))
750+
751+ // Number.acos
752+ assert Number.isNaN(Number.acos(-8.06684839057968084))
753+ assert Number.isNaN(Number.acos(-1.1))
754+ assert Number.isNaN(Number.acos(4.06684839057968084))
755+ assert Number.isNaN(Number.acos(1.1))
756+ assert Number.isNaN(Number.acos(15/10))
757+ assert Number.isNaN(Number.acos(-15/10))
758+ assert Number.isClose(
759+ Number.acos(0.661985898099504477),
760+ 0.84733108284335068,
761+ relativeTolerance=1e-9
762+ )
763+ assert Number.isClose(
764+ Number.acos(0.56175974622072411),
765+ 0.974284964567490364,
766+ relativeTolerance=1e-9
767+ )
768+ assert Number.isClose(
769+ Number.acos(-0.40660392238535531),
770+ 1.98953007108866897,
771+ relativeTolerance=1e-9
772+ )
773+ assert Number.isClose(Number.acos(1/2), Number.pi / 3, relativeTolerance=1e-9)
774+ assert Number.isClose(
775+ Number.acos(0.77415229659130369),
776+ 0.68542151586362221,
777+ relativeTolerance=1e-9
778+ )
779+ assert Number.isClose(
780+ Number.acos(-0.678763702639402444),
781+ 2.31687413820596388,
782+ relativeTolerance=1e-9
783+ )
784+ assert Number.isClose(Number.acos(-1.0), Number.pi, relativeTolerance=1e-9)
785+ assert Number.isClose(Number.acos(-1), Number.pi, relativeTolerance=1e-9)
786+ assert Number.isClose(Number.acos(0.0), Number.pi / 2, relativeTolerance=1e-9)
787+ assert Number.isClose(Number.acos(0), Number.pi / 2, relativeTolerance=1e-9)
788+ assert Number.acos(1) == 0.0
789+ assert Number.acos(1.0) == 0.0
790+ assert Number.isNaN(Number.acos(1.00000000000000022))
791+ assert Number.isNaN(Number.acos(-1.00000000000000022))
792+ assert Number.isNaN(Number.acos(Infinity))
793+ assert Number.isNaN(Number.acos(-Infinity))
794+ assert Number.isNaN(Number.acos(NaN))
795+
796+ // Number.atan
797+ assert Number.isClose(
798+ Number.atan(0.661985898099504477),
799+ 0.584755067023832509,
800+ relativeTolerance=1e-9
801+ )
802+ assert Number.isClose(
803+ Number.atan(0.56175974622072411),
804+ 0.511826953162888065,
805+ relativeTolerance=1e-9
806+ )
807+ assert Number.isClose(
808+ Number.atan(-0.40660392238535531),
809+ -0.386186417755213118,
810+ relativeTolerance=1e-9
811+ )
812+ assert Number.isClose(
813+ Number.atan(1/2),
814+ 0.4636476090008061,
815+ relativeTolerance=1e-9
816+ )
817+ assert Number.isClose(
818+ Number.atan(0.77415229659130369),
819+ 0.658780243165382196,
820+ relativeTolerance=1e-9
821+ )
822+ assert Number.isClose(
823+ Number.atan(-0.678763702639402444),
824+ -0.596330782697347184,
825+ relativeTolerance=1e-9
826+ )
827+ assert Number.isClose(Number.atan(1.0), Number.pi / 4, relativeTolerance=1e-9)
828+ assert Number.isClose(Number.atan(1), Number.pi / 4, relativeTolerance=1e-9)
829+ assert Number.isClose(Number.atan(-1.0), Number.pi / -4, relativeTolerance=1e-9)
830+ assert Number.isClose(Number.atan(-1), Number.pi / -4, relativeTolerance=1e-9)
831+ assert Number.atan(0) == 0.0
832+ assert Number.atan(0.0) == 0.0
833+ assert Number.atan(-0.0) == -0.0
834+ assert Number.isClose(
835+ Number.atan(Infinity),
836+ Number.pi / 2,
837+ relativeTolerance=1e-9
838+ )
839+ assert Number.isClose(
840+ Number.atan(-Infinity),
841+ Number.pi / -2,
842+ relativeTolerance=1e-9
843+ )
844+ assert Number.isNaN(Number.atan(NaN))
845+
661846// Number.gamma
662847// Note: Currently gamma will overflow the memory when using a bigint as such there are no tests for this
663848assert Number.gamma(10.5) < 1133278.3889488 &&
0 commit comments