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 typically what is intended; otherwise
one can use the function int quotient(int x, int y)
, which returns
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:
+
¶-
*
/
#
integer division; equivalent to quotient(x,y)
. Noting that the
Python3
community adopted our comment symbol (//
) for
integer division, we decided to reciprocate and use their comment
symbol for integer division in Asymptote
!
%
modulo; the result always has the same sign as the divisor.
In particular, this makes q*(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:
==
¶!=
<
<=
>=
>
&&
&
||
|
^
!
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 (1-t)*a+t*b
for nonintegral built-in arithmetic types T
. If a
and
b
are pens, they are first promoted to the same color space.
Asymptote
also defines bitwise functions int AND(int,int)
,
int OR(int,int)
, int XOR(int,int)
, int NOT(int)
,
int CLZ(int)
(count leading zeros),
int CTZ(int)
(count trailing zeros),
int popcount(int)
(count bits populated by ones), and
int bitreverse(int a, int bits)
(reverse bits within a word of
length bits).