import { Expr } from '../gpu/contract'; type Val = Expr | number; export declare const add: (a: Val, b: Val) => Expr; export declare const sub: (a: Val, b: Val) => Expr; export declare const mul: (a: Val, b: Val) => Expr; export declare const div: (a: Val, b: Val) => Expr; export declare const neg: (a: Val) => Expr; export declare const abs: (x: Val) => Expr; export declare const floor: (x: Val) => Expr; export declare const ceil: (x: Val) => Expr; export declare const fract: (x: Val) => Expr; export declare const sqrt: (x: Val) => Expr; export declare const pow: (x: Val, y: Val) => Expr; export declare const exp: (x: Val) => Expr; export declare const log: (x: Val) => Expr; export declare const sin: (x: Val) => Expr; export declare const cos: (x: Val) => Expr; export declare const tan: (x: Val) => Expr; export declare const atan2: (y: Val, x: Val) => Expr; export declare const min: (a: Val, b: Val) => Expr; export declare const max: (a: Val, b: Val) => Expr; export declare const clamp: (x: Val, lo: Val, hi: Val) => Expr; export declare const mix: (a: Val, b: Val, t: Val) => Expr; export declare const step: (edge: Val, x: Val) => Expr; export declare const smoothstep: (e0: Val, e1: Val, x: Val) => Expr; export declare const sign: (x: Val) => Expr; export declare const length: (v: Val) => Expr; export declare const distance: (a: Val, b: Val) => Expr; export declare const dot: (a: Val, b: Val) => Expr; export declare const normalize: (v: Val) => Expr; export declare const cross: (a: Val, b: Val) => Expr; /** Rotate a 2D point about the origin by a precomputed cos/sin pair (inline algebra). */ export declare const rotate2: (p: Val, cosA: Val, sinA: Val) => Expr; export declare const reflect: (i: Val, n: Val) => Expr; export declare const refract: (i: Val, n: Val, eta: Val) => Expr; export declare const exp2: (x: Val) => Expr; /** * A seeded random phase in [0, 2π) — `fract(sin(seed·k)·big)·τ`, the standard cheap * decorrelator for sine schedules (each independent phase gets its own `salt`). The salt is * the raw `(k, big)` pair so ported schedules keep their exact historical constants. */ export declare const hashPhase: (seed: Val, salt: { k: number; big: number; }) => Expr; export declare const lt: (a: Val, b: Val) => Expr; export declare const le: (a: Val, b: Val) => Expr; export declare const gt: (a: Val, b: Val) => Expr; export declare const ge: (a: Val, b: Val) => Expr; /** `cond ? ifTrue : ifFalse` (WGSL `select` takes false-value first — handled here). */ export declare const select: (cond: Expr, ifTrue: Val, ifFalse: Val) => Expr; export declare const float: (n: number) => Expr; export declare const vec2: (x: Val, y: Val) => Expr; export declare const vec3: (x: Val, y: Val, z: Val) => Expr; export declare const vec4: (...parts: Val[]) => Expr; /** Broadcast a scalar into a vec3 (the common vector-mix third argument). */ export declare const splat3: (x: Val) => Expr; /** Bind an expression to one WGSL local so every consumer reads the same evaluation. */ export declare const local: (e: Expr, hint: string) => Expr; /** Smooth relu: 0 below zero, →x above, blended over `k` — the standard soft elbow. */ export declare const softPlus: (x: Expr, k: Val) => Expr; /** Gaussian bell over a normalized coordinate: `exp(−k·x²)`. */ export declare const gaussBell: (x: Expr, k: Val) => Expr; export {}; //# sourceMappingURL=math.d.ts.map