# Complex Operations

A list of compute functions and their performance cost.

The table below lists the costs for standard single-precision,
floating-point functions. For OpenCL, it assumes the
`-cl-fast-relaxed-math`

compilation flag.

A low cost represents less than 30 hardware instructions, and a high cost represents more than 100 instructions. 30 to 100 instructions is considered a medium cost.

Function | Cost |
---|---|

`x+y` |
Low |

`x*y` |
Low |

`x/y` |
Low |

`1/x` |
Low |

`rsqrt(x), 1/sqrt(x)` |
Low |

`sqrt(x)` |
Low |

`cbrt(x)` |
Low |

`hypot(x)` |
Medium |

`exp(x)` |
Medium |

`exp2(x)` |
Low |

`exp10(x)` |
Medium |

`expm1(x)` |
Medium |

`log(x)` |
Low |

`log2(x)` |
Low |

`log10(x)` |
Low |

`log1p(x)` |
High |

`sin(x)` |
Low |

`cos(x)` |
Low |

`tan(x)` |
High |

`sincos(x, cptr)` |
Medium |

`asin(x)` |
Medium |

`acos(x)` |
Medium |

`asin(x)` |
Medium |

`atan(x)` |
Low |

`atan2(y, x)` |
Medium |

`sinh(x)` |
Medium |

`cosh(x)` |
Medium |

`tanh(x)` |
Medium |

`asinh(x)` |
High |

`acosh(x)` |
High |

`atanh(x)` |
High |

`pow(x, y)` |
High |

`fma(x, y, z)` |
Low |

`frexp(x, exp)` |
Low |

`ldexp(x, exp)` |
Medium |

`logb(x)` |
Low |

`ilogb(x)` |
Low |

`fmod(x, y)` |
Medium |

`remainder(x, y)` |
High |

`remquo(x, y, iptr)` |
High |

`modf(x, iptr)` |
Low |

`fdim(x, y)` |
Low |

`trunc(x)` |
Low |

`round(x)` |
Low |

`rint(x)` |
Low |

`ceil(x)` |
Low |

`floor(x)` |
Low |

`asinpi(x)` |
Medium |

`acospi(x)` |
Medium |

`atan2pi(x, y)` |
Medium |

`atanpi(x)` |
Low |

`copysign(x, y)` |
Low |

`sinpi(x)` |
Medium |

`cospi(x)` |
Medium |

`tanpi(x)` |
Medium |

`fabs(x)` |
Low |

`fmax(x, y)` |
Low |

`fmin(x, y)` |
Low |

`fract(x, ptr)` |
Low |

`hypot(x, y)` |
Medium |

`ldexp(x, y)` |
Medium |

`mad(x, y, z)` |
Low |

`maxmag(x, y)` |
Low |

`minmag(x, y)` |
Low |

`nan(x)` |
Low |

`nextafter(x, y)` |
Low |

`powr(x, y)` |
High |

`pown(x, y)` |
High |

`rootn(x, y)` |
High |

`signbit(x)` |
Low |