Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to handle powers in c-code generation?

  • To: mathgroup at
  • Subject: [mg40067] Re: How to handle powers in c-code generation?
  • From: Jens-Peer Kuska <kuska at>
  • Date: Tue, 18 Mar 2003 05:49:50 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <b4uarn$qh5$>
  • Reply-to: kuska at
  • Sender: owner-wri-mathgroup at


a) if C code with pow() is nice or not is a matter of taste
b) you may have a power c-function that handle integer powers
   without calling log()
Format[Power[x_, n_Integer], CForm] := 
  HoldForm[Evaluate[Table[x, {n}]]] /. List -> Times


does what you want, but it is not nice for x^10-x^9 ..
you should use the Horner rule if you have polynoms.


Christian Ott wrote:
> Hi there,
> I have a problem with generating "nice" c-code in mathematica.
> When I use the packages "Format" and "Optimize" to generate the
> c-code, the (integer) powers are coded as function calls instead of
> explicit
> multiplications (e.g. pow(x,2.) instead of x*x). These function calls
> are obviously quite ineffective in many cases.
> Here is a simple example of my problem:
> ----------------
> Mathematica Input:
>   << Format'
>   << Optimize'
>   CAssign[x^2, AssignOptimize -> False, OptimizePower -> Binary]
> Mathematica Output: pow(x,2.)
> Desired Output: x*x
> -----------------
> I thought that the option "OptimizePower -> Binary" would be
> sufficient to get an output of the form "x*x".
> Is there another option that I should use in the CAssign call?
> Or is there a better way of generating c-code from mathematica?
> thanks in advance,
> Christian

  • Prev by Date: Re: Increase in efficiency with Module
  • Next by Date: Re: FindRoot problem
  • Previous by thread: How to handle powers in c-code generation?
  • Next by thread: FindRoot problem