Scientific Calculator Validation Report

Automated validation of the CalcDomain expression engine. Every test vector is run at build time — the counts below reflect actual test results, not hardcoded numbers.

Report generated: 2026-07-30 · Engine version: 1.0.0

169/169
test vectors passed
1.0.0
engine version
ALL PASS
No failures detected

Precision model

All computations use IEEE 754 double precision (64-bit floating point) — the native JavaScript number type. No arbitrary-precision or symbolic arithmetic is claimed or performed.

Exact-value scope

The engine detects and reports exact values for: integers up to 10¹⁵, simple rationals with denominator ≤ 30, perfect square roots (√k for integer k), and perfect cube roots (∛k for integer k). Results outside this scope are shown in rounded decimal or scientific notation only.

Known limitations

What this engine does not do

Test vector categories

The 169 test vectors cover: arithmetic basics, operator precedence and associativity, unary minus and exponentiation corner cases, implicit multiplication, trigonometry (DEG and RAD), trigonometric singularities, inverse trigonometry, hyperbolic functions, logarithms, roots and exponentials, absolute value/floor/ceil/round, factorials, combinations (nCr), permutations (nPr), constants (π, e), division by zero, scientific notation inputs, nested parentheses, the Ans variable, syntax errors, and number formatting edge cases.

Test vectors (169 total)

Expression Mode Expected Actual Result
2+3 DEG 5 5 ✓ pass
10-4 DEG 6 6 ✓ pass
3*4 DEG 12 12 ✓ pass
10/4 DEG 2.5 2.5 ✓ pass
2^10 DEG 1024 1024 ✓ pass
7mod3 DEG 1 1 ✓ pass
50% DEG 0.5 0.5 ✓ pass
100% DEG 1 1 ✓ pass
0+0 DEG 0 0 ✓ pass
1000000*1000000 DEG 1000000000000 1000000000000 ✓ pass
2+3*4 DEG 14 14 ✓ pass
(2+3)*4 DEG 20 20 ✓ pass
2*3+4*5 DEG 26 26 ✓ pass
2^3^2 DEG 512 512 ✓ pass
(2^3)^2 DEG 64 64 ✓ pass
2^2^3 DEG 256 256 ✓ pass
-2^2 DEG -4 -4 ✓ pass
(-2)^2 DEG 4 4 ✓ pass
2^-2 DEG 0.25 0.25 ✓ pass
-2^-2 DEG -0.25 -0.25 ✓ pass
(-2)^-2 DEG 0.25 0.25 ✓ pass
-3^0 DEG -1 -1 ✓ pass
(-1)^3 DEG -1 -1 ✓ pass
(-1)^4 DEG 1 1 ✓ pass
+5 DEG 5 5 ✓ pass
-0 DEG 0 0 ✓ pass
DEG 6.283185307179586 6.283185307179586 ✓ pass
2e DEG 5.43656365691809 5.43656365691809 ✓ pass
2(3+4) DEG 14 14 ✓ pass
(2+3)(4+5) DEG 45 45 ✓ pass
3sin(30) DEG 1.5 1.4999999999999998 ✓ pass
2sqrt(9) DEG 6 6 ✓ pass
4abs(-3) DEG 12 12 ✓ pass
2(1+1)(1+1) DEG 8 8 ✓ pass
sin(0) DEG 0 0 ✓ pass
sin(30) DEG 0.5 0.49999999999999994 ✓ pass
sin(45) DEG 0.7071067811865476 0.7071067811865475 ✓ pass
sin(90) DEG 1 1 ✓ pass
sin(180) DEG 0 1.2246467991473532e-16 ✓ pass
sin(270) DEG -1 -1 ✓ pass
cos(0) DEG 1 1 ✓ pass
cos(60) DEG 0.5 0.5000000000000001 ✓ pass
cos(90) DEG 0 6.123233995736766e-17 ✓ pass
cos(180) DEG -1 -1 ✓ pass
tan(0) DEG 0 0 ✓ pass
tan(45) DEG 1 0.9999999999999999 ✓ pass
tan(-45) DEG -1 -0.9999999999999999 ✓ pass
sin(0) RAD 0 0 ✓ pass
sin(pi/6) RAD 0.5 0.49999999999999994 ✓ pass
sin(pi/2) RAD 1 1 ✓ pass
cos(pi) RAD -1 -1 ✓ pass
cos(pi/3) RAD 0.5 0.5000000000000001 ✓ pass
tan(pi/4) RAD 1 0.9999999999999999 ✓ pass
sin(pi) RAD 0 1.2246467991473532e-16 ✓ pass
tan(90) DEG error:TRIG_SINGULARITY error:TRIG_SINGULARITY ✓ pass
tan(270) DEG error:TRIG_SINGULARITY error:TRIG_SINGULARITY ✓ pass
tan(-90) DEG error:TRIG_SINGULARITY error:TRIG_SINGULARITY ✓ pass
tan(pi/2) RAD error:TRIG_SINGULARITY error:TRIG_SINGULARITY ✓ pass
tan(3*pi/2) RAD error:TRIG_SINGULARITY error:TRIG_SINGULARITY ✓ pass
asin(0) DEG 0 0 ✓ pass
asin(0.5) DEG 30 30.000000000000004 ✓ pass
asin(1) DEG 90 90 ✓ pass
acos(1) DEG 0 0 ✓ pass
acos(0.5) DEG 60 60.00000000000001 ✓ pass
acos(0) DEG 90 90 ✓ pass
atan(0) DEG 0 0 ✓ pass
atan(1) DEG 45 45 ✓ pass
atan(-1) DEG -45 -45 ✓ pass
asin(0.5) RAD 0.5235987755982988 0.5235987755982989 ✓ pass
acos(0.5) RAD 1.0471975511965976 1.0471975511965979 ✓ pass
atan(1) RAD 0.7853981633974483 0.7853981633974483 ✓ pass
asin(1.1) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
asin(-1.1) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
acos(2) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
sinh(0) DEG 0 0 ✓ pass
cosh(0) DEG 1 1 ✓ pass
tanh(0) DEG 0 0 ✓ pass
sinh(1) DEG 1.1752011936438014 1.1752011936438014 ✓ pass
cosh(1) DEG 1.5430806348152437 1.5430806348152437 ✓ pass
tanh(1) DEG 0.7615941559557649 0.7615941559557649 ✓ pass
sinh(-1) DEG -1.1752011936438014 -1.1752011936438014 ✓ pass
cosh(-1) DEG 1.5430806348152437 1.5430806348152437 ✓ pass
log(1) DEG 0 0 ✓ pass
log(10) DEG 1 1 ✓ pass
log(100) DEG 2 2 ✓ pass
log(1000) DEG 3 3 ✓ pass
ln(1) DEG 0 0 ✓ pass
ln(e) DEG 1 1 ✓ pass
ln(e^2) DEG 2 2 ✓ pass
log(0) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
ln(0) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
log(-1) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
ln(-5) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
sqrt(0) DEG 0 0 ✓ pass
sqrt(4) DEG 2 2 ✓ pass
sqrt(9) DEG 3 3 ✓ pass
sqrt(2) DEG 1.4142135623730951 1.4142135623730951 ✓ pass
sqrt(-1) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
cbrt(0) DEG 0 0 ✓ pass
cbrt(8) DEG 2 2 ✓ pass
cbrt(27) DEG 3 3 ✓ pass
cbrt(-8) DEG -2 -2 ✓ pass
exp(0) DEG 1 1 ✓ pass
exp(1) DEG 2.718281828459045 2.718281828459045 ✓ pass
exp(2) DEG 7.3890560989306495 7.38905609893065 ✓ pass
abs(0) DEG 0 0 ✓ pass
abs(-5) DEG 5 5 ✓ pass
abs(3.7) DEG 3.7 3.7 ✓ pass
floor(3.7) DEG 3 3 ✓ pass
floor(-3.2) DEG -4 -4 ✓ pass
ceil(3.2) DEG 4 4 ✓ pass
ceil(-3.7) DEG -3 -3 ✓ pass
round(3.5) DEG 4 4 ✓ pass
round(3.4) DEG 3 3 ✓ pass
round(-3.5) DEG -3 -3 ✓ pass
0! DEG 1 1 ✓ pass
1! DEG 1 1 ✓ pass
5! DEG 120 120 ✓ pass
10! DEG 3628800 3628800 ✓ pass
(3+2)! DEG 120 120 ✓ pass
2^3! DEG 64 64 ✓ pass
3!! DEG 720 720 ✓ pass
3.5! DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
(-1)! DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
171! DEG error:OVERFLOW error:OVERFLOW ✓ pass
nCr(5,0) DEG 1 1 ✓ pass
nCr(5,5) DEG 1 1 ✓ pass
nCr(5,2) DEG 10 10 ✓ pass
nCr(10,3) DEG 120 120 ✓ pass
nCr(10,7) DEG 120 120 ✓ pass
nCr(0,0) DEG 1 1 ✓ pass
nCr(10,11) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
nCr(5,2.5) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
nPr(5,0) DEG 1 1 ✓ pass
nPr(5,1) DEG 5 5 ✓ pass
nPr(10,3) DEG 720 720 ✓ pass
nPr(5,5) DEG 120 120 ✓ pass
nPr(10,11) DEG error:DOMAIN_ERROR error:DOMAIN_ERROR ✓ pass
pi DEG 3.141592653589793 3.141592653589793 ✓ pass
π DEG 3.141592653589793 3.141592653589793 ✓ pass
e DEG 2.718281828459045 2.718281828459045 ✓ pass
2*pi DEG 6.283185307179586 6.283185307179586 ✓ pass
pi/2 DEG 1.5707963267948966 1.5707963267948966 ✓ pass
1/0 DEG error:DIVISION_BY_ZERO error:DIVISION_BY_ZERO ✓ pass
0/0 DEG error:DIVISION_BY_ZERO error:DIVISION_BY_ZERO ✓ pass
5mod0 DEG error:DIVISION_BY_ZERO error:DIVISION_BY_ZERO ✓ pass
1e-13 DEG 1e-13 1e-13 ✓ pass
6.02e23 DEG 6.02e+23 6.02e+23 ✓ pass
1.5e10 DEG 15000000000 15000000000 ✓ pass
2.5e-5 DEG 0.000025 0.000025 ✓ pass
((2+3)*(4-1)) DEG 15 15 ✓ pass
2+3*(4-(1+1)) DEG 8 8 ✓ pass
sqrt(2^2+3^2+4^2) DEG 5.385164807134504 5.385164807134504 ✓ pass
Ans+1 DEG 6 6 ✓ pass
Ans*2 DEG 10 10 ✓ pass
Ans DEG 0 0 ✓ pass
2+ DEG error:SYNTAX_ERROR error:SYNTAX_ERROR ✓ pass
(2+3 DEG error:SYNTAX_ERROR error:SYNTAX_ERROR ✓ pass
2*/3 DEG error:SYNTAX_ERROR error:SYNTAX_ERROR ✓ pass
foo(3) DEG error:UNKNOWN_FUNCTION error:UNKNOWN_FUNCTION ✓ pass
DEG error:SYNTAX_ERROR error:SYNTAX_ERROR ✓ pass
1/3 DEG 0.333333333333 0.333333333333 ✓ pass
2/3 DEG 0.666666666667 0.666666666667 ✓ pass
1e-13 DEG 1e-13 1e-13 ✓ pass
1000000000000 DEG 1e+12 1e+12 ✓ pass
999999999999 DEG 999999999999 999999999999 ✓ pass
0.1+0.2 DEG 0.3 0.3 ✓ pass
-0 DEG 0 0 ✓ pass
0.000000001 DEG 1e-9 1e-9 ✓ pass

Return to calculator

← Back to the Advanced Scientific Calculator