### 3.9 Two-argument math functions ¶

The math functions described in this section take two arguments. Most combinations of these types may be used as arguments:

- An Array object
- An Array expression
- An index placeholder
- A scalar of type `float`, `double`, `long double`, or `complex<T>`

#### ANSI C++ math functions ¶

These math functions are available on all platforms, and work for complex numbers.

`atan2(x,y)` ¶

  Inverse tangent of (y/x). The signs of both parameters are used to determine the quadrant of the return value, which is in the range [-\pi, \pi]. Works for `complex<T>`.

`blitz::polar(r,t)` ¶

  Computes ; i.e. converts polar-form to Cartesian form complex numbers. The `blitz::` scope qualifier is needed to disambiguate the ANSI C++ function template `polar(T,T)`. This qualifier will hopefully disappear in a future version.

`pow(x,y)` ¶

  Computes x to the exponent y. Works for `complex<T>`.

#### IEEE/System V math functions ¶

See the notes about IEEE/System V math functions in the previous section. None of these functions work for complex numbers. They will all cast their arguments to double precision.

`copysign(x,y)` ¶

  Returns the x parameter with the same sign as the y parameter.

`drem(x,y)` ¶

  Computes a floating point remainder. The return value r is equal to r = x - n * y, where n is equal to `nearest(x/y)` (the nearest integer to x/y). The return value will lie in the range [ -y/2, +y/2 ]. If y is zero or x is +INF or -INF, NaNQ is returned.

`fmod(x,y)` ¶

  Computes a floating point modulo remainder. The return value r is equal to r = x - n * y, where n is selected so that r has the same sign as x and magnitude less than abs(y). In order words, if x > 0, r is in the range [0, |y|], and if x < 0, r is in the range [-|y|, 0].

`hypot(x,y)` ¶

  Computes so that underflow does not occur and overflow occurs only if the final result warrants it.

`nextafter(x,y)` ¶

  Returns the next representable number after x in the direction of y.

`remainder(x,y)` ¶

  Equivalent to drem(x,y).

`scalb(x,y)` ¶

  Calculates.

`unordered(x,y)` ¶

  Returns a nonzero value if a floating-point comparison between x and y would be unordered. Otherwise, it returns zero.