C - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.
Our website is currently undergoing maintenance, which may result in occasional errors while browsing. We apologize for any inconvenience this may cause and are working swiftly to restore full functionality. Thank you for your patience.

Online Help

All Products    Maple    MapleSim


CodeGeneration

  

C

  

translate Maple code to C code

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

C(x, cgopts)

Parameters

x

-

expression, list, rtable, procedure or module

cgopts

-

(optional) one or more CodeGeneration options

Description

• 

The C command translates Maple code to ANSI C code.

  

- If the parameter x is an algebraic expression, then a C statement assigning the expression to a variable is generated.

  

- If x is a list, rtable or Maple Array of algebraic values, then a sequence of C statements assigning the elements to a C array is produced.  Only the initialized elements of the rtable or Maple Array are translated.

  

- If x is a list of equations nm=expr where nm is a name and expr is an algebraic expression, this is understood to mean a sequence of assignment statements.  In this case, the equivalent sequence of C assignment statements is generated.

  

- If x is a procedure, then a C function is generated, along with any necessary directives for library inclusion.

  

- If x is a module, then the module members are translated as described on the CDetails help page.

• 

The parameter cgopts may include one or more CodeGeneration options, as described in CodeGenerationOptions.

• 

For more information about how the CodeGeneration package translates Maple code to other languages, see Translation Details. For more information about translation to C in particular, see CDetails.

Examples

For a description of the options used in the following examples, see CodeGenerationOptions.

withCodeGeneration:

Translate a simple expression and assign to the name ``w'' in the target code.

Cx+yz2xz,resultname=w

w = -2 * x * z + y * z + x;

Translate a list and assign to an array with name ``w'' in the target code.

Cx,2y,5,z,resultname=w

w[0][0] = x;
w[0][1] = 2 * y;
w[1][0] = 5;
w[1][1] = z;

Translate a computation sequence.  Optimize the input first.

css=1.0+x,t=lnsexpx,r=expx+xt:

Ccs,optimize

s = 0.10e1 + x;
t1 = log(s);
t2 = exp(-x);
t = t2 * t1;
r = x * t + t2;

Declare that x is a float and y is an integer. Return the result in a string.

sCx+y+1,declare=x::float,y::integer,output=string

scg = x + (double) y + 0.1e1;

(1)

Translate a procedure.  Assume that all untyped variables have type integer.

f := proc(x, y, z) return x*y-y*z+x*z; end proc:

Cf,defaulttype=integer

int f (int x, int y, int z)
{
  return(y * x - y * z + x * z);
}

Translate a procedure containing an implicit return.  A new variable is created to hold the return value.

f := proc(n)
  local x, i;
  x := 0.0;
  for i to n do
    x := x + i;
  end do;
end proc:

Cf

double f (int n)
{
  double x;
  int i;
  double cgret;
  x = 0.0e0;
  for (i = 1; i <= n; i++)
  {
    x = x + (double) i;
    cgret = x;
  }
  return(cgret);
}

Translate a procedure accepting an Array as a parameter.  Note that the indices are renumbered so that the C array starts at index 0.

f := proc(x::Array(numeric, 5..7))
  return x[5]+x[6]+x[7];
end proc:

Cf

double f (double x[3])
{
  return(x[0] + x[1] + x[2]);
}

Translate a module with one exported and one local procedure.

m := module() export p; local q;
    p := proc(x,y) if y>0 then trunc(x); else ceil(x); end if; end proc:
    q := proc(x) sin(x)^2; end proc:
end module:

Cm&comma;resultname=t0

#include <math.h>

double q;
double p (double x, int y);

double q (double x)
{
  return(pow(sin(x), 0.2e1));
}

double p (double x, int y)
{
  if (0 < y)
    return((double) (int)(x));
  else
    return(ceil(x));
}

Translate an expression involving the max function.

Cmax1absx&comma;x2

cg0 = (x * x >= 1 / abs(x) ? x * x : 1 / abs(x));

See Also

CDetails

CodeGeneration

CodeGenerationOptions

Translation Details