Support for complex numbers is provided via the complex data type. The basic math operators and functions accept complex numbers, possibly intermixed with scalar values, and will produce a complex result when given a complex operand when appropriate. Generally, a complex number can be passed to a function expecting a real number, and the real part of the complex number will be used. Similarly, a scalar passed to a function expecting a complex number will be accepted as a complex value with zero imaginary part.
Presently, functions will not produce a complex result unless passed a complex argument. For example, the sqrt function, if passed a negative scalar, will return a scalar zero. If passed a complex number with negative real part and zero imaginary part, the return will be the complex square root value as one would expect.
Complex numbers can be created with the cmplx initializer function, which takes as arguments two scalar values that initialize the real and imaginary part. There are special functions that return as scalars the real and imaginary values, magnitude, and phase of a complex operand. The Print function and similar will print a complex value as a comma-separated pair of numbers enclosed in parentheses.