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