Files
2026-08-16 18:24:52 +07:00

29 lines
982 B
Lua

-- sde.lua: Stochastic Differential Equation Euler solver (1 NFE)
-- Predicts x0 then re-noises with Philox random numbers.
-- Note: requires philox_randn C helper exposed to Lua.
-- Falls back to ODE Euler if no seed info available.
solver = {
name = "sde",
display = "SDE (Stochastic)",
description = "SDE Euler with Philox re-noising for diversity",
nfe = 1,
order = 1,
needs_model = false,
stateful = false,
stochastic = true,
}
function step(xt, vt, t_curr, t_prev, n)
-- SDE needs philox_randn which is a C helper.
-- For now, fall back to ODE Euler. The C++ wrapper will handle
-- the SDE-specific logic (philox noise injection) when it detects
-- this plugin is stochastic and seeds are available.
local dt = t_curr - t_prev
for i = 0, n - 1 do
local x0 = xt[i] - vt[i] * t_curr
-- Without philox, do deterministic ODE step
xt[i] = xt[i] - vt[i] * dt
end
end