Orange textured background

Signal

Math floating-point

Identifies the JavaScript engine by exposing implementation differences in transcendental-function approximation algorithms.

Reviewed

Tier 1 engine

What it measures

A set of Math.* function results that expose how each JavaScript engine approximates transcendental functions. The floating-point values are fully deterministic within a given engine version but differ across V8, SpiderMonkey, and JavaScriptCore.

Results do not vary across hardware: the same engine on the same version always produces the same output regardless of CPU model. This makes the signal a clean engine discriminator with no hardware noise.

How it is collected

The chosen expressions are computed in order, serialised deterministically, and fed into xxHash64 to produce a 16-character hex hash. The raw number array is also returned as value for observability. The entire computation is synchronous and typically completes in under 1 ms with no yield points and no timeouts.

Confidence rules

ConfidenceTrigger
normalComputation completed without exception
absentTop-level catch fired (unexpected, since Math functions do not throw on normal inputs)

Why engine-bound

Each JavaScript engine implements transcendental math functions independently. V8 uses its own polynomial approximations; SpiderMonkey may use platform-native libm on some systems or its own implementations; JavaScriptCore uses its own approximations. The chosen expressions are selected to amplify these differences, targeting boundary regions and code paths where argument reduction and large-exponent handling diverge across engines.

IEEE 754 requires results to be consistent within an engine regardless of JIT optimisation level, so the values are fully stable across sessions. A browser update that changes the math library can shift the fingerprint, but this is rare and detectable as a version-correlated event.

Last reviewed 2026-06-04