Accuracy verification

Generated at build time · last updated 2026-11-09

A calculator that looks good but gives a wrong answer is worse than none. So our calculators are checked against independent reference implementations. The table below is not typed in by hand: it is produced when the site is built, by running our calculators on the same inputs and comparing them with values computed by SciPy, NumPy and Python’s exact integer maths.

50calculators checked
76test cases
199values compared
199 / 199match the reference

How the check works

  • Reference values come from scipy.stats (t-tests, ANOVA, chi-square, regression, distributions, confidence intervals), NumPy (descriptive statistics, error metrics) and Python’s math.comb / math.perm (exact counting).
  • A value passes when it agrees with the reference to within the precision we display (relative difference at most 0.05 %, and usually far smaller). Very small p-values that we show as “< 0.0001” pass when the true value is below that threshold.
  • Cases marked closed form are checked against the textbook formula rather than a library, because no library function exists for them. They confirm the arithmetic, not an independent algorithm.
  • The script that creates the references is verification/generate.py in our repository. The same checks are part of our test suite, and this page is recomputed every time the site is rebuilt, so it always shows the current state.

Verification covers the numerical results for the example inputs shown. It does not replace judgement: check that a test is appropriate for your data, and report any discrepancy through the contact page.

All checks

T-Test Calculator

Welch two-sample t-test · reference: scipy.stats.ttest_ind(a, b, equal_var=False)
QuantityReference valueOur resultStatus
t statistic-3.92195-3.9219✓ matches
p-value0.0015341430.0015341✓ matches
Degrees of freedom13.9995514✓ matches
Pooled two-sample t-test · reference: scipy.stats.ttest_ind(a, b, equal_var=True)
QuantityReference valueOur resultStatus
t statistic-3.92195-3.9219✓ matches
p-value0.0015340560.0015341✓ matches
Degrees of freedom1414✓ matches
Paired t-test (after − before) · reference: scipy.stats.ttest_rel(after, before)
QuantityReference valueOur resultStatus
t statistic26.9383626.938✓ matches
p-value2.490034e-8< 0.0001✓ matches
Degrees of freedom77✓ matches
One-sample t-test against μ₀ = 24 · reference: scipy.stats.ttest_1samp(a, 24)
QuantityReference valueOur resultStatus
t statistic1.5504921.5505✓ matches
p-value0.16495890.16496✓ matches
Degrees of freedom77✓ matches
One-sample t-test, left-tailed · reference: scipy.stats.ttest_1samp(a, 24, alternative='less')
QuantityReference valueOur resultStatus
p-value0.91752050.91752✓ matches

One-Sample Z-Test Calculator

One-sample z-test, two-tailed · reference: 2 × scipy.stats.norm.sf(|z|)
QuantityReference valueOur resultStatus
z-statistic22✓ matches
p-value0.045500260.0455✓ matches
Standard error (σ/√n)2.52.5✓ matches
One-sample z-test, left-tailed · reference: scipy.stats.norm.cdf(z)
QuantityReference valueOur resultStatus
z-statistic-1.5-1.5✓ matches
p-value0.06680720.066807✓ matches

One-Way ANOVA Calculator

One-way ANOVA, 3 groups · reference: scipy.stats.f_oneway(g1, g2, g3)
QuantityReference valueOur resultStatus
F statistic12.6363612.636✓ matches
p-value0.00060687830.00060688✓ matches
One-way ANOVA, 4 groups · reference: scipy.stats.f_oneway(*groups)
QuantityReference valueOur resultStatus
F statistic43.1006143.101✓ matches
p-value6.854293e-8< 0.0001✓ matches

Chi-Square Test Calculator

