Next: , Up: Operators


5.9.1 Arithmetic & logical operators

Asymptote uses the standard binary arithmetic operators. However, when one integer is divided by another, both arguments are converted to real values before dividing and a real quotient is returned (since this is usually what is intended). The function int quotient(int x, int y) returns the greatest integer less than or equal to x/y. In all other cases both operands are promoted to the same type, which will also be the type of the result:

+
addition
-
subtraction
*
multiplication
/
division
%
modulo; the result always has the same sign as the divisor. In particular, this makes q*quotient(p,q)+p%q == p for all integers p and nonzero integers q.
^
power; if the exponent (second argument) is an int, recursive multiplication is used; otherwise, logarithms and exponentials are used (** is a synonym for ^).

The usual boolean operators are also defined:

==
equals
!=
not equals
<
less than
<=
less than or equals
>=
greater than or equals
>
greater than
&&
and (with conditional evaluation of right-hand argument)
&
and
||
or (with conditional evaluation of right-hand argument)
|
or
^
xor
!
not

Asymptote also supports the C-like conditional syntax:

bool positive=(pi >= 0) ? true : false;

The function T interp(T a, T b, real t) returns a+t*(b-a) for all built-in arithmetic types T.

Asymptote also defines bitwise functions int AND(int,int), int OR(int,int), int XOR(int,int), and int NOT(int).