NAME
mpc – extended precision arithmetic code generator

SYNOPSIS
mpc [ file ... ]

DESCRIPTION
Mpc generates C functions from a simple language that operates on extended precision integers using the mp(2) library.

LANGUAGE
The language consists of a series of function definitions of the form:
name ( parameter list ) { statements }

All variables and parameters are extended precision integers and are passed by reference. Statements are separated by semicolon and the following statements are defined:
name = expression
if ( condition ) { statements } else if ( condition ) { statements } else { statements }
while ( condition ) { statements }
break
name ( parameter list )
mod ( modulus ) { statements }

There is no distinction between input and output parameters, but conventionally, the outputs are put at the end of the parameter list and the language allows one to write
F ( X, Y, Z ) as Y, Z = F ( X )

Expressions are composed out of the following arithmetic operations:
+              addition.
–              subtraction.
*              multiplication.
/              division, or multiplicative inverse when enclosed in mod block.
%              division remainder.
^              exponentiation.
>>constant       right shift by a constant.
<<constant       left shift by a constant.
condition?a:b      pick a when condition is true, otherwise b when false.

Conditions can use the following operations:
==             equality.
!=             inequality.
>              bigger than.
<              smaller than.
!condition        negation.

SOURCE
/sys/src/cmd/mpc.y

SEE ALSO
mp(2)