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

```

• Prev by Date: Re: DeleteCases and multiple patterns
• Next by Date: Re: v.7.0 issues
• Previous by thread: Re: How to hold a form and convert it to a string
• Next by thread: Re: Mathematica 7: PieChart: opacity of a sector