feat: somewhat compatible with zelus output
This commit is contained in:
parent
589f89c768
commit
6d92261afd
19 changed files with 107 additions and 515 deletions
6
exm/zelus/sincos/dune
Normal file
6
exm/zelus/sincos/dune
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(rule
|
||||
(targets sincosz.ml sincosz.zci)
|
||||
(deps
|
||||
(:zl sincosz.zls))
|
||||
(action
|
||||
(run zeluc %{zl})))
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
(* The Zelus compiler, version 2.2-dev
|
||||
(2025-06-16-15:24) *)
|
||||
open Common
|
||||
open Ztypes
|
||||
open Solvers
|
||||
|
||||
type ('c , 'b , 'a) _f =
|
||||
{ mutable major_11 : 'c ; mutable sin_13 : 'b ; mutable cos_12 : 'a }
|
||||
|
||||
let f (cstate_14:Ztypes.cstate) =
|
||||
|
||||
let f_alloc _ =
|
||||
cstate_14.cmax <- (+) cstate_14.cmax 2;
|
||||
{ major_11 = false ;
|
||||
sin_13 = { pos = 42.; der = 0. } ; cos_12 = { pos = 42.; der = 0. } } in
|
||||
let f_step self ((_time_10:float) , ()) =
|
||||
((let (cindex_15:int) = cstate_14.cindex in
|
||||
let cpos_17 = ref (cindex_15:int) in
|
||||
cstate_14.cindex <- (+) cstate_14.cindex 2 ;
|
||||
self.major_11 <- cstate_14.major ;
|
||||
(if cstate_14.major then
|
||||
for i_1 = cindex_15 to 1 do Zls.set cstate_14.dvec i_1 0. done
|
||||
else ((self.sin_13.pos <- Zls.get cstate_14.cvec !cpos_17 ;
|
||||
cpos_17 := (+) !cpos_17 1) ;
|
||||
(self.cos_12.pos <- Zls.get cstate_14.cvec !cpos_17 ;
|
||||
cpos_17 := (+) !cpos_17 1))) ;
|
||||
(let (result_19) =
|
||||
self.cos_12.der <- (~-.) self.sin_13.pos ;
|
||||
self.sin_13.der <- self.cos_12.pos ;
|
||||
Bigarray.(Array1.of_array Float64 c_layout
|
||||
[| self.sin_13.pos; self.cos_12.pos |]) in
|
||||
cpos_17 := cindex_15 ;
|
||||
(if cstate_14.major then
|
||||
(((Zls.set cstate_14.cvec !cpos_17 self.sin_13.pos ;
|
||||
cpos_17 := (+) !cpos_17 1) ;
|
||||
(Zls.set cstate_14.cvec !cpos_17 self.cos_12.pos ;
|
||||
cpos_17 := (+) !cpos_17 1)))
|
||||
else (((Zls.set cstate_14.dvec !cpos_17 self.sin_13.der ;
|
||||
cpos_17 := (+) !cpos_17 1) ;
|
||||
(Zls.set cstate_14.dvec !cpos_17 self.cos_12.der ;
|
||||
cpos_17 := (+) !cpos_17 1)))) ; result_19))) in
|
||||
|
||||
let f_reset self =
|
||||
((self.sin_13.pos <- 0. ; self.cos_12.pos <- 1.):unit) in
|
||||
Node { alloc = f_alloc; step = f_step ; reset = f_reset }
|
||||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue