Skip to content
Snippets Groups Projects
Commit c6227cfb authored by Erwan Jahier's avatar Erwan Jahier
Browse files

Split structures appearing inside expressions int the

"one_op_per_equation" mode.
parent f1cbf548
No related branches found
No related tags found
No related merge requests found
(** Time-stamp: <modified the 20/11/2008 (at 10:47) by Erwan Jahier> *) (** Time-stamp: <modified the 20/11/2008 (at 14:32) by Erwan Jahier> *)
open Lxm open Lxm
...@@ -143,6 +143,7 @@ and (split_val_exp : bool -> Eff.local_env -> Eff.val_exp -> Eff.val_exp * split ...@@ -143,6 +143,7 @@ and (split_val_exp : bool -> Eff.local_env -> Eff.val_exp -> Eff.val_exp * split
-> ve, ([],[]) -> ve, ([],[])
| CallByNameEff (by_name_op_eff, fl) -> | CallByNameEff (by_name_op_eff, fl) ->
let lxm = by_name_op_eff.src in
let fl, eql, vl = let fl, eql, vl =
List.fold_left List.fold_left
(fun (fl_acc, eql_acc, vl_acc) (fn, fv) -> (fun (fl_acc, eql_acc, vl_acc) (fn, fv) ->
...@@ -152,8 +153,26 @@ and (split_val_exp : bool -> Eff.local_env -> Eff.val_exp -> Eff.val_exp * split ...@@ -152,8 +153,26 @@ and (split_val_exp : bool -> Eff.local_env -> Eff.val_exp -> Eff.val_exp * split
([],[],[]) ([],[],[])
fl fl
in in
CallByNameEff (by_name_op_eff, List.rev fl), (eql, vl) let rhs = CallByNameEff (by_name_op_eff, List.rev fl) in
if top_level then
rhs, (eql, vl)
else
(* create the var for the current call *)
let clk_l = EvalClock.get_val_exp_eff ve in
let typ_l = EvalType.val_exp_eff ve in
let nv_l = List.map2 (new_var node_env) typ_l clk_l in
let nve = match nv_l with
| [nv] -> CallByPosEff(
Lxm.flagit (Eff.IDENT (Ident.to_idref nv.var_name_eff)) lxm,
OperEff []
)
| _ -> assert false
in
let lpl = List.map (fun nv -> LeftVarEff(nv, lxm)) nv_l in
let eq = Lxm.flagit (lpl, rhs) lxm in
nve, (eql@[eq], vl@nv_l)
| CallByPosEff(by_pos_op_eff, OperEff vel) -> | CallByPosEff(by_pos_op_eff, OperEff vel) ->
(* recursively split the arguments *) (* recursively split the arguments *)
......
...@@ -8288,6 +8288,7 @@ type _left::truc = struct {a : A_bool_100; b : int}; ...@@ -8288,6 +8288,7 @@ type _left::truc = struct {a : A_bool_100; b : int};
node left::toto(x:bool) returns (t:A__left::truc_3); node left::toto(x:bool) returns (t:A__left::truc_3);
var var
_v1:A_bool_100; _v1:A_bool_100;
_v2:_left::truc;
let let
t[0].a[0 .. 98 step 2][48 .. 0 step -2] = true^25; t[0].a[0 .. 98 step 2][48 .. 0 step -2] = true^25;
t[0].a[0 .. 98 step 2][1 .. 49 step 2] = false^25; t[0].a[0 .. 98 step 2][1 .. 49 step 2] = false^25;
...@@ -8295,8 +8296,9 @@ let ...@@ -8295,8 +8296,9 @@ let
t[0].a[1 .. 99 step 2][1] = true; t[0].a[1 .. 99 step 2][1] = true;
t[0].a[5 .. 99 step 2] = false^48; t[0].a[5 .. 99 step 2] = false^48;
t[0].b = 42; t[0].b = 42;
t[1 .. 2] = _left::truc{a=_v1;b=0}^2; t[1 .. 2] = _v2^2;
_v1 = true^100; _v1 = true^100;
_v2 = _left::truc{a=_v1;b=0};
tel tel
-- end of node left::toto -- end of node left::toto
-- automatically defined aliases: -- automatically defined aliases:
...@@ -10635,10 +10637,12 @@ returns ( ...@@ -10635,10 +10637,12 @@ returns (
tabToFillAfter:A__Gyroscope2::Valid_ChannelT_3); tabToFillAfter:A__Gyroscope2::Valid_ChannelT_3);
var var
acc_out:_Gyroscope2::CFF_Eltstruct; acc_out:_Gyroscope2::CFF_Eltstruct;
_v1:_Gyroscope2::CFF_Eltstruct;
let let
(acc_out, tabToFillAfter) = fillred<<Gyroscope2::addOneChannelIter, (acc_out, tabToFillAfter) = fillred<<Gyroscope2::addOneChannelIter,
3>>(_Gyroscope2::CFF_Eltstruct{indx=0;indx_toChange=indx_toChange;value=channeltToAdd}, 3>>(_v1, tabToFill);
tabToFill); _v1 =
_Gyroscope2::CFF_Eltstruct{indx=0;indx_toChange=indx_toChange;value=channeltToAdd};
tel tel
-- end of node Gyroscope2::addOneChannel -- end of node Gyroscope2::addOneChannel
...@@ -10685,13 +10689,14 @@ var ...@@ -10685,13 +10689,14 @@ var
acc_out:_Gyroscope2::CFF_struct; acc_out:_Gyroscope2::CFF_struct;
localtabToFill:_Gyroscope2::Valid_ChannelT; localtabToFill:_Gyroscope2::Valid_ChannelT;
_v1:A__Gyroscope2::Valid_ChannelT_3; _v1:A__Gyroscope2::Valid_ChannelT_3;
_v2:_Gyroscope2::CFF_struct;
let let
localtabToFill = localtabToFill =
_Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0}; _Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0};
acc_out = red<<Gyroscope2::CFC_iter, acc_out = red<<Gyroscope2::CFC_iter, 4>>(_v2, allChannels);
4>>(_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=_v1},
allChannels);
_v1 = localtabToFill^3; _v1 = localtabToFill^3;
_v2 =
_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=_v1};
foreignChannels = acc_out.tabToFill; foreignChannels = acc_out.tabToFill;
tel tel
-- end of node Gyroscope2::ComputeForeignChannels -- end of node Gyroscope2::ComputeForeignChannels
...@@ -11005,23 +11010,24 @@ var ...@@ -11005,23 +11010,24 @@ var
dumbChannel:A__Gyroscope2::Valid_ChannelT_4; dumbChannel:A__Gyroscope2::Valid_ChannelT_4;
initChannels:A__Gyroscope2::Valid_ChannelT_4; initChannels:A__Gyroscope2::Valid_ChannelT_4;
fillredInit:A__Gyroscope2::Valid_ChannelT_4; fillredInit:A__Gyroscope2::Valid_ChannelT_4;
_v1:A_int_4; _v1:_Gyroscope2::Valid_ChannelT;
_v2:A_real_4; _v2:A_int_4;
_v3:A_real_4; _v3:A_real_4;
_v4:A_real_4; _v4:A_real_4;
_v5:A__Gyroscope2::Valid_ChannelT_4; _v5:A_real_4;
_v6:A__Gyroscope2::Valid_ChannelT_4;
let let
initChannels = initChannels = _v1^4;
_Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0}^4; _v1 = _Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0};
(dumbChannel, resChannels) = fillred<<Gyroscope2::Channel, (dumbChannel, resChannels) = fillred<<Gyroscope2::Channel,
4>>(fillredInit, _v1, channels, _v2, _v3, _v4); 4>>(fillredInit, _v2, channels, _v3, _v4, _v5);
_v1 = [0, 1, 2, 3]; _v2 = [0, 1, 2, 3];
_v2 = delta^4; _v3 = delta^4;
_v3 = god^4; _v4 = god^4;
_v4 = delta_to_god^4; _v5 = delta_to_god^4;
AxisValue = Gyroscope2::Voter(resChannels, god, delta_to_god); AxisValue = Gyroscope2::Voter(resChannels, god, delta_to_god);
fillredInit = initChannels -> _v5; fillredInit = initChannels -> _v6;
_v5 = pre resChannels; _v6 = pre resChannels;
tel tel
-- end of node Gyroscope2::EvaluateAxis -- end of node Gyroscope2::EvaluateAxis
...@@ -16161,9 +16167,10 @@ returns ( ...@@ -16161,9 +16167,10 @@ returns (
iselementof:bool); iselementof:bool);
var var
acc_out:_produitBool::T_isElementOf_; acc_out:_produitBool::T_isElementOf_;
_v1:_produitBool::T_isElementOf_;
let let
acc_out = red<<produitBool::iterated_isElementOf_, acc_out = red<<produitBool::iterated_isElementOf_, 10>>(_v1, t);
10>>(_produitBool::T_isElementOf_{eltToSearch=e;iselementof=false}, t); _v1 = _produitBool::T_isElementOf_{eltToSearch=e;iselementof=false};
iselementof = acc_out.iselementof; iselementof = acc_out.iselementof;
tel tel
-- end of node produitBool::_isElementOf_ -- end of node produitBool::_isElementOf_
...@@ -16204,11 +16211,12 @@ returns ( ...@@ -16204,11 +16211,12 @@ returns (
var var
iterationResult:_produitBool::iteratedStruct; iterationResult:_produitBool::iteratedStruct;
_v1:bool; _v1:bool;
_v2:_produitBool::iteratedStruct;
let let
iterationResult = red<<produitBool::selectOneStage, iterationResult = red<<produitBool::selectOneStage, 10>>(_v2, array);
10>>(_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1},
array);
_v1 = array[0]; _v1 = array[0];
_v2 =
_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1};
elementSelected = iterationResult.elementSelected; elementSelected = iterationResult.elementSelected;
tel tel
-- end of node produitBool::selectElementOfRank_inArray_ -- end of node produitBool::selectElementOfRank_inArray_
...@@ -16268,11 +16276,12 @@ var ...@@ -16268,11 +16276,12 @@ var
bidon:_produitBool::Tacc_inShift2; bidon:_produitBool::Tacc_inShift2;
_v2:int; _v2:int;
_v1:A_bool_10; _v1:A_bool_10;
_v3:_produitBool::Tacc_inShift2;
let let
(bidon, ligne) = fill<<produitBool::shiftFill, (bidon, ligne) = fill<<produitBool::shiftFill, 20>>(_v3);
20>>(_produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=0});
_v2 = acc_in.rank; _v2 = acc_in.rank;
_v1 = acc_in.multiplieur; _v1 = acc_in.multiplieur;
_v3 = _produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=0};
tel tel
-- end of node produitBool::shift -- end of node produitBool::shift
...@@ -16364,11 +16373,13 @@ returns ( ...@@ -16364,11 +16373,13 @@ returns (
var var
v_iterationResult:_shiftFill_ludic::T3_STRUCT; v_iterationResult:_shiftFill_ludic::T3_STRUCT;
_v1:bool; _v1:bool;
_v2:_shiftFill_ludic::T3_STRUCT;
let let
v_iterationResult = red<<shiftFill_ludic::n_selectOneStage, v_iterationResult = red<<shiftFill_ludic::n_selectOneStage, 10>>(_v2,
10>>(_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1},
i_array); i_array);
_v1 = i_array[0]; _v1 = i_array[0];
_v2 =
_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1};
o_elementSelected = v_iterationResult.elementSelected; o_elementSelected = v_iterationResult.elementSelected;
tel tel
-- end of node shiftFill_ludic::n_selectElementOfRank_inArray_ -- end of node shiftFill_ludic::n_selectElementOfRank_inArray_
...@@ -16471,11 +16482,13 @@ returns ( ...@@ -16471,11 +16482,13 @@ returns (
var var
v_iterationResult:_shift_ludic::T4_STRUCT; v_iterationResult:_shift_ludic::T4_STRUCT;
_v1:bool; _v1:bool;
_v2:_shift_ludic::T4_STRUCT;
let let
v_iterationResult = red<<shift_ludic::n_selectOneStage, v_iterationResult = red<<shift_ludic::n_selectOneStage, 10>>(_v2,
10>>(_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1},
i_array); i_array);
_v1 = i_array[0]; _v1 = i_array[0];
_v2 =
_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1};
o_elementSelected = v_iterationResult.elementSelected; o_elementSelected = v_iterationResult.elementSelected;
tel tel
-- end of node shift_ludic::n_selectElementOfRank_inArray_ -- end of node shift_ludic::n_selectElementOfRank_inArray_
...@@ -16531,11 +16544,12 @@ var ...@@ -16531,11 +16544,12 @@ var
v_bidon:_shift_ludic::T2_STRUCT; v_bidon:_shift_ludic::T2_STRUCT;
_v2:int; _v2:int;
_v1:A_bool_10; _v1:A_bool_10;
_v3:_shift_ludic::T2_STRUCT;
let let
(v_bidon, o_ligne) = fill<<shift_ludic::n_shiftFill, (v_bidon, o_ligne) = fill<<shift_ludic::n_shiftFill, 20>>(_v3);
20>>(_shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=0});
_v2 = i_acc_in.rank; _v2 = i_acc_in.rank;
_v1 = i_acc_in.multiplieur; _v1 = i_acc_in.multiplieur;
_v3 = _shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=0};
tel tel
-- end of node shift_ludic::n_shift -- end of node shift_ludic::n_shift
-- automatically defined aliases: -- automatically defined aliases:
...@@ -16715,26 +16729,27 @@ var ...@@ -16715,26 +16729,27 @@ var
_v5:int; _v5:int;
_v4:int; _v4:int;
_v3:int; _v3:int;
_v9:int; _v9:_calculs_max::struct_max;
_v10:bool; _v10:int;
_v11:int; _v11:bool;
_v12:bool; _v12:int;
_v13:bool; _v13:bool;
_v17:int; _v14:bool;
_v18:int; _v18:int;
_v19:int;
_v17:int;
_v16:int; _v16:int;
_v15:int; _v15:int;
_v14:int; _v20:_calculs_max::struct_max;
_v22:int; _v24:int;
_v25:int;
_v23:int; _v23:int;
_v22:int;
_v21:int; _v21:int;
_v20:int; _v26:_calculs_max::struct_max;
_v19:int; _v27:_calculs_max::struct_max;
_v24:_calculs_max::struct_max;
let let
strout = if _v2 then strout = if _v2 then _v9 else _v27;
_calculs_max::struct_max{max1=_v3;max2=_v4;imax1=_v5;imax2=_v6;icourant=_v8}
else _v24;
_v1 = strin.max2; _v1 = strin.max2;
_v2 = ecourant <= _v1; _v2 = ecourant <= _v1;
_v7 = strin.icourant; _v7 = strin.icourant;
...@@ -16743,25 +16758,28 @@ let ...@@ -16743,25 +16758,28 @@ let
_v5 = strin.imax1; _v5 = strin.imax1;
_v4 = strin.max2; _v4 = strin.max2;
_v3 = strin.max1; _v3 = strin.max1;
_v9 = strin.max2; _v9 =
_v10 = ecourant > _v9; _calculs_max::struct_max{max1=_v3;max2=_v4;imax1=_v5;imax2=_v6;icourant=_v8};
_v11 = strin.max1; _v10 = strin.max2;
_v12 = ecourant <= _v11; _v11 = ecourant > _v10;
_v13 = _v10 and _v12; _v12 = strin.max1;
_v13 = ecourant <= _v12;
_v14 = _v11 and _v13;
_v18 = strin.icourant;
_v19 = _v18 + 1;
_v17 = strin.icourant; _v17 = strin.icourant;
_v18 = _v17 + 1; _v16 = strin.imax1;
_v16 = strin.icourant; _v15 = strin.max1;
_v15 = strin.imax1; _v20 =
_v14 = strin.max1; _calculs_max::struct_max{max1=_v15;max2=ecourant;imax1=_v16;imax2=_v17;icourant=_v19};
_v24 = strin.icourant;
_v25 = _v24 + 1;
_v23 = strin.imax1;
_v22 = strin.icourant; _v22 = strin.icourant;
_v23 = _v22 + 1; _v21 = strin.max1;
_v21 = strin.imax1; _v26 =
_v20 = strin.icourant; _calculs_max::struct_max{max1=ecourant;max2=_v21;imax1=_v22;imax2=_v23;icourant=_v25};
_v19 = strin.max1; _v27 = if _v14 then _v20 else _v26;
_v24 = if _v13 then
_calculs_max::struct_max{max1=_v14;max2=ecourant;imax1=_v15;imax2=_v16;icourant=_v18}
else
_calculs_max::struct_max{max1=ecourant;max2=_v19;imax1=_v20;imax2=_v21;icourant=_v23};
tel tel
-- end of node calculs_max::max -- end of node calculs_max::max
...@@ -16802,18 +16820,20 @@ var ...@@ -16802,18 +16820,20 @@ var
tmp:_calculs_max::struct_fill_bool; tmp:_calculs_max::struct_fill_bool;
_v2:int; _v2:int;
_v1:int; _v1:int;
_v3:_calculs_max::struct_max;
_v5:int;
_v4:int; _v4:int;
_v3:int; _v6:_calculs_max::struct_fill_bool;
let let
local_struct = red<<calculs_max::max, local_struct = red<<calculs_max::max, 10>>(_v3, A);
10>>(_calculs_max::struct_max{max1=0;max2=0;imax1=_v1;imax2=_v2;icourant=0},
A);
_v2 = -1; _v2 = -1;
_v1 = -1; _v1 = -1;
(tmp, res) = fill<<calculs_max::fill_bool, _v3 =
10>>(_calculs_max::struct_fill_bool{imax1=_v3;imax2=_v4;icourant=0}); _calculs_max::struct_max{max1=0;max2=0;imax1=_v1;imax2=_v2;icourant=0};
_v4 = local_struct.imax2; (tmp, res) = fill<<calculs_max::fill_bool, 10>>(_v6);
_v3 = local_struct.imax1; _v5 = local_struct.imax2;
_v4 = local_struct.imax1;
_v6 = _calculs_max::struct_fill_bool{imax1=_v4;imax2=_v5;icourant=0};
tel tel
-- end of node calculs_max::calculs_max -- end of node calculs_max::calculs_max
-- automatically defined aliases: -- automatically defined aliases:
...@@ -16882,9 +16902,10 @@ returns ( ...@@ -16882,9 +16902,10 @@ returns (
acknowledge:A_bool_10); acknowledge:A_bool_10);
var var
accu_out:_deSimone::cell_accu; accu_out:_deSimone::cell_accu;
_v1:_deSimone::cell_accu;
let let
(accu_out, acknowledge) = fillred<<deSimone::oneCell, (accu_out, acknowledge) = fillred<<deSimone::oneCell, 10>>(_v1, request);
10>>(_deSimone::cell_accu{token=new_token;grant=true}, request); _v1 = _deSimone::cell_accu{token=new_token;grant=true};
tel tel
-- end of node deSimone::deSimone -- end of node deSimone::deSimone
node deSimone::prop1(request:A_bool_10) returns (ok:bool); node deSimone::prop1(request:A_bool_10) returns (ok:bool);
...@@ -17188,9 +17209,10 @@ tel ...@@ -17188,9 +17209,10 @@ tel
node moyenne::moyenne(Tab:A_real_10) returns (moy:real); node moyenne::moyenne(Tab:A_real_10) returns (moy:real);
var var
accu_out:_moyenne::moyenne_accu; accu_out:_moyenne::moyenne_accu;
_v1:_moyenne::moyenne_accu;
let let
accu_out = red<<moyenne::moyenne_step, accu_out = red<<moyenne::moyenne_step, 10>>(_v1, Tab);
10>>(_moyenne::moyenne_accu{sum=0.0;moyenne=0.0;rank=0.0}, Tab); _v1 = _moyenne::moyenne_accu{sum=0.0;moyenne=0.0;rank=0.0};
moy = accu_out.moyenne; moy = accu_out.moyenne;
tel tel
-- end of node moyenne::moyenne -- end of node moyenne::moyenne
...@@ -18299,44 +18321,49 @@ var ...@@ -18299,44 +18321,49 @@ var
accu_out_exchange:_triSel::Exchange_accu; accu_out_exchange:_triSel::Exchange_accu;
localTab:A_int_50; localTab:A_int_50;
_v1:int; _v1:int;
_v2:A_int_50; _v2:_triSel::MinFR_accu;
_v3:int; _v3:A_int_50;
_v4:A_int_50; _v4:int;
_v5:_triSel::Select_accu;
_v6:A_int_50;
_v10:int;
_v9:int;
_v8:int; _v8:int;
_v7:int; _v7:int;
_v6:int; _v11:_triSel::Exchange_accu;
_v5:int; _v12:A_int_50;
_v9:A_int_50; _v13:int;
_v10:int; _v14:int;
_v11:int;
let let
accu_out_min = red<<triSel::minFromRank, accu_out_min = red<<triSel::minFromRank, 50>>(_v2, _v3);
50>>(_triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=_v1;Rank=0}, _v2);
_v1 = accu_in.CurrentRank; _v1 = accu_in.CurrentRank;
_v2 = accu_in.Tab; _v2 = _triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=_v1;Rank=0};
accu_out_select = red<<triSel::select, _v3 = accu_in.Tab;
50>>(_triSel::Select_accu{RankToFind=_v3;CurrentRank=0;Val=0}, _v4); accu_out_select = red<<triSel::select, 50>>(_v5, _v6);
_v3 = accu_in.CurrentRank; _v4 = accu_in.CurrentRank;
_v4 = accu_in.Tab; _v5 = _triSel::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0};
(accu_out_exchange, localTab) = fillred<<triSel::Exchange_i_j, _v6 = accu_in.Tab;
50>>(_triSel::Exchange_accu{MinVal=_v5;MinRank=_v6;RankFrom=_v7;CurrentVal=_v8;Rank=0}, (accu_out_exchange, localTab) = fillred<<triSel::Exchange_i_j, 50>>(_v11,
_v9); _v12);
_v8 = accu_out_select.Val; _v10 = accu_out_select.Val;
_v7 = accu_out_select.RankToFind; _v9 = accu_out_select.RankToFind;
_v6 = accu_out_min.MinRank; _v8 = accu_out_min.MinRank;
_v5 = accu_out_min.MinVal; _v7 = accu_out_min.MinVal;
_v9 = accu_in.Tab; _v11 =
accu_out = _triSel::Sort_accu{CurrentRank=_v11;Tab=localTab}; _triSel::Exchange_accu{MinVal=_v7;MinRank=_v8;RankFrom=_v9;CurrentVal=_v10;Rank=0};
_v10 = accu_in.CurrentRank; _v12 = accu_in.Tab;
_v11 = _v10 + 1; accu_out = _triSel::Sort_accu{CurrentRank=_v14;Tab=localTab};
_v13 = accu_in.CurrentRank;
_v14 = _v13 + 1;
tel tel
-- end of node triSel::UnarySort -- end of node triSel::UnarySort
node triSel::triSel(TIn:A_int_50) returns (TSorted:A_int_50); node triSel::triSel(TIn:A_int_50) returns (TSorted:A_int_50);
var var
UnarySort_accu_out:_triSel::Sort_accu; UnarySort_accu_out:_triSel::Sort_accu;
_v1:_triSel::Sort_accu;
let let
UnarySort_accu_out = red<<triSel::UnarySort, UnarySort_accu_out = red<<triSel::UnarySort, 50>>(_v1, TIn);
50>>(_triSel::Sort_accu{CurrentRank=0;Tab=TIn}, TIn); _v1 = _triSel::Sort_accu{CurrentRank=0;Tab=TIn};
TSorted = UnarySort_accu_out.Tab; TSorted = UnarySort_accu_out.Tab;
tel tel
-- end of node triSel::triSel -- end of node triSel::triSel
...@@ -18363,10 +18390,11 @@ node triSel::Sorted(TIn:A_int_50) returns (ok:bool); ...@@ -18363,10 +18390,11 @@ node triSel::Sorted(TIn:A_int_50) returns (ok:bool);
var var
accu_out:_triSel::sorted_iter_accu; accu_out:_triSel::sorted_iter_accu;
TSorted:A_int_50; TSorted:A_int_50;
_v1:_triSel::sorted_iter_accu;
let let
TSorted = triSel::triSel(TIn); TSorted = triSel::triSel(TIn);
accu_out = red<<triSel::sorted_iter, accu_out = red<<triSel::sorted_iter, 50>>(_v1, TSorted);
50>>(_triSel::sorted_iter_accu{prev_elt=0;prop_is_tt=true}, TSorted); _v1 = _triSel::sorted_iter_accu{prev_elt=0;prop_is_tt=true};
ok = accu_out.prop_is_tt; ok = accu_out.prop_is_tt;
tel tel
-- end of node triSel::Sorted -- end of node triSel::Sorted
...@@ -18461,10 +18489,12 @@ returns ( ...@@ -18461,10 +18489,12 @@ returns (
elementSelected:int); elementSelected:int);
var var
iterationResult:_contractForElementSelectionInArray::iteratedStruct; iterationResult:_contractForElementSelectionInArray::iteratedStruct;
_v1:_contractForElementSelectionInArray::iteratedStruct;
let let
iterationResult = red<<contractForElementSelectionInArray::selectOneStage, iterationResult = red<<contractForElementSelectionInArray::selectOneStage,
10>>(_contractForElementSelectionInArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=0}, 10>>(_v1, array);
array); _v1 =
_contractForElementSelectionInArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=0};
elementSelected = iterationResult.elementSelected; elementSelected = iterationResult.elementSelected;
tel tel
-- end of node contractForElementSelectionInArray::selectEltInArray -- end of node contractForElementSelectionInArray::selectEltInArray
...@@ -18523,9 +18553,10 @@ returns ( ...@@ -18523,9 +18553,10 @@ returns (
iselementof:bool); iselementof:bool);
var var
acc_out:_intArray::T_isElementOf_; acc_out:_intArray::T_isElementOf_;
_v1:_intArray::T_isElementOf_;
let let
acc_out = red<<intArray::iterated_isElementOf_, acc_out = red<<intArray::iterated_isElementOf_, 10>>(_v1, t);
10>>(_intArray::T_isElementOf_{eltToSearch=e;iselementof=false}, t); _v1 = _intArray::T_isElementOf_{eltToSearch=e;iselementof=false};
iselementof = acc_out.iselementof; iselementof = acc_out.iselementof;
tel tel
-- end of node intArray::_isElementOf_ -- end of node intArray::_isElementOf_
...@@ -18568,11 +18599,11 @@ returns ( ...@@ -18568,11 +18599,11 @@ returns (
var var
result:_intArray::forSortingAlgo; result:_intArray::forSortingAlgo;
_v1:int; _v1:int;
_v2:_intArray::forSortingAlgo;
let let
result = red<<intArray::isLocallyLoselySorted, result = red<<intArray::isLocallyLoselySorted, 10>>(_v2, array);
10>>(_intArray::forSortingAlgo{previousElement=_v1;sortedUpToHere=true},
array);
_v1 = array[0]; _v1 = array[0];
_v2 = _intArray::forSortingAlgo{previousElement=_v1;sortedUpToHere=true};
array_isLoselySorted = result.sortedUpToHere; array_isLoselySorted = result.sortedUpToHere;
tel tel
-- end of node intArray::_isLoselySorted -- end of node intArray::_isLoselySorted
...@@ -18728,45 +18759,50 @@ var ...@@ -18728,45 +18759,50 @@ var
localTab:A_int_10; localTab:A_int_10;
_v2:int; _v2:int;
_v1:int; _v1:int;
_v3:A_int_10; _v3:_intArray::MinFR_accu;
_v4:int; _v4:A_int_10;
_v5:A_int_10; _v5:int;
_v6:_intArray::Select_accu;
_v7:A_int_10;
_v11:int;
_v10:int;
_v9:int; _v9:int;
_v8:int; _v8:int;
_v7:int; _v12:_intArray::Exchange_accu;
_v6:int; _v13:A_int_10;
_v10:A_int_10; _v14:int;
_v11:int; _v15:int;
_v12:int;
let let
accu_out_min = red<<intArray::minFromRank, accu_out_min = red<<intArray::minFromRank, 10>>(_v3, _v4);
10>>(_intArray::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3);
_v2 = accu_in.CurrentRank; _v2 = accu_in.CurrentRank;
_v1 = accu_in.CurrentRank; _v1 = accu_in.CurrentRank;
_v3 = accu_in.Tab; _v3 = _intArray::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0};
accu_out_select = red<<intArray::select, _v4 = accu_in.Tab;
10>>(_intArray::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5); accu_out_select = red<<intArray::select, 10>>(_v6, _v7);
_v4 = accu_in.CurrentRank; _v5 = accu_in.CurrentRank;
_v5 = accu_in.Tab; _v6 = _intArray::Select_accu{RankToFind=_v5;CurrentRank=0;Val=0};
_v7 = accu_in.Tab;
(accu_out_exchange, localTab) = fillred<<intArray::Exchange_i_j, (accu_out_exchange, localTab) = fillred<<intArray::Exchange_i_j,
10>>(_intArray::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0}, 10>>(_v12, _v13);
_v10); _v11 = accu_out_select.Val;
_v9 = accu_out_select.Val; _v10 = accu_out_select.RankToFind;
_v8 = accu_out_select.RankToFind; _v9 = accu_out_min.MinRank;
_v7 = accu_out_min.MinRank; _v8 = accu_out_min.MinVal;
_v6 = accu_out_min.MinVal; _v12 =
_v10 = accu_in.Tab; _intArray::Exchange_accu{MinVal=_v8;MinRank=_v9;RankFrom=_v10;CurrentVal=_v11;Rank=0};
accu_out = _intArray::Sort_accu{CurrentRank=_v12;Tab=localTab}; _v13 = accu_in.Tab;
_v11 = accu_in.CurrentRank; accu_out = _intArray::Sort_accu{CurrentRank=_v15;Tab=localTab};
_v12 = _v11 + 1; _v14 = accu_in.CurrentRank;
_v15 = _v14 + 1;
tel tel
-- end of node intArray::UnarySort -- end of node intArray::UnarySort
node intArray::sort_(array:A_int_10) returns (arraySorted:A_int_10); node intArray::sort_(array:A_int_10) returns (arraySorted:A_int_10);
var var
UnarySort_accu_out:_intArray::Sort_accu; UnarySort_accu_out:_intArray::Sort_accu;
_v1:_intArray::Sort_accu;
let let
UnarySort_accu_out = red<<intArray::UnarySort, UnarySort_accu_out = red<<intArray::UnarySort, 10>>(_v1, array);
10>>(_intArray::Sort_accu{CurrentRank=0;Tab=array}, array); _v1 = _intArray::Sort_accu{CurrentRank=0;Tab=array};
arraySorted = UnarySort_accu_out.Tab; arraySorted = UnarySort_accu_out.Tab;
tel tel
-- end of node intArray::sort_ -- end of node intArray::sort_
...@@ -18828,11 +18864,12 @@ returns ( ...@@ -18828,11 +18864,12 @@ returns (
var var
iterationResult:_intArray::iteratedStruct; iterationResult:_intArray::iteratedStruct;
_v1:int; _v1:int;
_v2:_intArray::iteratedStruct;
let let
iterationResult = red<<intArray::selectOneStage, iterationResult = red<<intArray::selectOneStage, 10>>(_v2, array);
10>>(_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1},
array);
_v1 = array[0]; _v1 = array[0];
_v2 =
_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1};
elementSelected = iterationResult.elementSelected; elementSelected = iterationResult.elementSelected;
tel tel
-- end of node intArray::selectElementOfRank_inArray_ -- end of node intArray::selectElementOfRank_inArray_
...@@ -18899,11 +18936,12 @@ returns ( ...@@ -18899,11 +18936,12 @@ returns (
var var
local:_intArray::currentRank_withMemorizedRank; local:_intArray::currentRank_withMemorizedRank;
_v1:int; _v1:int;
_v2:_intArray::currentRank_withMemorizedRank;
let let
local = red<<intArray::selectMaxRank, local = red<<intArray::selectMaxRank, 10>>(_v2, array);
10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=_v1},
array);
_v1 = array[0]; _v1 = array[0];
_v2 =
_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=_v1};
rankOfMaximumElement = local.rankOfMemorizedVal; rankOfMaximumElement = local.rankOfMemorizedVal;
tel tel
-- end of node intArray::getRank_ofMaximumIn_ -- end of node intArray::getRank_ofMaximumIn_
...@@ -18943,12 +18981,13 @@ returns ( ...@@ -18943,12 +18981,13 @@ returns (
var var
minElement:int; minElement:int;
_v1:_intArray::currentRank_withMemorizedRank; _v1:_intArray::currentRank_withMemorizedRank;
_v2:_intArray::currentRank_withMemorizedRank;
let let
minElement = intArray::getMinimumIn_(array); minElement = intArray::getMinimumIn_(array);
rankOfMinimumElement = _v1.rankOfMemorizedVal; rankOfMinimumElement = _v2.rankOfMemorizedVal;
_v1 = red<<intArray::selectMinRank, _v1 =
10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=minElement}, _intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=minElement};
array); _v2 = red<<intArray::selectMinRank, 10>>(_v1, array);
tel tel
-- end of node intArray::getRank_ofMinimumIn_ -- end of node intArray::getRank_ofMinimumIn_
...@@ -19149,49 +19188,54 @@ var ...@@ -19149,49 +19188,54 @@ var
localTab:A_int_10; localTab:A_int_10;
_v2:int; _v2:int;
_v1:int; _v1:int;
_v3:A_int_10; _v3:_tri::MinFR_accu;
_v4:int; _v4:A_int_10;
_v5:A_int_10; _v5:int;
_v6:_tri::Select_accu;
_v7:A_int_10;
_v11:int;
_v10:int;
_v9:int; _v9:int;
_v8:int; _v8:int;
_v7:int; _v12:_tri::Exchange_accu;
_v6:int; _v13:A_int_10;
_v10:A_int_10; _v14:int;
_v11:int; _v15:int;
_v12:int;
let let
accu_out_min = red<<tri::minFromRank, accu_out_min = red<<tri::minFromRank, 10>>(_v3, _v4);
10>>(_tri::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3);
_v2 = accu_in.CurrentRank; _v2 = accu_in.CurrentRank;
_v1 = accu_in.CurrentRank; _v1 = accu_in.CurrentRank;
_v3 = accu_in.Tab; _v3 = _tri::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0};
accu_out_select = red<<tri::select, _v4 = accu_in.Tab;
10>>(_tri::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5); accu_out_select = red<<tri::select, 10>>(_v6, _v7);
_v4 = accu_in.CurrentRank; _v5 = accu_in.CurrentRank;
_v5 = accu_in.Tab; _v6 = _tri::Select_accu{RankToFind=_v5;CurrentRank=0;Val=0};
(accu_out_exchange, localTab) = fillred<<tri::Exchange_i_j, _v7 = accu_in.Tab;
10>>(_tri::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0}, (accu_out_exchange, localTab) = fillred<<tri::Exchange_i_j, 10>>(_v12,
_v10); _v13);
_v9 = accu_out_select.Val; _v11 = accu_out_select.Val;
_v8 = accu_out_select.RankToFind; _v10 = accu_out_select.RankToFind;
_v7 = accu_out_min.MinRank; _v9 = accu_out_min.MinRank;
_v6 = accu_out_min.MinVal; _v8 = accu_out_min.MinVal;
_v10 = accu_in.Tab; _v12 =
accu_out = _tri::Sort_accu{CurrentRank=_v12;Tab=localTab}; _tri::Exchange_accu{MinVal=_v8;MinRank=_v9;RankFrom=_v10;CurrentVal=_v11;Rank=0};
_v11 = accu_in.CurrentRank; _v13 = accu_in.Tab;
_v12 = _v11 + 1; accu_out = _tri::Sort_accu{CurrentRank=_v15;Tab=localTab};
_v14 = accu_in.CurrentRank;
_v15 = _v14 + 1;
tel tel
-- end of node tri::UnarySort -- end of node tri::UnarySort
node tri::main(TIn:A_int_10) returns (TSorted:A_int_10); node tri::main(TIn:A_int_10) returns (TSorted:A_int_10);
var var
UnarySort_accu_out:_tri::Sort_accu; UnarySort_accu_out:_tri::Sort_accu;
_v1:A_int_10; _v1:A_int_10;
_v2:A_int_10; _v2:_tri::Sort_accu;
_v3:A_int_10;
let let
UnarySort_accu_out = red<<tri::UnarySort, UnarySort_accu_out = red<<tri::UnarySort, 10>>(_v2, _v3);
10>>(_tri::Sort_accu{CurrentRank=0;Tab=_v1}, _v2);
_v1 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7]; _v1 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7];
_v2 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7]; _v2 = _tri::Sort_accu{CurrentRank=0;Tab=_v1};
_v3 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7];
TSorted = UnarySort_accu_out.Tab; TSorted = UnarySort_accu_out.Tab;
tel tel
-- end of node tri::main -- end of node tri::main
...@@ -19218,10 +19262,11 @@ node tri::Sorted(TIn:A_int_10) returns (res:bool); ...@@ -19218,10 +19262,11 @@ node tri::Sorted(TIn:A_int_10) returns (res:bool);
var var
accu_out:_tri::sorted_iter_accu; accu_out:_tri::sorted_iter_accu;
TSorted:A_int_10; TSorted:A_int_10;
_v1:_tri::sorted_iter_accu;
let let
TSorted = tri::main(TIn); TSorted = tri::main(TIn);
accu_out = red<<tri::sorted_iter, accu_out = red<<tri::sorted_iter, 10>>(_v1, TSorted);
10>>(_tri::sorted_iter_accu{prev_elt=0;prop_is_tt=true}, TSorted); _v1 = _tri::sorted_iter_accu{prev_elt=0;prop_is_tt=true};
res = accu_out.prop_is_tt; res = accu_out.prop_is_tt;
tel tel
-- end of node tri::Sorted -- end of node tri::Sorted
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment