diff --git a/src/split.ml b/src/split.ml index 24ea759b55c20e754e0ef60cfae48740f5dd1f30..796121e1f13ffac95a2f1c74f884d56ff89b0ea7 100644 --- a/src/split.ml +++ b/src/split.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 04/11/2008 (at 16:48) by Erwan Jahier> *) +(** Time-stamp: <modified the 04/11/2008 (at 16:59) by Erwan Jahier> *) open Lxm @@ -137,8 +137,18 @@ and (split_val_exp : bool -> Eff.val_exp -> Eff.val_exp * split_acc) = (* We do not create an intermediary variable for those *) -> ve, ([],[]) - | CallByNameEff (_by_name_op_eff, _fl) -> - ve, ([],[]) (* but what about that one ??? *) + | CallByNameEff (by_name_op_eff, fl) -> + let fl, eql, vl = + List.fold_left + (fun (fl_acc, eql_acc, vl_acc) (fn, fv) -> + let fv, (eql, vl) = split_val_exp false fv in + ((fn,fv)::fl_acc, eql@eql_acc, vl@vl_acc) + ) + ([],[],[]) + fl + in + CallByNameEff (by_name_op_eff, List.rev fl), (eql, vl) + | CallByPosEff(by_pos_op_eff, OperEff vel) -> (* recursively split the arguments *) diff --git a/src/test/test.res.exp b/src/test/test.res.exp index 7b53623a8abb8b5f8bb63725a1b55a8e03734958..06f5a53c689d3bbb43ec3e7201435c222b783e60 100644 --- a/src/test/test.res.exp +++ b/src/test/test.res.exp @@ -8285,6 +8285,8 @@ tel Opening file should_work/Pascal/left.lus type _left::truc = struct {a : A_bool_100; b : int}; node left::toto(x:bool) returns (t:A__left::truc_3); +var + _v1:A_bool_100; let 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; @@ -8292,7 +8294,8 @@ let t[0].a[1 .. 99 step 2][1] = true; t[0].a[5 .. 99 step 2] = false^48; t[0].b = 42; - t[1 .. 2] = _left::truc{a=true^100;b=0}^2; + t[1 .. 2] = _left::truc{a=_v1;b=0}^2; + _v1 = true^100; tel -- end of node left::toto -- automatically defined aliases: @@ -9631,8 +9634,21 @@ node struct::plus( b:_struct::complex) returns ( c:_struct::complex); +var + _v4:real; + _v5:real; + _v6:real; + _v1:real; + _v2:real; + _v3:real; let - c = _struct::complex{re=a.re + b.re;im=a.im + b.im}; + c = _struct::complex{re=_v3;im=_v6}; + _v4 = a.im; + _v5 = b.im; + _v6 = _v4 + _v5; + _v1 = a.re; + _v2 = b.re; + _v3 = _v1 + _v2; tel -- end of node struct::plus @@ -10587,18 +10603,26 @@ returns ( acc_out:_Gyroscope2::CFF_Eltstruct; elt_out:_Gyroscope2::Valid_ChannelT); var + _v4:_Gyroscope2::Valid_ChannelT; + _v3:int; _v1:int; _v2:int; - _v3:bool; - _v4:_Gyroscope2::Valid_ChannelT; + _v5:int; + _v6:int; + _v7:bool; + _v8:_Gyroscope2::Valid_ChannelT; let - acc_out = _Gyroscope2::CFF_Eltstruct{indx=acc_in.indx + - 1;indx_toChange=acc_in.indx_toChange;value=acc_in.value}; - elt_out = if _v3 then _v4 else elt_in; - _v1 = acc_in.indx; - _v2 = acc_in.indx_toChange; - _v3 = _v1 = _v2; + acc_out = + _Gyroscope2::CFF_Eltstruct{indx=_v2;indx_toChange=_v3;value=_v4}; _v4 = acc_in.value; + _v3 = acc_in.indx_toChange; + _v1 = acc_in.indx; + _v2 = _v1 + 1; + elt_out = if _v7 then _v8 else elt_in; + _v5 = acc_in.indx; + _v6 = acc_in.indx_toChange; + _v7 = _v5 = _v6; + _v8 = acc_in.value; tel -- end of node Gyroscope2::addOneChannelIter @@ -10622,12 +10646,32 @@ node Gyroscope2::CFC_iter( currentChannel:_Gyroscope2::Valid_ChannelT) returns ( structOut:_Gyroscope2::CFF_struct); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:A__Gyroscope2::Valid_ChannelT_3; + _v8:int; + _v9:A__Gyroscope2::Valid_ChannelT_3; + _v10:A__Gyroscope2::Valid_ChannelT_3; + _v11:A__Gyroscope2::Valid_ChannelT_3; + _v3:int; + _v1:int; + _v2:int; let - structOut = _Gyroscope2::CFF_struct{indx=structIn.indx + - 1;indx_toChange=structIn.indx_toChange;tabToFill= if structIn.indx_toChange - = structIn.indx then structIn.tabToFill else - Gyroscope2::addOneChannel(structIn.indx, currentChannel, - structIn.tabToFill)}; + structOut = + _Gyroscope2::CFF_struct{indx=_v2;indx_toChange=_v3;tabToFill=_v11}; + _v4 = structIn.indx_toChange; + _v5 = structIn.indx; + _v6 = _v4 = _v5; + _v7 = structIn.tabToFill; + _v8 = structIn.indx; + _v9 = structIn.tabToFill; + _v10 = Gyroscope2::addOneChannel(_v8, currentChannel, _v9); + _v11 = if _v6 then _v7 else _v10; + _v3 = structIn.indx_toChange; + _v1 = structIn.indx; + _v2 = _v1 + 1; tel -- end of node Gyroscope2::CFC_iter @@ -10639,12 +10683,14 @@ returns ( var acc_out:_Gyroscope2::CFF_struct; localtabToFill:_Gyroscope2::Valid_ChannelT; + _v1:A__Gyroscope2::Valid_ChannelT_3; let localtabToFill = _Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0}; acc_out = red<<Gyroscope2::CFC_iter, - 4>>(_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=localtabToFill^3}, + 4>>(_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=_v1}, allChannels); + _v1 = localtabToFill^3; foreignChannels = acc_out.tabToFill; tel -- end of node Gyroscope2::ComputeForeignChannels @@ -10786,16 +10832,50 @@ returns ( outChannel:_Gyroscope2::Valid_ChannelT); var localChannel:_Gyroscope2::Valid_ChannelT; + _v6:real; + _v7:real; + _v8:real; + _v9:real; + _v10:bool; + _v11:real; + _v12:real; + _v13:real; + _v14:real; + _v15:real; + _v1:real; + _v2:real; + _v3:real; + _v4:real; + _v5:bool; + _v19:real; + _v16:bool; + _v17:bool; + _v18:bool; let localChannel = - _Gyroscope2::Valid_ChannelT{local_failure=Gyroscope2::abs(inChannel.valuea - - inChannel.valueb) > delta;local_value= if - Gyroscope2::abs(inChannel.valuea - inChannel.valueb) > delta then 0.0 else - inChannel.valuea + inChannel.valueb / 2.0}; + _Gyroscope2::Valid_ChannelT{local_failure=_v5;local_value=_v15}; + _v6 = inChannel.valuea; + _v7 = inChannel.valueb; + _v8 = _v6 - _v7; + _v9 = Gyroscope2::abs(_v8); + _v10 = _v9 > delta; + _v11 = inChannel.valuea; + _v12 = inChannel.valueb; + _v13 = _v11 + _v12; + _v14 = _v13 / 2.0; + _v15 = if _v10 then 0.0 else _v14; + _v1 = inChannel.valuea; + _v2 = inChannel.valueb; + _v3 = _v1 - _v2; + _v4 = Gyroscope2::abs(_v3); + _v5 = _v4 > delta; outChannel = - _Gyroscope2::Valid_ChannelT{local_failure=localChannel.local_failure or - Gyroscope2::CrossFailDetect(nbInChannel, localChannel, - previousOutChannel);local_value=localChannel.local_value}; + _Gyroscope2::Valid_ChannelT{local_failure=_v18;local_value=_v19}; + _v19 = localChannel.local_value; + _v16 = localChannel.local_failure; + _v17 = Gyroscope2::CrossFailDetect(nbInChannel, localChannel, + previousOutChannel); + _v18 = _v16 or _v17; nextOutChannel = previousOutChannel; tel -- end of node Gyroscope2::Channel @@ -12813,32 +12893,34 @@ type _morel4::arrayi = A_int_2^3; node morel4::mcmorel(i:int) returns (t:A_int_2); var yo:_morel4::toto; - _v1:_morel4::tube; - _v2:int; - _v3:_morel4::tube; - _v4:int; - _v5:A_int_2; - _v6:int; + _v1:int; + _v2:_morel4::tube; + _v3:int; + _v4:_morel4::tube; + _v5:int; + _v6:A_int_2; _v7:int; _v8:int; _v9:int; _v10:int; - _v11:A_int_2; + _v11:int; + _v12:A_int_2; let - yo.titi = _morel4::tube{in=i;out=i + 1}; + yo.titi = _morel4::tube{in=i;out=_v1}; + _v1 = i + 1; yo.tutu = true; - t = _v5 -> _v11; - _v1 = yo.titi; - _v2 = _v1.in; - _v3 = yo.titi; - _v4 = _v3.out; - _v5 = [_v2, _v4]; - _v6 = t[0]; - _v7 = pre _v6; - _v8 = _v7 + 1; - _v9 = t[1]; - _v10 = pre _v9; - _v11 = [_v8, _v10]; + t = _v6 -> _v12; + _v2 = yo.titi; + _v3 = _v2.in; + _v4 = yo.titi; + _v5 = _v4.out; + _v6 = [_v3, _v5]; + _v7 = t[0]; + _v8 = pre _v7; + _v9 = _v8 + 1; + _v10 = t[1]; + _v11 = pre _v10; + _v12 = [_v9, _v11]; tel -- end of node morel4::mcmorel @@ -13028,37 +13110,39 @@ tel node morel5::mcmorel(i:int) returns (t:A_int_2; u:A_A_int_2_2); var yo:_morel5::toto; - _v1:_morel5::tube; - _v2:int; - _v3:_morel5::tube; - _v4:int; - _v5:A_int_2; - _v6:int; + _v1:int; + _v2:_morel5::tube; + _v3:int; + _v4:_morel5::tube; + _v5:int; + _v6:A_int_2; _v7:int; _v8:int; _v9:int; _v10:int; - _v11:A_int_2; + _v11:int; _v12:A_int_2; _v13:A_int_2; + _v14:A_int_2; let - yo.titi = _morel5::tube{in=i;out=i + 1}; + yo.titi = _morel5::tube{in=i;out=_v1}; + _v1 = i + 1; yo.tutu = true; - t = _v5 -> _v11; - _v1 = yo.titi; - _v2 = _v1.in; - _v3 = yo.titi; - _v4 = _v3.out; - _v5 = [_v2, _v4]; - _v6 = t[0]; - _v7 = pre _v6; - _v8 = _v7 + 1; - _v9 = t[1]; - _v10 = pre _v9; - _v11 = [_v8, _v10]; - u = [_v12, _v13]; - _v12 = [10, 100]; - _v13 = [1000, 10000]; + t = _v6 -> _v12; + _v2 = yo.titi; + _v3 = _v2.in; + _v4 = yo.titi; + _v5 = _v4.out; + _v6 = [_v3, _v5]; + _v7 = t[0]; + _v8 = pre _v7; + _v9 = _v8 + 1; + _v10 = t[1]; + _v11 = pre _v10; + _v12 = [_v9, _v11]; + u = [_v13, _v14]; + _v13 = [10, 100]; + _v14 = [1000, 10000]; tel -- end of node morel5::mcmorel -- automatically defined aliases: @@ -15752,6 +15836,11 @@ var _v3:real; _v4:real; _v5:bool; + _v6:real; + _v7:real; + _v8:real; + _v9:real; + _v10:real; let maintain = Gyroscope::Maintain(Gyroscope::TIME, _v5); _v1 = inChannel.valuea; @@ -15760,8 +15849,12 @@ let _v4 = Gyroscope::abs(_v3); _v5 = _v4 > delta; outChannel = - _Gyroscope::Valid_ChannelT{local_failure=maintain;local_value= if maintain - then 0.0 else inChannel.valuea + inChannel.valueb / 2.0}; + _Gyroscope::Valid_ChannelT{local_failure=maintain;local_value=_v10}; + _v6 = inChannel.valuea; + _v7 = inChannel.valueb; + _v8 = _v6 + _v7; + _v9 = _v8 / 2.0; + _v10 = if maintain then 0.0 else _v9; tel -- end of node Gyroscope::Channel @@ -16044,10 +16137,19 @@ node produitBool::iterated_isElementOf_( elt_in:bool) returns ( acc_out:_produitBool::T_isElementOf_); +var + _v2:bool; + _v3:bool; + _v4:bool; + _v5:bool; + _v1:bool; let - acc_out = - _produitBool::T_isElementOf_{eltToSearch=acc_in.eltToSearch;iselementof=acc_in.iselementof - or acc_in.eltToSearch = elt_in}; + acc_out = _produitBool::T_isElementOf_{eltToSearch=_v1;iselementof=_v5}; + _v2 = acc_in.iselementof; + _v3 = acc_in.eltToSearch; + _v4 = _v3 = elt_in; + _v5 = _v2 or _v4; + _v1 = acc_in.eltToSearch; tel -- end of node produitBool::iterated_isElementOf_ @@ -16070,10 +16172,26 @@ node produitBool::selectOneStage( currentElt:bool) returns ( acc_out:_produitBool::iteratedStruct); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:bool; + _v8:bool; + _v3:int; + _v1:int; + _v2:int; let - acc_out = _produitBool::iteratedStruct{currentRank=acc_in.currentRank + - 1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank = - acc_in.rankToSelect then currentElt else acc_in.elementSelected}; + acc_out = + _produitBool::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8}; + _v4 = acc_in.currentRank; + _v5 = acc_in.rankToSelect; + _v6 = _v4 = _v5; + _v7 = acc_in.elementSelected; + _v8 = if _v6 then currentElt else _v7; + _v3 = acc_in.rankToSelect; + _v1 = acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node produitBool::selectOneStage @@ -16084,10 +16202,12 @@ returns ( elementSelected:bool); var iterationResult:_produitBool::iteratedStruct; + _v1:bool; let iterationResult = red<<produitBool::selectOneStage, - 10>>(_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=array[0]}, + 10>>(_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1}, array); + _v1 = array[0]; elementSelected = iterationResult.elementSelected; tel -- end of node produitBool::selectElementOfRank_inArray_ @@ -16098,37 +16218,44 @@ returns ( acc_out:_produitBool::Tacc_inShift2; elt_out:bool); var - _v1:int; - _v2:int; - _v3:bool; + _v3:int; _v4:int; + _v2:int; + _v1:A_bool_10; _v5:int; _v6:int; _v7:bool; - _v8:bool; + _v8:int; _v9:int; _v10:int; - _v11:int; - _v12:A_bool_10; - _v13:bool; + _v11:bool; + _v12:bool; + _v13:int; + _v14:int; + _v15:int; + _v16:A_bool_10; + _v17:bool; let acc_out = - _produitBool::Tacc_inShift2{multiplieur=acc_in.multiplieur;rank=acc_in.rank;actual_rank=acc_in.actual_rank - + 1}; - elt_out = if _v8 then _v13 else false; - _v1 = acc_in.actual_rank; + _produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=_v4}; + _v3 = acc_in.actual_rank; + _v4 = _v3 + 1; _v2 = acc_in.rank; - _v3 = _v1 >= _v2; - _v4 = acc_in.actual_rank; - _v5 = acc_in.rank; - _v6 = _v5 + produitBool::size; - _v7 = _v4 < _v6; - _v8 = _v3 and _v7; - _v9 = acc_in.actual_rank; - _v10 = acc_in.rank; - _v11 = _v9 - _v10; - _v12 = acc_in.multiplieur; - _v13 = produitBool::selectElementOfRank_inArray_(_v11, _v12); + _v1 = acc_in.multiplieur; + elt_out = if _v12 then _v17 else false; + _v5 = acc_in.actual_rank; + _v6 = acc_in.rank; + _v7 = _v5 >= _v6; + _v8 = acc_in.actual_rank; + _v9 = acc_in.rank; + _v10 = _v9 + produitBool::size; + _v11 = _v8 < _v10; + _v12 = _v7 and _v11; + _v13 = acc_in.actual_rank; + _v14 = acc_in.rank; + _v15 = _v13 - _v14; + _v16 = acc_in.multiplieur; + _v17 = produitBool::selectElementOfRank_inArray_(_v15, _v16); tel -- end of node produitBool::shiftFill @@ -16138,9 +16265,13 @@ returns ( ligne:A_bool_20); var bidon:_produitBool::Tacc_inShift2; + _v2:int; + _v1:A_bool_10; let (bidon, ligne) = fill<<produitBool::shiftFill, - 20>>(_produitBool::Tacc_inShift2{multiplieur=acc_in.multiplieur;rank=acc_in.rank;actual_rank=0}); + 20>>(_produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=0}); + _v2 = acc_in.rank; + _v1 = acc_in.multiplieur; tel -- end of node produitBool::shift @@ -16201,11 +16332,26 @@ node shiftFill_ludic::n_selectOneStage( i_currentElt:bool) returns ( o_acc_out:_shiftFill_ludic::T3_STRUCT); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:bool; + _v8:bool; + _v3:int; + _v1:int; + _v2:int; let - o_acc_out = _shiftFill_ludic::T3_STRUCT{currentRank=i_acc_in.currentRank + - 1;rankToSelect=i_acc_in.rankToSelect;elementSelected= if - i_acc_in.currentRank = i_acc_in.rankToSelect then i_currentElt else - i_acc_in.elementSelected}; + o_acc_out = + _shiftFill_ludic::T3_STRUCT{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8}; + _v4 = i_acc_in.currentRank; + _v5 = i_acc_in.rankToSelect; + _v6 = _v4 = _v5; + _v7 = i_acc_in.elementSelected; + _v8 = if _v6 then i_currentElt else _v7; + _v3 = i_acc_in.rankToSelect; + _v1 = i_acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node shiftFill_ludic::n_selectOneStage @@ -16216,10 +16362,12 @@ returns ( o_elementSelected:bool); var v_iterationResult:_shiftFill_ludic::T3_STRUCT; + _v1:bool; let v_iterationResult = red<<shiftFill_ludic::n_selectOneStage, - 10>>(_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=i_array[0]}, + 10>>(_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1}, i_array); + _v1 = i_array[0]; o_elementSelected = v_iterationResult.elementSelected; tel -- end of node shiftFill_ludic::n_selectElementOfRank_inArray_ @@ -16230,33 +16378,40 @@ returns ( o_acc_out:_shiftFill_ludic::T2_STRUCT; o_elt_out:bool); var - _v1:int; - _v2:int; - _v3:bool; + _v3:int; _v4:int; + _v2:int; + _v1:A_bool_10; _v5:int; _v6:int; _v7:bool; - _v8:bool; + _v8:int; _v9:int; - _v10:A_bool_10; + _v10:int; _v11:bool; + _v12:bool; + _v13:int; + _v14:A_bool_10; + _v15:bool; let o_acc_out = - _shiftFill_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=i_acc_in.actual_rank - + 1}; - o_elt_out = if _v8 then _v11 else false; - _v1 = i_acc_in.actual_rank; + _shiftFill_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=_v4}; + _v3 = i_acc_in.actual_rank; + _v4 = _v3 + 1; _v2 = i_acc_in.rank; - _v3 = _v1 >= _v2; - _v4 = i_acc_in.actual_rank; - _v5 = i_acc_in.rank; - _v6 = _v5 + shiftFill_ludic::c_size; - _v7 = _v4 < _v6; - _v8 = _v3 and _v7; - _v9 = i_acc_in.actual_rank; - _v10 = i_acc_in.multiplieur; - _v11 = shiftFill_ludic::n_selectElementOfRank_inArray_(_v9, _v10); + _v1 = i_acc_in.multiplieur; + o_elt_out = if _v12 then _v15 else false; + _v5 = i_acc_in.actual_rank; + _v6 = i_acc_in.rank; + _v7 = _v5 >= _v6; + _v8 = i_acc_in.actual_rank; + _v9 = i_acc_in.rank; + _v10 = _v9 + shiftFill_ludic::c_size; + _v11 = _v8 < _v10; + _v12 = _v7 and _v11; + _v13 = i_acc_in.actual_rank; + _v14 = i_acc_in.multiplieur; + _v15 = shiftFill_ludic::n_selectElementOfRank_inArray_(_v13, _v14); tel -- end of node shiftFill_ludic::n_shiftFill -- automatically defined aliases: @@ -16284,11 +16439,26 @@ node shift_ludic::n_selectOneStage( i_currentElt:bool) returns ( o_acc_out:_shift_ludic::T4_STRUCT); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:bool; + _v8:bool; + _v3:int; + _v1:int; + _v2:int; let - o_acc_out = _shift_ludic::T4_STRUCT{currentRank=i_acc_in.currentRank + - 1;rankToSelect=i_acc_in.rankToSelect;elementSelected= if - i_acc_in.currentRank = i_acc_in.rankToSelect then i_currentElt else - i_acc_in.elementSelected}; + o_acc_out = + _shift_ludic::T4_STRUCT{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8}; + _v4 = i_acc_in.currentRank; + _v5 = i_acc_in.rankToSelect; + _v6 = _v4 = _v5; + _v7 = i_acc_in.elementSelected; + _v8 = if _v6 then i_currentElt else _v7; + _v3 = i_acc_in.rankToSelect; + _v1 = i_acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node shift_ludic::n_selectOneStage @@ -16299,10 +16469,12 @@ returns ( o_elementSelected:bool); var v_iterationResult:_shift_ludic::T4_STRUCT; + _v1:bool; let v_iterationResult = red<<shift_ludic::n_selectOneStage, - 10>>(_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=i_array[0]}, + 10>>(_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1}, i_array); + _v1 = i_array[0]; o_elementSelected = v_iterationResult.elementSelected; tel -- end of node shift_ludic::n_selectElementOfRank_inArray_ @@ -16313,33 +16485,40 @@ returns ( o_acc_out:_shift_ludic::T2_STRUCT; o_elt_out:bool); var - _v1:int; - _v2:int; - _v3:bool; + _v3:int; _v4:int; + _v2:int; + _v1:A_bool_10; _v5:int; _v6:int; _v7:bool; - _v8:bool; + _v8:int; _v9:int; - _v10:A_bool_10; + _v10:int; _v11:bool; + _v12:bool; + _v13:int; + _v14:A_bool_10; + _v15:bool; let o_acc_out = - _shift_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=i_acc_in.actual_rank - + 1}; - o_elt_out = if _v8 then _v11 else false; - _v1 = i_acc_in.actual_rank; + _shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=_v4}; + _v3 = i_acc_in.actual_rank; + _v4 = _v3 + 1; _v2 = i_acc_in.rank; - _v3 = _v1 >= _v2; - _v4 = i_acc_in.actual_rank; - _v5 = i_acc_in.rank; - _v6 = _v5 + shift_ludic::c_size; - _v7 = _v4 < _v6; - _v8 = _v3 and _v7; - _v9 = i_acc_in.actual_rank; - _v10 = i_acc_in.multiplieur; - _v11 = shift_ludic::n_selectElementOfRank_inArray_(_v9, _v10); + _v1 = i_acc_in.multiplieur; + o_elt_out = if _v12 then _v15 else false; + _v5 = i_acc_in.actual_rank; + _v6 = i_acc_in.rank; + _v7 = _v5 >= _v6; + _v8 = i_acc_in.actual_rank; + _v9 = i_acc_in.rank; + _v10 = _v9 + shift_ludic::c_size; + _v11 = _v8 < _v10; + _v12 = _v7 and _v11; + _v13 = i_acc_in.actual_rank; + _v14 = i_acc_in.multiplieur; + _v15 = shift_ludic::n_selectElementOfRank_inArray_(_v13, _v14); tel -- end of node shift_ludic::n_shiftFill @@ -16349,9 +16528,13 @@ returns ( o_ligne:A_bool_20); var v_bidon:_shift_ludic::T2_STRUCT; + _v2:int; + _v1:A_bool_10; let (v_bidon, o_ligne) = fill<<shift_ludic::n_shiftFill, - 20>>(_shift_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=0}); + 20>>(_shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=0}); + _v2 = i_acc_in.rank; + _v1 = i_acc_in.multiplieur; tel -- end of node shift_ludic::n_shift -- automatically defined aliases: @@ -16525,28 +16708,59 @@ returns ( var _v1:int; _v2:bool; - _v3:int; - _v4:bool; + _v7:int; + _v8:int; + _v6:int; _v5:int; - _v6:bool; - _v7:bool; - _v8:_calculs_max::struct_max; + _v4:int; + _v3:int; + _v9:int; + _v10:bool; + _v11:int; + _v12:bool; + _v13:bool; + _v17:int; + _v18:int; + _v16:int; + _v15:int; + _v14:int; + _v22:int; + _v23:int; + _v21:int; + _v20:int; + _v19:int; + _v24:_calculs_max::struct_max; let strout = if _v2 then - _calculs_max::struct_max{max1=strin.max1;max2=strin.max2;imax1=strin.imax1;imax2=strin.imax2;icourant=strin.icourant - + 1} else _v8; + _calculs_max::struct_max{max1=_v3;max2=_v4;imax1=_v5;imax2=_v6;icourant=_v8} + else _v24; _v1 = strin.max2; _v2 = ecourant <= _v1; - _v3 = strin.max2; - _v4 = ecourant > _v3; - _v5 = strin.max1; - _v6 = ecourant <= _v5; - _v7 = _v4 and _v6; - _v8 = if _v7 then - _calculs_max::struct_max{max1=strin.max1;max2=ecourant;imax1=strin.imax1;imax2=strin.icourant;icourant=strin.icourant - + 1} else - _calculs_max::struct_max{max1=ecourant;max2=strin.max1;imax1=strin.icourant;imax2=strin.imax1;icourant=strin.icourant - + 1}; + _v7 = strin.icourant; + _v8 = _v7 + 1; + _v6 = strin.imax2; + _v5 = strin.imax1; + _v4 = strin.max2; + _v3 = strin.max1; + _v9 = strin.max2; + _v10 = ecourant > _v9; + _v11 = strin.max1; + _v12 = ecourant <= _v11; + _v13 = _v10 and _v12; + _v17 = strin.icourant; + _v18 = _v17 + 1; + _v16 = strin.icourant; + _v15 = strin.imax1; + _v14 = strin.max1; + _v22 = strin.icourant; + _v23 = _v22 + 1; + _v21 = strin.imax1; + _v20 = strin.icourant; + _v19 = strin.max1; + _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 -- end of node calculs_max::max @@ -16556,35 +16770,49 @@ returns ( s_out:_calculs_max::struct_fill_bool; elt:bool); var - _v1:int; - _v2:int; - _v3:bool; + _v3:int; _v4:int; + _v2:int; + _v1:int; _v5:int; - _v6:bool; + _v6:int; + _v7:bool; + _v8:int; + _v9:int; + _v10:bool; let - s_out = - _calculs_max::struct_fill_bool{imax1=s_in.imax1;imax2=s_in.imax2;icourant=s_in.icourant - + 1}; - elt = _v3 or _v6; - _v1 = s_in.icourant; - _v2 = s_in.imax1; - _v3 = _v1 = _v2; - _v4 = s_in.icourant; - _v5 = s_in.imax2; - _v6 = _v4 = _v5; + s_out = _calculs_max::struct_fill_bool{imax1=_v1;imax2=_v2;icourant=_v4}; + _v3 = s_in.icourant; + _v4 = _v3 + 1; + _v2 = s_in.imax2; + _v1 = s_in.imax1; + elt = _v7 or _v10; + _v5 = s_in.icourant; + _v6 = s_in.imax1; + _v7 = _v5 = _v6; + _v8 = s_in.icourant; + _v9 = s_in.imax2; + _v10 = _v8 = _v9; tel -- end of node calculs_max::fill_bool node calculs_max::calculs_max(A:A_int_10) returns (res:A_bool_10); var local_struct:_calculs_max::struct_max; tmp:_calculs_max::struct_fill_bool; + _v2:int; + _v1:int; + _v4:int; + _v3:int; let local_struct = red<<calculs_max::max, - 10>>(_calculs_max::struct_max{max1=0;max2=0;imax1=-1;imax2=-1;icourant=0}, + 10>>(_calculs_max::struct_max{max1=0;max2=0;imax1=_v1;imax2=_v2;icourant=0}, A); + _v2 = -1; + _v1 = -1; (tmp, res) = fill<<calculs_max::fill_bool, - 10>>(_calculs_max::struct_fill_bool{imax1=local_struct.imax1;imax2=local_struct.imax2;icourant=0}); + 10>>(_calculs_max::struct_fill_bool{imax1=_v3;imax2=_v4;icourant=0}); + _v4 = local_struct.imax2; + _v3 = local_struct.imax1; tel -- end of node calculs_max::calculs_max -- automatically defined aliases: @@ -16612,6 +16840,10 @@ var _v5:bool; _v6:bool; _v7:bool; + _v9:bool; + _v10:bool; + _v11:bool; + _v8:bool; let ackout = _v4 and _v7; _v1 = accu_in.token; @@ -16621,8 +16853,11 @@ let _v5 = pre ackout; _v6 = false -> _v5; _v7 = not _v6; - accu_out = _deSimone::cell_accu{token=accu_in.token;grant=not req and - accu_in.grant}; + accu_out = _deSimone::cell_accu{token=_v8;grant=_v11}; + _v9 = not req; + _v10 = accu_in.grant; + _v11 = _v9 and _v10; + _v8 = accu_in.token; tel -- end of node deSimone::oneCell @@ -16921,10 +17156,27 @@ node moyenne::moyenne_step( elt_in:real) returns ( accu_out:_moyenne::moyenne_accu); +var + _v8:real; + _v9:real; + _v3:real; + _v4:real; + _v5:real; + _v6:real; + _v7:real; + _v1:real; + _v2:real; let - accu_out = _moyenne::moyenne_accu{sum=accu_in.sum + - elt_in;moyenne=accu_in.sum + elt_in / accu_in.rank + 1.0;rank=accu_in.rank - + 1.0}; + accu_out = _moyenne::moyenne_accu{sum=_v2;moyenne=_v7;rank=_v9}; + _v8 = accu_in.rank; + _v9 = _v8 + 1.0; + _v3 = accu_in.sum; + _v4 = _v3 + elt_in; + _v5 = accu_in.rank; + _v6 = _v5 + 1.0; + _v7 = _v4 / _v6; + _v1 = accu_in.sum; + _v2 = _v1 + elt_in; tel -- end of node moyenne::moyenne_step node moyenne::moyenne(Tab:A_real_10) returns (moy:real); @@ -17102,9 +17354,13 @@ node normal::extract_info_chg_glob( EntreeGlob:_normal::T_EntreeGlob) returns ( InfoChgGlob:_normal::T_InfoChgGlob); +var + _v1:A_int_20; + _v2:A_int_20; let - InfoChgGlob = _normal::T_InfoChgGlob{chg2gen=map<<normal::id, - 20>>(EntreeGlob.chg2gen)}; + InfoChgGlob = _normal::T_InfoChgGlob{chg2gen=_v2}; + _v1 = EntreeGlob.chg2gen; + _v2 = map<<normal::id, 20>>(_v1); tel -- end of node normal::extract_info_chg_glob @@ -17190,9 +17446,13 @@ node normal::extract_info_gen_glob( EntreeGlob:_normal::T_EntreeGlob) returns ( InfoGenGlob:_normal::T_InfoGenGlob); +var + _v1:A_int_20; + _v2:A_int_20; let - InfoGenGlob = _normal::T_InfoGenGlob{elt_bidon=0;chg2gen=map<<normal::id, - 20>>(EntreeGlob.chg2gen)}; + InfoGenGlob = _normal::T_InfoGenGlob{elt_bidon=0;chg2gen=_v2}; + _v1 = EntreeGlob.chg2gen; + _v2 = map<<normal::id, 20>>(_v1); tel -- end of node normal::extract_info_gen_glob @@ -17669,9 +17929,13 @@ node testSilus::extract_info_chg_glob( EntreeGlob:_testSilus::T_EntreeGlob) returns ( InfoChgGlob:_testSilus::T_InfoChgGlob); +var + _v1:A_int_20; + _v2:A_int_20; let - InfoChgGlob = _testSilus::T_InfoChgGlob{chg2gen=map<<testSilus::id, - 20>>(EntreeGlob.chg2gen)}; + InfoChgGlob = _testSilus::T_InfoChgGlob{chg2gen=_v2}; + _v1 = EntreeGlob.chg2gen; + _v2 = map<<testSilus::id, 20>>(_v1); tel -- end of node testSilus::extract_info_chg_glob @@ -17740,10 +18004,13 @@ node testSilus::extract_info_gen_glob( EntreeGlob:_testSilus::T_EntreeGlob) returns ( InfoGenGlob:_testSilus::T_InfoGenGlob); -let - InfoGenGlob = - _testSilus::T_InfoGenGlob{elt_bidon=0;chg2gen=map<<testSilus::id, - 20>>(EntreeGlob.chg2gen)}; +var + _v1:A_int_20; + _v2:A_int_20; +let + InfoGenGlob = _testSilus::T_InfoGenGlob{elt_bidon=0;chg2gen=_v2}; + _v1 = EntreeGlob.chg2gen; + _v2 = map<<testSilus::id, 20>>(_v1); tel -- end of node testSilus::extract_info_gen_glob @@ -17863,15 +18130,84 @@ node triSel::minFromRank( TabEltIn:int) returns ( accu_out:_triSel::MinFR_accu); +var + _v36:int; + _v37:int; + _v35:int; + _v17:int; + _v18:bool; + _v19:int; + _v20:int; + _v21:bool; + _v22:bool; + _v23:int; + _v24:int; + _v25:int; + _v26:bool; + _v27:int; + _v28:bool; + _v29:int; + _v30:int; + _v31:int; + _v32:int; + _v33:int; + _v34:int; + _v1:int; + _v2:bool; + _v3:int; + _v4:int; + _v5:bool; + _v6:bool; + _v7:int; + _v8:int; + _v9:bool; + _v10:int; + _v11:bool; + _v12:int; + _v13:int; + _v14:int; + _v15:int; + _v16:int; let - accu_out = _triSel::MinFR_accu{MinVal= if accu_in.Rank = 0 or accu_in.Rank - = accu_in.RankFrom then TabEltIn else if accu_in.Rank >= accu_in.RankFrom - then if TabEltIn < accu_in.MinVal then TabEltIn else accu_in.MinVal else - accu_in.MinVal;MinRank= if accu_in.Rank = 0 or accu_in.Rank = - accu_in.RankFrom then accu_in.Rank else if accu_in.Rank >= - accu_in.RankFrom then if TabEltIn < accu_in.MinVal then accu_in.Rank else - accu_in.MinRank else - accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1}; + accu_out = + _triSel::MinFR_accu{MinVal=_v16;MinRank=_v34;RankFrom=_v35;Rank=_v37}; + _v36 = accu_in.Rank; + _v37 = _v36 + 1; + _v35 = accu_in.RankFrom; + _v17 = accu_in.Rank; + _v18 = _v17 = 0; + _v19 = accu_in.Rank; + _v20 = accu_in.RankFrom; + _v21 = _v19 = _v20; + _v22 = _v18 or _v21; + _v23 = accu_in.Rank; + _v24 = accu_in.Rank; + _v25 = accu_in.RankFrom; + _v26 = _v24 >= _v25; + _v27 = accu_in.MinVal; + _v28 = TabEltIn < _v27; + _v29 = accu_in.Rank; + _v30 = accu_in.MinRank; + _v31 = if _v28 then _v29 else _v30; + _v32 = accu_in.MinRank; + _v33 = if _v26 then _v31 else _v32; + _v34 = if _v22 then _v23 else _v33; + _v1 = accu_in.Rank; + _v2 = _v1 = 0; + _v3 = accu_in.Rank; + _v4 = accu_in.RankFrom; + _v5 = _v3 = _v4; + _v6 = _v2 or _v5; + _v7 = accu_in.Rank; + _v8 = accu_in.RankFrom; + _v9 = _v7 >= _v8; + _v10 = accu_in.MinVal; + _v11 = TabEltIn < _v10; + _v12 = accu_in.MinVal; + _v13 = if _v11 then TabEltIn else _v12; + _v14 = accu_in.MinVal; + _v15 = if _v9 then _v13 else _v14; + _v16 = if _v6 then TabEltIn else _v15; tel -- end of node triSel::minFromRank @@ -17880,11 +18216,25 @@ node triSel::select( elt:int) returns ( accu_out:_triSel::Select_accu); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:int; + _v2:int; + _v3:int; + _v1:int; let - accu_out = - _triSel::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank - + 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else - accu_in.Val}; + accu_out = _triSel::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8}; + _v4 = accu_in.RankToFind; + _v5 = accu_in.CurrentRank; + _v6 = _v4 = _v5; + _v7 = accu_in.Val; + _v8 = if _v6 then elt else _v7; + _v2 = accu_in.CurrentRank; + _v3 = _v2 + 1; + _v1 = accu_in.RankToFind; tel -- end of node triSel::select @@ -17895,29 +18245,40 @@ returns ( accu_out:_triSel::Exchange_accu; eltOut:int); var - _v1:int; - _v2:int; - _v3:bool; - _v4:int; _v5:int; _v6:int; - _v7:bool; + _v4:int; + _v3:int; + _v2:int; + _v1:int; + _v7:int; _v8:int; - _v9:int; + _v9:bool; + _v10:int; + _v11:int; + _v12:int; + _v13:bool; + _v14:int; + _v15:int; let accu_out = - _triSel::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank - + 1}; - eltOut = if _v3 then _v4 else _v9; - _v1 = accu_in.Rank; - _v2 = accu_in.MinRank; - _v3 = _v1 = _v2; - _v4 = accu_in.CurrentVal; + _triSel::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6}; _v5 = accu_in.Rank; - _v6 = accu_in.RankFrom; - _v7 = _v5 = _v6; - _v8 = accu_in.MinVal; - _v9 = if _v7 then _v8 else eltIn; + _v6 = _v5 + 1; + _v4 = accu_in.CurrentVal; + _v3 = accu_in.RankFrom; + _v2 = accu_in.MinRank; + _v1 = accu_in.MinVal; + eltOut = if _v9 then _v10 else _v15; + _v7 = accu_in.Rank; + _v8 = accu_in.MinRank; + _v9 = _v7 = _v8; + _v10 = accu_in.CurrentVal; + _v11 = accu_in.Rank; + _v12 = accu_in.RankFrom; + _v13 = _v11 = _v12; + _v14 = accu_in.MinVal; + _v15 = if _v13 then _v14 else eltIn; tel -- end of node triSel::Exchange_i_j @@ -17931,24 +18292,37 @@ var accu_out_min:_triSel::MinFR_accu; accu_out_exchange:_triSel::Exchange_accu; localTab:A_int_50; - _v1:A_int_50; + _v1:int; _v2:A_int_50; - _v3:A_int_50; + _v3:int; + _v4:A_int_50; + _v8:int; + _v7:int; + _v6:int; + _v5:int; + _v9:A_int_50; + _v10:int; + _v11:int; let accu_out_min = red<<triSel::minFromRank, - 50>>(_triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=accu_in.CurrentRank;Rank=0}, - _v1); - _v1 = accu_in.Tab; - accu_out_select = red<<triSel::select, - 50>>(_triSel::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0}, - _v2); + 50>>(_triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=_v1;Rank=0}, _v2); + _v1 = accu_in.CurrentRank; _v2 = accu_in.Tab; + accu_out_select = red<<triSel::select, + 50>>(_triSel::Select_accu{RankToFind=_v3;CurrentRank=0;Val=0}, _v4); + _v3 = accu_in.CurrentRank; + _v4 = accu_in.Tab; (accu_out_exchange, localTab) = fillred<<triSel::Exchange_i_j, - 50>>(_triSel::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0}, - _v3); - _v3 = accu_in.Tab; - accu_out = _triSel::Sort_accu{CurrentRank=accu_in.CurrentRank + - 1;Tab=localTab}; + 50>>(_triSel::Exchange_accu{MinVal=_v5;MinRank=_v6;RankFrom=_v7;CurrentVal=_v8;Rank=0}, + _v9); + _v8 = accu_out_select.Val; + _v7 = accu_out_select.RankToFind; + _v6 = accu_out_min.MinRank; + _v5 = accu_out_min.MinVal; + _v9 = accu_in.Tab; + accu_out = _triSel::Sort_accu{CurrentRank=_v11;Tab=localTab}; + _v10 = accu_in.CurrentRank; + _v11 = _v10 + 1; tel -- end of node triSel::UnarySort node triSel::triSel(TIn:A_int_50) returns (TSorted:A_int_50); @@ -17966,10 +18340,17 @@ node triSel::sorted_iter( elt:int) returns ( accu_out:_triSel::sorted_iter_accu); +var + _v1:int; + _v2:bool; + _v3:bool; + _v4:bool; let - accu_out = - _triSel::sorted_iter_accu{prev_elt=elt;prop_is_tt=accu_in.prev_elt <= elt - and accu_in.prop_is_tt}; + accu_out = _triSel::sorted_iter_accu{prev_elt=elt;prop_is_tt=_v4}; + _v1 = accu_in.prev_elt; + _v2 = _v1 <= elt; + _v3 = accu_in.prop_is_tt; + _v4 = _v2 and _v3; tel -- end of node triSel::sorted_iter node triSel::Sorted(TIn:A_int_50) returns (ok:bool); @@ -18044,11 +18425,26 @@ node contractForElementSelectionInArray::selectOneStage( currentElt:int) returns ( acc_out:_contractForElementSelectionInArray::iteratedStruct); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:int; + _v3:int; + _v1:int; + _v2:int; let acc_out = - _contractForElementSelectionInArray::iteratedStruct{currentRank=acc_in.currentRank - + 1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank - = acc_in.rankToSelect then currentElt else acc_in.elementSelected}; + _contractForElementSelectionInArray::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8}; + _v4 = acc_in.currentRank; + _v5 = acc_in.rankToSelect; + _v6 = _v4 = _v5; + _v7 = acc_in.elementSelected; + _v8 = if _v6 then currentElt else _v7; + _v3 = acc_in.rankToSelect; + _v1 = acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node contractForElementSelectionInArray::selectOneStage @@ -18098,10 +18494,19 @@ node intArray::iterated_isElementOf_( elt_in:int) returns ( acc_out:_intArray::T_isElementOf_); +var + _v2:bool; + _v3:int; + _v4:bool; + _v5:bool; + _v1:int; let - acc_out = - _intArray::T_isElementOf_{eltToSearch=acc_in.eltToSearch;iselementof=acc_in.iselementof - or intArray::_isEqualTo_(acc_in.eltToSearch, elt_in)}; + acc_out = _intArray::T_isElementOf_{eltToSearch=_v1;iselementof=_v5}; + _v2 = acc_in.iselementof; + _v3 = acc_in.eltToSearch; + _v4 = intArray::_isEqualTo_(_v3, elt_in); + _v5 = _v2 or _v4; + _v1 = acc_in.eltToSearch; tel -- end of node intArray::iterated_isElementOf_ @@ -18135,10 +18540,18 @@ node intArray::isLocallyLoselySorted( elt:int) returns ( acc_out:_intArray::forSortingAlgo); +var + _v1:int; + _v2:bool; + _v3:bool; + _v4:bool; let acc_out = - _intArray::forSortingAlgo{previousElement=elt;sortedUpToHere=intArray::_isGreaterOrEqualTo_(elt, - acc_in.previousElement) and acc_in.sortedUpToHere}; + _intArray::forSortingAlgo{previousElement=elt;sortedUpToHere=_v4}; + _v1 = acc_in.previousElement; + _v2 = intArray::_isGreaterOrEqualTo_(elt, _v1); + _v3 = acc_in.sortedUpToHere; + _v4 = _v2 and _v3; tel -- end of node intArray::isLocallyLoselySorted @@ -18148,10 +18561,12 @@ returns ( array_isLoselySorted:bool); var result:_intArray::forSortingAlgo; + _v1:int; let result = red<<intArray::isLocallyLoselySorted, - 10>>(_intArray::forSortingAlgo{previousElement=array[0];sortedUpToHere=true}, + 10>>(_intArray::forSortingAlgo{previousElement=_v1;sortedUpToHere=true}, array); + _v1 = array[0]; array_isLoselySorted = result.sortedUpToHere; tel -- end of node intArray::_isLoselySorted @@ -18165,13 +18580,62 @@ node intArray::minFromRank( TabEltIn:int) returns ( accu_out:_intArray::MinFR_accu); +var + _v25:int; + _v26:int; + _v24:int; + _v14:int; + _v15:int; + _v16:bool; + _v17:int; + _v18:bool; + _v19:int; + _v20:int; + _v21:int; + _v22:int; + _v23:int; + _v1:int; + _v2:int; + _v3:bool; + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:bool; + _v9:int; + _v10:int; + _v11:int; + _v12:int; + _v13:int; let - accu_out = _intArray::MinFR_accu{MinVal= if accu_in.Rank <= - accu_in.RankFrom then TabEltIn else if accu_in.Rank >= accu_in.RankFrom - then if TabEltIn < accu_in.MinVal then TabEltIn else accu_in.MinVal else - accu_in.MinVal;MinRank= if accu_in.Rank > accu_in.RankFrom then if - TabEltIn < accu_in.MinVal then accu_in.Rank else accu_in.MinRank else - accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1}; + accu_out = + _intArray::MinFR_accu{MinVal=_v13;MinRank=_v23;RankFrom=_v24;Rank=_v26}; + _v25 = accu_in.Rank; + _v26 = _v25 + 1; + _v24 = accu_in.RankFrom; + _v14 = accu_in.Rank; + _v15 = accu_in.RankFrom; + _v16 = _v14 > _v15; + _v17 = accu_in.MinVal; + _v18 = TabEltIn < _v17; + _v19 = accu_in.Rank; + _v20 = accu_in.MinRank; + _v21 = if _v18 then _v19 else _v20; + _v22 = accu_in.MinRank; + _v23 = if _v16 then _v21 else _v22; + _v1 = accu_in.Rank; + _v2 = accu_in.RankFrom; + _v3 = _v1 <= _v2; + _v4 = accu_in.Rank; + _v5 = accu_in.RankFrom; + _v6 = _v4 >= _v5; + _v7 = accu_in.MinVal; + _v8 = TabEltIn < _v7; + _v9 = accu_in.MinVal; + _v10 = if _v8 then TabEltIn else _v9; + _v11 = accu_in.MinVal; + _v12 = if _v6 then _v10 else _v11; + _v13 = if _v3 then TabEltIn else _v12; tel -- end of node intArray::minFromRank @@ -18180,11 +18644,25 @@ node intArray::select( elt:int) returns ( accu_out:_intArray::Select_accu); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:int; + _v2:int; + _v3:int; + _v1:int; let - accu_out = - _intArray::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank - + 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else - accu_in.Val}; + accu_out = _intArray::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8}; + _v4 = accu_in.RankToFind; + _v5 = accu_in.CurrentRank; + _v6 = _v4 = _v5; + _v7 = accu_in.Val; + _v8 = if _v6 then elt else _v7; + _v2 = accu_in.CurrentRank; + _v3 = _v2 + 1; + _v1 = accu_in.RankToFind; tel -- end of node intArray::select @@ -18195,29 +18673,40 @@ returns ( accu_out:_intArray::Exchange_accu; eltOut:int); var - _v1:int; - _v2:int; - _v3:bool; - _v4:int; _v5:int; _v6:int; - _v7:bool; + _v4:int; + _v3:int; + _v2:int; + _v1:int; + _v7:int; _v8:int; - _v9:int; + _v9:bool; + _v10:int; + _v11:int; + _v12:int; + _v13:bool; + _v14:int; + _v15:int; let accu_out = - _intArray::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank - + 1}; - eltOut = if _v3 then _v4 else _v9; - _v1 = accu_in.Rank; - _v2 = accu_in.MinRank; - _v3 = _v1 = _v2; - _v4 = accu_in.CurrentVal; + _intArray::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6}; _v5 = accu_in.Rank; - _v6 = accu_in.RankFrom; - _v7 = _v5 = _v6; - _v8 = accu_in.MinVal; - _v9 = if _v7 then _v8 else eltIn; + _v6 = _v5 + 1; + _v4 = accu_in.CurrentVal; + _v3 = accu_in.RankFrom; + _v2 = accu_in.MinRank; + _v1 = accu_in.MinVal; + eltOut = if _v9 then _v10 else _v15; + _v7 = accu_in.Rank; + _v8 = accu_in.MinRank; + _v9 = _v7 = _v8; + _v10 = accu_in.CurrentVal; + _v11 = accu_in.Rank; + _v12 = accu_in.RankFrom; + _v13 = _v11 = _v12; + _v14 = accu_in.MinVal; + _v15 = if _v13 then _v14 else eltIn; tel -- end of node intArray::Exchange_i_j @@ -18231,24 +18720,39 @@ var accu_out_min:_intArray::MinFR_accu; accu_out_exchange:_intArray::Exchange_accu; localTab:A_int_10; - _v1:A_int_10; - _v2:A_int_10; + _v2:int; + _v1:int; _v3:A_int_10; + _v4:int; + _v5:A_int_10; + _v9:int; + _v8:int; + _v7:int; + _v6:int; + _v10:A_int_10; + _v11:int; + _v12:int; let accu_out_min = red<<intArray::minFromRank, - 10>>(_intArray::MinFR_accu{MinVal=0;MinRank=accu_in.CurrentRank;RankFrom=accu_in.CurrentRank;Rank=0}, - _v1); - _v1 = accu_in.Tab; + 10>>(_intArray::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3); + _v2 = accu_in.CurrentRank; + _v1 = accu_in.CurrentRank; + _v3 = accu_in.Tab; accu_out_select = red<<intArray::select, - 10>>(_intArray::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0}, - _v2); - _v2 = accu_in.Tab; + 10>>(_intArray::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5); + _v4 = accu_in.CurrentRank; + _v5 = accu_in.Tab; (accu_out_exchange, localTab) = fillred<<intArray::Exchange_i_j, - 10>>(_intArray::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0}, - _v3); - _v3 = accu_in.Tab; - accu_out = _intArray::Sort_accu{CurrentRank=accu_in.CurrentRank + - 1;Tab=localTab}; + 10>>(_intArray::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0}, + _v10); + _v9 = accu_out_select.Val; + _v8 = accu_out_select.RankToFind; + _v7 = accu_out_min.MinRank; + _v6 = accu_out_min.MinVal; + _v10 = accu_in.Tab; + accu_out = _intArray::Sort_accu{CurrentRank=_v12;Tab=localTab}; + _v11 = accu_in.CurrentRank; + _v12 = _v11 + 1; tel -- end of node intArray::UnarySort node intArray::sort_(array:A_int_10) returns (arraySorted:A_int_10); @@ -18287,10 +18791,26 @@ node intArray::selectOneStage( currentElt:int) returns ( acc_out:_intArray::iteratedStruct); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:int; + _v3:int; + _v1:int; + _v2:int; let - acc_out = _intArray::iteratedStruct{currentRank=acc_in.currentRank + - 1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank = - acc_in.rankToSelect then currentElt else acc_in.elementSelected}; + acc_out = + _intArray::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8}; + _v4 = acc_in.currentRank; + _v5 = acc_in.rankToSelect; + _v6 = _v4 = _v5; + _v7 = acc_in.elementSelected; + _v8 = if _v6 then currentElt else _v7; + _v3 = acc_in.rankToSelect; + _v1 = acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node intArray::selectOneStage @@ -18301,10 +18821,12 @@ returns ( elementSelected:int); var iterationResult:_intArray::iteratedStruct; + _v1:int; let iterationResult = red<<intArray::selectOneStage, - 10>>(_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=array[0]}, + 10>>(_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1}, array); + _v1 = array[0]; elementSelected = iterationResult.elementSelected; tel -- end of node intArray::selectElementOfRank_inArray_ @@ -18335,13 +18857,32 @@ node intArray::selectMaxRank( e1:int) returns ( acc_out:_intArray::currentRank_withMemorizedRank); +var + _v8:int; + _v9:bool; + _v10:int; + _v11:int; + _v3:int; + _v4:bool; + _v5:int; + _v6:int; + _v7:int; + _v1:int; + _v2:int; let acc_out = - _intArray::currentRank_withMemorizedRank{currentRank=acc_in.currentRank + - 1;rankOfMemorizedVal= if intArray::_isGreaterThan_(e1, acc_in.memorizedVal) - then acc_in.currentRank else acc_in.rankOfMemorizedVal;memorizedVal= if - intArray::_isGreaterThan_(e1, acc_in.memorizedVal) then e1 else - acc_in.memorizedVal}; + _intArray::currentRank_withMemorizedRank{currentRank=_v2;rankOfMemorizedVal=_v7;memorizedVal=_v11}; + _v8 = acc_in.memorizedVal; + _v9 = intArray::_isGreaterThan_(e1, _v8); + _v10 = acc_in.memorizedVal; + _v11 = if _v9 then e1 else _v10; + _v3 = acc_in.memorizedVal; + _v4 = intArray::_isGreaterThan_(e1, _v3); + _v5 = acc_in.currentRank; + _v6 = acc_in.rankOfMemorizedVal; + _v7 = if _v4 then _v5 else _v6; + _v1 = acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node intArray::selectMaxRank @@ -18351,10 +18892,12 @@ returns ( rankOfMaximumElement:int); var local:_intArray::currentRank_withMemorizedRank; + _v1:int; let local = red<<intArray::selectMaxRank, - 10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=array[0]}, + 10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=_v1}, array); + _v1 = array[0]; rankOfMaximumElement = local.rankOfMemorizedVal; tel -- end of node intArray::getRank_ofMaximumIn_ @@ -18364,12 +18907,26 @@ node intArray::selectMinRank( elt:int) returns ( acc_out:_intArray::currentRank_withMemorizedRank); +var + _v8:int; + _v3:int; + _v4:bool; + _v5:int; + _v6:int; + _v7:int; + _v1:int; + _v2:int; let acc_out = - _intArray::currentRank_withMemorizedRank{currentRank=acc_in.currentRank + - 1;rankOfMemorizedVal= if intArray::_isEqualTo_(acc_in.memorizedVal, elt) - then acc_in.currentRank else - acc_in.rankOfMemorizedVal;memorizedVal=acc_in.memorizedVal}; + _intArray::currentRank_withMemorizedRank{currentRank=_v2;rankOfMemorizedVal=_v7;memorizedVal=_v8}; + _v8 = acc_in.memorizedVal; + _v3 = acc_in.memorizedVal; + _v4 = intArray::_isEqualTo_(_v3, elt); + _v5 = acc_in.currentRank; + _v6 = acc_in.rankOfMemorizedVal; + _v7 = if _v4 then _v5 else _v6; + _v1 = acc_in.currentRank; + _v2 = _v1 + 1; tel -- end of node intArray::selectMinRank @@ -18444,13 +19001,62 @@ node tri::minFromRank( TabEltIn:int) returns ( accu_out:_tri::MinFR_accu); +var + _v25:int; + _v26:int; + _v24:int; + _v14:int; + _v15:int; + _v16:bool; + _v17:int; + _v18:bool; + _v19:int; + _v20:int; + _v21:int; + _v22:int; + _v23:int; + _v1:int; + _v2:int; + _v3:bool; + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:bool; + _v9:int; + _v10:int; + _v11:int; + _v12:int; + _v13:int; let - accu_out = _tri::MinFR_accu{MinVal= if accu_in.Rank <= accu_in.RankFrom - then TabEltIn else if accu_in.Rank >= accu_in.RankFrom then if TabEltIn < - accu_in.MinVal then TabEltIn else accu_in.MinVal else - accu_in.MinVal;MinRank= if accu_in.Rank > accu_in.RankFrom then if - TabEltIn < accu_in.MinVal then accu_in.Rank else accu_in.MinRank else - accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1}; + accu_out = + _tri::MinFR_accu{MinVal=_v13;MinRank=_v23;RankFrom=_v24;Rank=_v26}; + _v25 = accu_in.Rank; + _v26 = _v25 + 1; + _v24 = accu_in.RankFrom; + _v14 = accu_in.Rank; + _v15 = accu_in.RankFrom; + _v16 = _v14 > _v15; + _v17 = accu_in.MinVal; + _v18 = TabEltIn < _v17; + _v19 = accu_in.Rank; + _v20 = accu_in.MinRank; + _v21 = if _v18 then _v19 else _v20; + _v22 = accu_in.MinRank; + _v23 = if _v16 then _v21 else _v22; + _v1 = accu_in.Rank; + _v2 = accu_in.RankFrom; + _v3 = _v1 <= _v2; + _v4 = accu_in.Rank; + _v5 = accu_in.RankFrom; + _v6 = _v4 >= _v5; + _v7 = accu_in.MinVal; + _v8 = TabEltIn < _v7; + _v9 = accu_in.MinVal; + _v10 = if _v8 then TabEltIn else _v9; + _v11 = accu_in.MinVal; + _v12 = if _v6 then _v10 else _v11; + _v13 = if _v3 then TabEltIn else _v12; tel -- end of node tri::minFromRank @@ -18459,11 +19065,25 @@ node tri::select( elt:int) returns ( accu_out:_tri::Select_accu); +var + _v4:int; + _v5:int; + _v6:bool; + _v7:int; + _v8:int; + _v2:int; + _v3:int; + _v1:int; let - accu_out = - _tri::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank - + 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else - accu_in.Val}; + accu_out = _tri::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8}; + _v4 = accu_in.RankToFind; + _v5 = accu_in.CurrentRank; + _v6 = _v4 = _v5; + _v7 = accu_in.Val; + _v8 = if _v6 then elt else _v7; + _v2 = accu_in.CurrentRank; + _v3 = _v2 + 1; + _v1 = accu_in.RankToFind; tel -- end of node tri::select @@ -18474,29 +19094,40 @@ returns ( accu_out:_tri::Exchange_accu; eltOut:int); var - _v1:int; - _v2:int; - _v3:bool; - _v4:int; _v5:int; _v6:int; - _v7:bool; + _v4:int; + _v3:int; + _v2:int; + _v1:int; + _v7:int; _v8:int; - _v9:int; + _v9:bool; + _v10:int; + _v11:int; + _v12:int; + _v13:bool; + _v14:int; + _v15:int; let accu_out = - _tri::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank - + 1}; - eltOut = if _v3 then _v4 else _v9; - _v1 = accu_in.Rank; - _v2 = accu_in.MinRank; - _v3 = _v1 = _v2; - _v4 = accu_in.CurrentVal; + _tri::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6}; _v5 = accu_in.Rank; - _v6 = accu_in.RankFrom; - _v7 = _v5 = _v6; - _v8 = accu_in.MinVal; - _v9 = if _v7 then _v8 else eltIn; + _v6 = _v5 + 1; + _v4 = accu_in.CurrentVal; + _v3 = accu_in.RankFrom; + _v2 = accu_in.MinRank; + _v1 = accu_in.MinVal; + eltOut = if _v9 then _v10 else _v15; + _v7 = accu_in.Rank; + _v8 = accu_in.MinRank; + _v9 = _v7 = _v8; + _v10 = accu_in.CurrentVal; + _v11 = accu_in.Rank; + _v12 = accu_in.RankFrom; + _v13 = _v11 = _v12; + _v14 = accu_in.MinVal; + _v15 = if _v13 then _v14 else eltIn; tel -- end of node tri::Exchange_i_j @@ -18510,35 +19141,51 @@ var accu_out_min:_tri::MinFR_accu; accu_out_exchange:_tri::Exchange_accu; localTab:A_int_10; - _v1:A_int_10; - _v2:A_int_10; + _v2:int; + _v1:int; _v3:A_int_10; + _v4:int; + _v5:A_int_10; + _v9:int; + _v8:int; + _v7:int; + _v6:int; + _v10:A_int_10; + _v11:int; + _v12:int; let accu_out_min = red<<tri::minFromRank, - 10>>(_tri::MinFR_accu{MinVal=0;MinRank=accu_in.CurrentRank;RankFrom=accu_in.CurrentRank;Rank=0}, - _v1); - _v1 = accu_in.Tab; + 10>>(_tri::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3); + _v2 = accu_in.CurrentRank; + _v1 = accu_in.CurrentRank; + _v3 = accu_in.Tab; accu_out_select = red<<tri::select, - 10>>(_tri::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0}, - _v2); - _v2 = accu_in.Tab; + 10>>(_tri::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5); + _v4 = accu_in.CurrentRank; + _v5 = accu_in.Tab; (accu_out_exchange, localTab) = fillred<<tri::Exchange_i_j, - 10>>(_tri::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0}, - _v3); - _v3 = accu_in.Tab; - accu_out = _tri::Sort_accu{CurrentRank=accu_in.CurrentRank + - 1;Tab=localTab}; + 10>>(_tri::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0}, + _v10); + _v9 = accu_out_select.Val; + _v8 = accu_out_select.RankToFind; + _v7 = accu_out_min.MinRank; + _v6 = accu_out_min.MinVal; + _v10 = accu_in.Tab; + accu_out = _tri::Sort_accu{CurrentRank=_v12;Tab=localTab}; + _v11 = accu_in.CurrentRank; + _v12 = _v11 + 1; tel -- end of node tri::UnarySort node tri::main(TIn:A_int_10) returns (TSorted:A_int_10); var UnarySort_accu_out:_tri::Sort_accu; _v1:A_int_10; + _v2:A_int_10; let UnarySort_accu_out = red<<tri::UnarySort, - 10>>(_tri::Sort_accu{CurrentRank=0;Tab=[7, 8, 4, 3, 2, 9, 1, 10, 2, 7]}, - _v1); + 10>>(_tri::Sort_accu{CurrentRank=0;Tab=_v1}, _v2); _v1 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7]; + _v2 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7]; TSorted = UnarySort_accu_out.Tab; tel -- end of node tri::main @@ -18548,9 +19195,17 @@ node tri::sorted_iter( elt:int) returns ( accu_out:_tri::sorted_iter_accu); +var + _v1:int; + _v2:bool; + _v3:bool; + _v4:bool; let - accu_out = _tri::sorted_iter_accu{prev_elt=elt;prop_is_tt=accu_in.prev_elt - <= elt and accu_in.prop_is_tt}; + accu_out = _tri::sorted_iter_accu{prev_elt=elt;prop_is_tt=_v4}; + _v1 = accu_in.prev_elt; + _v2 = _v1 <= elt; + _v3 = accu_in.prop_is_tt; + _v4 = _v2 and _v3; tel -- end of node tri::sorted_iter node tri::Sorted(TIn:A_int_10) returns (res:bool);