Chi-square test of independence (2 × 3) · reference: scipy.stats.chi2_contingency(table, correction=False)
QuantityReference valueOur resultStatus
Chi-square statistic χ²9.8636369.86364✓ matches
p-value0.0072133760.0072134✓ matches
Degrees of freedom22✓ matches
Cramér’s V (effect size)0.26543280.2654✓ matches
Chi-square goodness of fit (equal expected) · reference: scipy.stats.chisquare(observed)
QuantityReference valueOur resultStatus
Chi-square statistic χ²12.3212.32✓ matches
p-value0.006363630.0063636✓ matches
Chi-square goodness of fit (given expected) · reference: scipy.stats.chisquare(observed, f_exp)
QuantityReference valueOur resultStatus
Chi-square statistic χ²2.6666672.66667✓ matches
p-value0.44592170.44592✓ matches

P-Value from Chi-Square Calculator

χ² = 7.81, df = 3 · reference: scipy.stats.chi2.sf / ppf
QuantityReference valueOur resultStatus
p-value (right-tail)0.050106060.0501061✓ matches
Critical value (right tail, α = 0.05)7.8147287.81473✓ matches
χ² = 18.307, df = 10 · reference: scipy.stats.chi2.sf / ppf
QuantityReference valueOur resultStatus
p-value (right-tail)0.050000590.0500006✓ matches
Critical value (right tail, α = 0.05)18.3070418.307✓ matches
χ² = 1.2, df = 2 · reference: scipy.stats.chi2.sf / ppf
QuantityReference valueOur resultStatus
p-value (right-tail)0.54881160.548812✓ matches
Critical value (right tail, α = 0.05)5.9914655.99146✓ matches

Regression Equation Calculator

Simple linear regression · reference: scipy.stats.linregress(x, y)
QuantityReference valueOur resultStatus
Slope b₁1.9785711.97857✓ matches
Intercept b₀0.17142860.171429✓ matches
Correlation r0.99764940.99765✓ matches
R² (coefficient of determination)0.99530430.9953✓ matches
Prediction at x = 1019.9571419.9571✓ matches
Weak relationship (non-significant slope) · reference: scipy.stats.linregress(x, y)
QuantityReference valueOur resultStatus
Slope b₁0.18260080.182601✓ matches
Intercept b₀29.7240629.7241✓ matches
Correlation r0.39526960.39527✓ matches
p-value for the slope0.33244640.33245✓ matches

Confidence Interval Calculator

Confidence interval for a mean (t, raw data) · reference: scipy.stats.t.interval(0.95, n − 1, mean, sem)
QuantityReference valueOur resultStatus
95% confidence interval for the mean12.15685 to 13.0931512.1568 to 13.0932✓ matches
Sample mean12.62512.625✓ matches
Wilson interval for a proportion (45 of 120) · reference: scipy.stats.binomtest(45, 120).proportion_ci(method='wilson')
QuantityReference valueOur resultStatus
95% CI (Wilson, recommended)29.35243 to 46.4230529.352 % to 46.423 %✓ matches

Mean and Standard Deviation Calculator

Sample mean and SD · reference: numpy.std(ddof=1), numpy.var(ddof=1)
QuantityReference valueOur resultStatus
Sample standard deviation (s)2.138092.13809✓ matches
Mean (x̄)55✓ matches
Sample variance (s²)4.5714294.57143✓ matches
Population SD · reference: numpy.std(ddof=0)
QuantityReference valueOur resultStatus
Population standard deviation (σ)22✓ matches
Population variance (σ²)44✓ matches

Mean Absolute Deviation (MAD) Calculator

Mean absolute deviation · reference: numpy.mean(|x − mean|), scipy.stats.median_abs_deviation
QuantityReference valueOur resultStatus
Mean absolute deviation (MAD)3.753.75✓ matches
Median absolute deviation2.52.5✓ matches

RSD Calculator: Relative Standard Deviation

Relative standard deviation · reference: numpy.std(ddof=1) / numpy.mean × 100
QuantityReference valueOur resultStatus
Relative standard deviation (RSD)2.3685192.3685 %✓ matches

Mean, Median, Mode and Range Calculator

Mean, median, range · reference: numpy.mean, numpy.median
QuantityReference valueOur resultStatus
Mean6.1256.125✓ matches
Median77✓ matches
Range88✓ matches

Skewness Calculator

Skewness (types 1 and 2) · reference: scipy.stats.skew(bias=False / True)
QuantityReference valueOur resultStatus
G₁: adjusted Fisher-Pearson (type 2, Excel SKEW)1.5432731.5433✓ matches
g₁: moment coefficient (type 1)1.3432471.3432✓ matches

Kurtosis Calculator

Excess kurtosis (types 1 and 2) · reference: scipy.stats.kurtosis(bias=False / True)
QuantityReference valueOur resultStatus
G₂: adjusted (type 2, Excel KURT)1.6423721.6424✓ matches
g₂: moment coefficient (type 1)0.57212230.57212✓ matches

Standard Error of the Mean (SEM) Calculator

Standard error of the mean · reference: scipy.stats.sem
QuantityReference valueOur resultStatus
Standard error of the mean (SEM)0.96890430.968904✓ matches
Mean (x̄)14.7142914.7143✓ matches

Sample Variance Calculator

Sample and population variance · reference: numpy.var(ddof=1 / 0)
QuantityReference valueOur resultStatus
Sample variance (s²)6.5714296.571429✓ matches
Population variance (σ²)5.6326535.632653✓ matches

Binomial Probability Calculator with Steps

Binomial n = 10, p = 0.4, k = 3 · reference: scipy.stats.binom.pmf / cdf / sf
QuantityReference valueOur resultStatus
P(X = 3)0.21499080.21499085✓ matches
P(X ≤ 3)0.38228060.3822806✓ matches
P(X ≥ 3)0.83271020.83271025✓ matches
P(X > 3)0.61771940.6177194✓ matches
Binomial n = 50, p = 0.07, k = 5 · reference: scipy.stats.binom.pmf / cdf
QuantityReference valueOur resultStatus
P(X = 5)0.13592670.13592666✓ matches
P(X ≤ 5)0.86495360.86495357✓ matches

Geometric Distribution Calculator

Geometric p = 0.2, k = 4 · reference: scipy.stats.geom.pmf / cdf
QuantityReference valueOur resultStatus
P(X = 4)0.10240.1024✓ matches
P(success within 4 trials)0.59040.5904✓ matches
Expected number of trials 1/p55✓ matches

Gamma Distribution Calculator

Gamma shape 3, scale 2, x = 5 · reference: scipy.stats.gamma.cdf / pdf
QuantityReference valueOur resultStatus
P(X ≤ 5)0.45618690.45618688✓ matches
Density f(5)0.12825780.12825781✓ matches
Mean kθ66✓ matches
Variance kθ²1212✓ matches

Z-Table Calculator

Standard normal at z = 1.96 · reference: scipy.stats.norm.cdf / sf
QuantityReference valueOur resultStatus
Area to the left P(Z < z)0.97500210.9750021✓ matches
Area to the right P(Z > z)0.02499790.0249979✓ matches
Standard normal at z = -0.5 · reference: scipy.stats.norm.cdf / sf
QuantityReference valueOur resultStatus
Area to the left P(Z < z)0.30853750.3085375✓ matches
Area to the right P(Z > z)0.69146250.6914625✓ matches
Standard normal at z = 2.576 · reference: scipy.stats.norm.cdf / sf
QuantityReference valueOur resultStatus
Area to the left P(Z < z)0.99500250.9950025✓ matches
Area to the right P(Z > z)0.0049975320.004997532✓ matches

Z Test Statistic Calculator

z for a sample mean · reference: scipy.stats.norm.sf
QuantityReference valueOur resultStatus
z for a sample mean1.7251.725✓ matches
Two-tailed p-value0.084527470.084527✓ matches

nCr Calculator (Combinations)

