Thanks! This is what I want to try.
Rich
From: Stavros Macrakis
Sent: Monday, December 28, 2009 6:06 PM
To: Richard Hennessy
Cc: Barton Willis ; Richard Fateman ; Maxima List
Subject: Re: [Maxima] How to prevent evaluation.
On Mon, Dec 28, 2009 at 4:33 PM, Richard Hennessy <rich.hennessy at verizon.net> wrote:
...
The last way is the fastest. What I think I need to do is dynamically generate an if then else statement as the
output from piecewise(). I am not at all clear on how to do that.
Just like any other expression:
(%i12) cond: if a>0 then 1 else 0;
(%o12) if a > 0 then 1 else 0
(%i13) makelist(inpart(cond,i),i,0,length(cond));
(%o13) [if, a > 0, 1, true, 0]
Note that the 'else xxx' is coded as "elseif true then xxx".
(%i14) cond: if a>0 then 1 elseif b>0 then 3;
(%o14) if a > 0 then 1 elseif b > 0 then 3
(%i15) makelist(inpart(cond,i),i,0,length(cond));
(%o15) [if, a > 0, 1, b > 0, 3, true, false]
(%i16) funmake("if",[a>0,2,true,3]);
(%o16) if a > 0 then 2 else 3
-s