74 lines
3.2 KiB
OCaml
74 lines
3.2 KiB
OCaml
(* The Zelus compiler, version 2.2-dev
|
|
(2025-06-16-15:24) *)
|
|
open Common
|
|
open Ztypes
|
|
open Solvers
|
|
(* open Zls *)
|
|
|
|
type ('f , 'e , 'd , 'c , 'b , 'a) _sin_1_x =
|
|
{ mutable major_22 : 'f ;
|
|
mutable i_29 : 'e ;
|
|
mutable x_28 : 'd ;
|
|
mutable result_27 : 'c ; mutable o_26 : 'b ; mutable t0_23 : 'a }
|
|
|
|
let sin_1_x (cstate_30:Ztypes.cstate) =
|
|
|
|
let sin_1_x_alloc _ =
|
|
cstate_30.cmax <- (+) cstate_30.cmax 2 ;
|
|
cstate_30.zmax <- (+) cstate_30.zmax 1;
|
|
{ major_22 = false ;
|
|
i_29 = (false:bool) ;
|
|
x_28 = { zin = false; zout = 1. } ;
|
|
result_27 = (42.:float) ;
|
|
o_26 = { pos = 42.; der = 0. } ; t0_23 = { pos = 42.; der = 0. } } in
|
|
let sin_1_x_step self ((_time_21:float) , ()) =
|
|
((let (cindex_31:int) = cstate_30.cindex in
|
|
let cpos_33 = ref (cindex_31:int) in
|
|
let (zindex_32:int) = cstate_30.zindex in
|
|
let zpos_34 = ref (zindex_32:int) in
|
|
cstate_30.cindex <- (+) cstate_30.cindex 2 ;
|
|
cstate_30.zindex <- (+) cstate_30.zindex 1 ;
|
|
self.major_22 <- cstate_30.major ;
|
|
(if cstate_30.major then
|
|
for i_1 = cindex_31 to 1 do Zls.set cstate_30.dvec i_1 0. done
|
|
else ((self.o_26.pos <- Zls.get cstate_30.cvec !cpos_33 ;
|
|
cpos_33 := (+) !cpos_33 1) ;
|
|
(self.t0_23.pos <- Zls.get cstate_30.cvec !cpos_33 ;
|
|
cpos_33 := (+) !cpos_33 1))) ;
|
|
(let (result_35:(float * float)) =
|
|
(if self.i_29 then
|
|
self.o_26.pos <- ( *. ) ((~-.) 0.6)
|
|
(( ** ) (sin ((/.) 1. ((~-.) 0.6))) 2.))
|
|
;
|
|
self.i_29 <- false ;
|
|
self.t0_23.der <- 1. ;
|
|
(let (t_25:float) = (-.) self.t0_23.pos 0.6 in
|
|
self.o_26.der <- ( *. ) (sin ((/.) 1. t_25))
|
|
((-.) (sin ((/.) 1. t_25))
|
|
((/.) (( *. ) 2.
|
|
(cos ((/.) 1. t_25)))
|
|
t_25)) ;
|
|
self.x_28.zout <- self.o_26.pos ;
|
|
(begin match self.x_28.zin with
|
|
| true -> self.result_27 <- 1.
|
|
| _ -> self.result_27 <- 0. end) ;
|
|
(self.result_27 , self.o_26.pos)) in
|
|
cpos_33 := cindex_31 ;
|
|
(if cstate_30.major then
|
|
(((Zls.set cstate_30.cvec !cpos_33 self.o_26.pos ;
|
|
cpos_33 := (+) !cpos_33 1) ;
|
|
(Zls.set cstate_30.cvec !cpos_33 self.t0_23.pos ;
|
|
cpos_33 := (+) !cpos_33 1)) ; ((self.x_28.zin <- false)))
|
|
else (((self.x_28.zin <- Zls.get_zin cstate_30.zinvec !zpos_34 ;
|
|
zpos_34 := (+) !zpos_34 1)) ;
|
|
zpos_34 := zindex_32 ;
|
|
((Zls.set cstate_30.zoutvec !zpos_34 self.x_28.zout ;
|
|
zpos_34 := (+) !zpos_34 1)) ;
|
|
((Zls.set cstate_30.dvec !cpos_33 self.o_26.der ;
|
|
cpos_33 := (+) !cpos_33 1) ;
|
|
(Zls.set cstate_30.dvec !cpos_33 self.t0_23.der ;
|
|
cpos_33 := (+) !cpos_33 1)))) ; result_35)):float * float) in
|
|
|
|
let sin_1_x_reset self =
|
|
((self.i_29 <- true ; self.t0_23.pos <- 0.):unit) in
|
|
Node { alloc = sin_1_x_alloc; step = sin_1_x_step ; reset = sin_1_x_reset }
|