C(52, 5) · reference: math.comb(52, 5)
QuantityReference valueOur resultStatus
C(52, 5) = 52C525989602,598,960✓ matches
C(40, 20) exact integer · reference: math.comb(40, 20)
QuantityReference valueOur resultStatus
C(40, 20) = 40C20137846528820137,846,528,820✓ matches
C(100, 50) in scientific notation · reference: math.comb(100, 50)
QuantityReference valueOur resultStatus
C(100, 50) = 100C501.008913e+291.00891 × 10^29 (30 digits)✓ matches

nPr Calculator (Permutations)

P(10, 4) · reference: math.perm(10, 4)
QuantityReference valueOur resultStatus
P(10, 4) = 10P450405,040✓ matches

Combination Calculator (nCr and nPr)

C(49, 6) lottery · reference: math.comb, math.perm
QuantityReference valueOur resultStatus
Combinations C(n, r)1398381613,983,816✓ matches
Permutations P(n, r)1006834752010,068,347,520✓ matches

Birthday Paradox Calculator

Birthday paradox, 23 people · closed form: exact product 1 − ∏(365 − i)/365
QuantityReference valueOur resultStatus
Chance at least two of 23 share a birthday0.50729720.5072972✓ matches

Mean Squared Error (MSE) Calculator

MSE, RMSE, MAE · reference: numpy
QuantityReference valueOur resultStatus
Mean squared error (MSE)1.0714291.071429✓ matches
Root mean squared error (RMSE)1.0350981.0351✓ matches
Mean absolute error (MAE)11✓ matches

SSE Calculator (Sum of Squared Errors)

Sum of squared errors · reference: numpy
QuantityReference valueOur resultStatus
Sum of squared errors (SSE)0.590.59✓ matches
Total sum of squares (SST)80.8333380.8333✓ matches

Cosine Similarity Calculator

Cosine similarity · reference: numpy.dot, numpy.linalg.norm
QuantityReference valueOur resultStatus
Cosine similarity0.97228430.9722843✓ matches
Dot product A·B25572557✓ matches
Euclidean distance16.9410716.9411✓ matches

Entropy Calculator (Shannon Entropy)

Shannon entropy of counts 9, 5 (bits) · reference: scipy.stats.entropy(base=2)
QuantityReference valueOur resultStatus
Shannon entropy H (bits)0.9402860.940286✓ matches

F1 Score Calculator

F1 from confusion counts · closed form: F1 = 2TP / (2TP + FP + FN)
QuantityReference valueOur resultStatus
F1 score0.750.75✓ matches
Precision8080 %✓ matches
Recall70.5882470.588 %✓ matches

Doubling Time Calculator

Doubling time at 3.5% growth · closed form: ln 2 / ln(1.035)
QuantityReference valueOur resultStatus
Doubling time (years)20.1487920.1488✓ matches

Cochran’s Formula Calculator

Cochran sample size (95%, ±5%, p = 0.5, N = 2000) · closed form: n₀ = z²pq/e², n = n₀ / (1 + (n₀ − 1)/N)
QuantityReference valueOur resultStatus
Cochran’s n₀ (infinite population)385385✓ matches
After finite population correction323323✓ matches

Probability of 3 Events Calculator

3 independent events (exact enumeration of all outcomes) · closed form: enumeration of all 2ⁿ outcomes with independent probabilities
QuantityReference valueOur resultStatus
All 3 events occur P(A ∩ B ∩ C)0.030.03✓ matches
None occur0.280.28✓ matches
At least one occurs P(A ∪ B ∪ …)0.720.72✓ matches
Exactly 1 of 3 occur0.470.47✓ matches
Exactly 2 of 3 occur0.220.22✓ matches
Expected number of events11✓ matches
At least 2 occur0.250.25✓ matches

4 Event Probability Calculator

4 independent events (exact enumeration of all outcomes) · closed form: enumeration of all 2ⁿ outcomes with independent probabilities
QuantityReference valueOur resultStatus
All 4 events occur P(A ∩ B ∩ C ∩ D)0.0090.009✓ matches
None occur0.1260.126✓ matches
At least one occurs P(A ∪ B ∪ …)0.8740.874✓ matches
Exactly 1 of 4 occur0.3830.383✓ matches
Exactly 2 of 4 occur0.3650.365✓ matches
Expected number of events1.51.5✓ matches
At least 2 occur0.4910.491✓ matches

