Re: How to hold a form and convert it to a string
- To: mathgroup at smc.vnet.net
- Subject: [mg93970] Re: How to hold a form and convert it to a string
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Sun, 30 Nov 2008 06:58:53 -0500 (EST)
- References: <ggog1m$s6g$1@smc.vnet.net>
Patrick Scheibe wrote: > Hi, > > I'm sure it's a simple question but I don't get it. I want to transform > the expression > > a*q + b*q^2 + c*q^3 > > into a C-Code form > > "a*q + b*q*q + c*q*q*q" > > With the rule > exp //. (Power[q_, n_] :> Times@@Array[q &, n]) > for the transformation of the Power of q, > the expression is instantly reevaluated to the first form (as I expected > it). I could transform the complete first expression to a C-Form-String > and manipulate this. This would look like > > f[exp_] := StringReplace[ToString@CForm[exp], > "Power(" ~~ q_ ~~ "," ~~ n_ ~~ ")" :> > StringJoin[Riffle[Array[ToString@q &, ToExpression[n]], "*"]]] > > Isn't there a more stylish way? > > Cheers > Patrick > One way to do this is to replace Times with Star. This has nearly the same precedence, but no built in meaning. After conversion to a string, a simple StringReplace can swap "\[Star]" into "*". David Bailey http://www.dbaileyconsultancy.co.uk