From ae8d223c14cd678fee88f6530bd4796886a129fc Mon Sep 17 00:00:00 2001 From: Ed J Date: Thu, 5 Sep 2024 13:35:22 +0100 Subject: [PATCH] simplify mstack with loop() --- Complex/complex.pd | 51 ++++++++++++---------------------------- Real/real.pd | 58 ++++++++++++++-------------------------------- 2 files changed, 32 insertions(+), 77 deletions(-) diff --git a/Complex/complex.pd b/Complex/complex.pd index f5010a8..3dc6399 100644 --- a/Complex/complex.pd +++ b/Complex/complex.pd @@ -4925,46 +4925,25 @@ pp_def( ); pp_bless('PDL'); -pp_def( - 'cmstack', - DefaultFlow => 1, - TwoWay => 1, - Pars => 'x(c,n,m);y(c,n,p);[o]out(c,n,q=CALC($SIZE(m)+$SIZE(n)));', - Code => ' - loop(m,n,c) %{ - $out(q=>m) = $x(); - %} - register PDL_Indx i,j=0; - for (i = $SIZE(m); i < $SIZE(q); i++,j++) - { - loop(n,c) %{ - $out(q=>i) = $y(p=>j); - %} - } - ', - - BackCode => ' - loop(m,n,c) %{ - $x() = $out(q=>m); - %} - register PDL_Indx i,j=0; - for (i = $SIZE(m); i < $SIZE(q) ;i++,j++) - { - loop(n,c)%{ - $y(p=>j) = $out(q=>i); - %} - } - ', - Doc => < 1, + TwoWay => 1, + Pars => 'x(c,n,m);y(c,n,p);[o]out(c,n,q=CALC($SIZE(m)+$SIZE(p)));', + Code => ' +loop (m,n,c) %{ $out(q=>m) = $x(); %} +loop (q=$SIZE(m),n,c) %{ $out() = $y(p=>q-$SIZE(m)); %} +', + BackCode => ' +loop (m,n,c) %{ $x() = $out(q=>m); %} +loop (q=$SIZE(m),n,c) %{ $y(p=>q-$SIZE(m)) = $out(); %} +', + Doc => < 1, - TwoWay => 1, - Pars => 'x(n,m);y(n,p);[o]out(n,q=CALC($SIZE(m)+$SIZE(p)));', - Code => ' - register PDL_Indx i,j; - loop(m,n) %{ - $out(q=>m) = $x(); - %} - j=0; - for (i = $SIZE(m); i < $SIZE(q) ;i++,j++) - { - loop(n)%{ - $out(q=>i) = $y(p=>j); - %} - } - ', - - BackCode => ' - register PDL_Indx i,j; - loop(m,n) %{ - $x() = $out(q=>m); - %} - j=0; - for (i = $SIZE(m); i < $SIZE(q) ;i++,j++) - { - loop(n)%{ - $y(p=>j) = $out(q=>i); - %} - } - ', - - Doc => < 1, + TwoWay => 1, + Pars => 'x(n,m);y(n,p);[o]out(n,q=CALC($SIZE(m)+$SIZE(p)));', + GenericTypes => [ppdefs_all()], + Code => ' +loop (m,n) %{ $out(q=>m) = $x(); %} +loop (q=$SIZE(m),n) %{ $out() = $y(p=>q-$SIZE(m)); %} +', + BackCode => ' +loop (m,n) %{ $x() = $out(q=>m); %} +loop (q=$SIZE(m),n) %{ $y(p=>q-$SIZE(m)) = $out(); %} +', + Doc => < 'A(n,n);[o]Y(n,n);[o]out(p=CALC($SIZE(n)+1));', GenericTypes => [F,D], Code => '