(* The Zelus compiler, version 2024-dev (2025-06-4-15:49) *) open Ztypes type ('c, 'b, 'a) machine_17 = { mutable _up_16: 'c; mutable y'_12: 'b; mutable y_11: 'a } let (ball) = let ball_10 = let machine_17 cstate_18 = let machine_17_alloc _ = cstate_18.cmax <- (+) cstate_18.cmax 2; cstate_18.zmax <- (+) cstate_18.zmax 1; { _up_16 = { zin = false; zout = 1. }; y'_12 = { pos = (-1.); der = 0. }; y_11 = { pos = (-1.); der = 0. } } in let machine_17_step self _ = ((let cindex_19 = cstate_18.cindex in let cpos_21 = ref (cindex_19:int) in let zindex_20 = cstate_18.zindex in let zpos_22 = ref (zindex_20:int) in cstate_18.cindex <- (+) cstate_18.cindex 2; cstate_18.zindex <- (+) cstate_18.zindex 1; (if cstate_18.major then for i_1 = cindex_19 to 1 do Zls.set cstate_18.dvec i_1 0. done else ((self.y'_12.pos <- Zls.get cstate_18.cvec !cpos_21; cpos_21 := (+) !cpos_21 1); (self.y_11.pos <- Zls.get cstate_18.cvec !cpos_21; cpos_21 := (+) !cpos_21 1))); (let result_23 = self._up_16.zout <- (~-.) self.y_11.pos; self.y'_12.der <- (-9.81); (let z_13 = self._up_16.zin in let lx_15 = self.y'_12.pos in (match z_13 with | true -> let v_14 = lx_15 in self.y'_12.pos <- ( *. ) (-0.8) v_14 | _ -> () ); self.y_11.der <- self.y'_12.pos; (self.y_11.pos, self.y'_12.pos, z_13)) in cpos_21 := cindex_19; (if cstate_18.major then (((Zls.set cstate_18.cvec !cpos_21 self.y'_12.pos; cpos_21 := (+) !cpos_21 1); (Zls.set cstate_18.cvec !cpos_21 self.y_11.pos; cpos_21 := (+) !cpos_21 1)); ((self._up_16.zin <- false))) else (((self._up_16.zin <- Zls.get_zin cstate_18.zinvec !zpos_22; zpos_22 := (+) !zpos_22 1)); zpos_22 := zindex_20; ((Zls.set cstate_18.zoutvec !zpos_22 self._up_16.zout; zpos_22 := (+) !zpos_22 1)); ((Zls.set cstate_18.dvec !cpos_21 self.y'_12.der; cpos_21 := (+) !cpos_21 1); (Zls.set cstate_18.dvec !cpos_21 self.y_11.der; cpos_21 := (+) !cpos_21 1)))); result_23)):(float * float * bool)) in let machine_17_reset self = ((self.y_11.pos <- 50.; self.y'_12.pos <- 0.):unit) in Node { alloc = machine_17_alloc; step = machine_17_step; reset = machine_17_reset } in machine_17 in ball_10