/** * The threshold for correctness for operators. Less than one sample even * at very high sampling rates (e.g. `1e-6 < 1 / 192000`). */ const EPSILON = 1e-6; /** * Test if A is greater than B */ export function GT(a: number, b: number): boolean { return a > b + EPSILON; } /** * Test if A is greater than or equal to B */ export function GTE(a: number, b: number): boolean { return GT(a, b) || EQ(a, b); } /** * Test if A is less than B */ export function LT(a: number, b: number): boolean { return a + EPSILON < b; } /** * Test if A is less than B */ export function EQ(a: number, b: number): boolean { return Math.abs(a - b) < EPSILON; } /** * Clamp the value within the given range */ export function clamp(value: number, min: number, max: number): number { return Math.max(Math.min(value, max), min); }