hsim-live/exm/sincos/sincos.zls
2026-03-30 13:28:49 +02:00

21 lines
687 B
Text

let dt = 0.001 (* Integration step *)
let node f_integr (x0, x') = x where (* Forward Euler integrator *)
rec x = x0 -> pre (x +. x' *. dt)
let node b_integr (x0, x') = x where (* Backward Euler integrator *)
rec x = x0 -> (pre x) +. x' *. dt
let node sincos () = (sin, cos) where
rec sin = f_integr(0.0, cos)
and cos = b_integr(1.0, -. sin)
let node main () =
let rec t = 0.0 -> pre t +. dt in
let (sin, cos) = sincos () in
match t <= 500.0 with
| true ->
(print_float t; print_string "\t";
print_float sin; print_string "\t";
print_float cos; print_newline ())
| false -> ()