Binomial Distribution Table Calculator

Binomial n = 12, p = 0.35 summary · reference: scipy.stats.binom(12, 0.35).mean / std / var / stats("s") / median
QuantityReference valueOur resultStatus
Mean μ = np4.24.2✓ matches
Standard deviation σ1.6522711.65227✓ matches
Variance2.732.73✓ matches
Skewness0.18156830.1816✓ matches
Median44✓ matches

Combinations with Repetition Calculator

Multisets: 8 items from 5 types · reference: math.comb(n + r − 1, r), n ** r, math.comb(r − 1, n − 1)
QuantityReference valueOur resultStatus
Combinations with repetition, 8 from 5 types495495✓ matches
Ordered with repetition nʳ390625390,625✓ matches
Positive integer solutions (each xᵢ ≥ 1)3535✓ matches

Confusion Matrix Calculator

Confusion matrix metrics · closed form: standard definitions (scikit-learn conventions)
QuantityReference valueOur resultStatus
Accuracy87.587.5 %✓ matches
Precision (PPV)89.4736889.47 %✓ matches
Recall (sensitivity, TPR)8585 %✓ matches
Specificity (TNR)9090 %✓ matches
F1 score87.1794987.18 %✓ matches
Negative predictive value85.7142985.71 %✓ matches
False positive rate1010 %✓ matches
False negative rate (miss rate)1515 %✓ matches

Hypothesis Testing Calculator

One-sample t-test from summary statistics · reference: scipy.stats.t.sf
QuantityReference valueOur resultStatus
Test statistic t1.8446621.8447✓ matches
p-value0.072691490.072691✓ matches
Standard error1.8973671.89737✓ matches
One-sample proportion z-test (58 of 100 vs 0.5) · reference: scipy.stats.norm.sf
QuantityReference valueOur resultStatus
Test statistic z1.61.6✓ matches
p-value0.10959860.1096✓ matches
One-sample z-test, right-tailed · reference: scipy.stats.norm.sf
QuantityReference valueOur resultStatus
Test statistic z1.8446621.8447✓ matches
p-value0.032543360.032543✓ matches

Level of Significance Calculator

Critical value and power (α = 0.05, d = 0.5, n = 32) · reference: scipy.stats.norm.ppf / cdf
QuantityReference valueOur resultStatus
Critical values (±)1.959964± 1.96✓ matches
Power (1 − β)80.7430480.74 %✓ matches
Type II error probability β19.2569619.26 %✓ matches
Critical t value (α = 0.01, df = 12, right tail) · reference: scipy.stats.t.ppf
QuantityReference valueOur resultStatus
Critical value2.6809982.681✓ matches

Probability and Chance Calculator

Chance of an event with p = 1/6 · reference: scipy.stats.binom.pmf, 1 − (1 − p)ⁿ
QuantityReference valueOur resultStatus
Probability of the event (single trial)0.16666670.16666667✓ matches
At least once in 10 trials0.83849440.83849442✓ matches
Exactly 2 times in 10 trials0.290710.29071005✓ matches

Raosoft Sample Size Calculator

Raosoft sample size (±5%, 95%, N = 1500) · closed form: n = N·x / ((N − 1)E² + x), x = z²·r(100 − r)
QuantityReference valueOur resultStatus
Recommended sample size306306✓ matches
Without population correction385385✓ matches

Statistical Significance Calculator

A/B test: 250/5000 vs 300/5000 conversions · reference: scipy.stats.chi2_contingency (z² = χ² for a 2 × 2 table)
QuantityReference valueOur resultStatus
p-value0.028294970.028295✓ matches
z statistic2.1931722.193✓ matches
Relative uplift of B over A2020 %✓ matches

Sample Size Calculator

Two-proportion sample size (30% vs 45%, 80% power) · closed form: n = [z(α/2)√(2p̄q̄) + z(β)√(p₁q₁ + p₂q₂)]² / (p₁ − p₂)²
QuantityReference valueOur resultStatus
Sample size per group (two proportions)163163✓ matches

Percentage Error Calculator

Percentage error · closed form: (approximate − exact) ÷ exact × 100
QuantityReference valueOur resultStatus
Percentage error-2.140673-2.14067 %✓ matches
Absolute percentage error2.1406732.14067 %✓ matches
Absolute error0.210.21✓ matches

Standard Deviation Calculator for Grouped Data

Grouped data SD (class midpoints) · closed form: numpy with class midpoints
QuantityReference valueOur resultStatus
Mean of grouped data25.8888925.8889✓ matches
Sample standard deviation (s)11.2456511.2457✓ matches
Total frequency (N)4545✓ matches
Σ f(x − x̄)²5564.4445564.44✓ matches

Average Deviation Calculator

Average deviation · reference: numpy
QuantityReference valueOur resultStatus
Average deviation about the mean3.753.75✓ matches
Average deviation about the median3.53.5✓ matches

Descriptive Statistics Calculator

Descriptive statistics · reference: numpy
QuantityReference valueOur resultStatus
Count (n)1515✓ matches
Mean16.3333316.3333✓ matches
Median1515✓ matches
Sum245245✓ matches
Range3838✓ matches
Sample variance (s²)111.2381111.238✓ matches

Coefficient of Variation Calculator

Coefficient of variation · reference: numpy.std(ddof=1) / numpy.mean × 100
QuantityReference valueOur resultStatus
Coefficient of variation (CV)9.8193049.8193 %✓ matches
Standard deviation2.1602472.16025✓ matches

Histogram Calculator and Maker

Histogram default bin count (Sturges) · closed form: numpy.histogram_bin_edges(bins='sturges') uses ⌈log₂ n + 1⌉
QuantityReference valueOur resultStatus
Number of bins55✓ matches

Curve Fitting Calculator

Polynomial fit, degree 1 · reference: numpy.polyfit(x, y, 1)
QuantityReference valueOur resultStatus
R²0.94639860.9464✓ matches
RMSE7.5063437.5063✓ matches
SSE563.4519563.452✓ matches
Polynomial fit, degree 2 · reference: numpy.polyfit(x, y, 2)
QuantityReference valueOur resultStatus
R²0.9999140.99991✓ matches
RMSE0.30075410.30075✓ matches
SSE0.90453030.90453✓ matches
Polynomial fit, degree 3 · reference: numpy.polyfit(x, y, 3)
QuantityReference valueOur resultStatus
R²0.99994430.99994✓ matches
RMSE0.2420190.24202✓ matches
SSE0.58573190.585732✓ matches
Exponential fit (log-linear least squares) · reference: numpy.polyfit(x, ln y, 1), error measured on the original y scale
QuantityReference valueOur resultStatus
R²0.99979470.99979✓ matches
SSE1.4542421.45424✓ matches

Nonlinear Regression Calculator

Logistic curve fit · reference: scipy.optimize.curve_fit (Levenberg-Marquardt)
QuantityReference valueOur resultStatus
Parameter L76.0064376.00643✓ matches
Parameter k0.73506660.7350666✓ matches
Parameter x₀5.0151955.015195✓ matches
SSE0.30204730.302047✓ matches
Michaelis-Menten fit · reference: scipy.optimize.curve_fit (Levenberg-Marquardt)
QuantityReference valueOur resultStatus
Parameter Vmax12.7129312.71293✓ matches
Parameter K2.7241842.724184✓ matches
SSE0.048007940.0480079✓ matches
Decay to a baseline fit · reference: scipy.optimize.curve_fit (Levenberg-Marquardt)
QuantityReference valueOur resultStatus
Parameter a9.4285089.428508✓ matches
Parameter b0.46876570.4687657✓ matches
Parameter c2.8372182.837218✓ matches