Previous: Memory Allocation Probes, Up: Internal Probes

### 35.2 Mathematical Function Probes

Some mathematical functions fall back to multiple precision arithmetic for some inputs to get last bit precision for their return values. This multiple precision fallback is much slower than the default algorithms and may have a significant impact on application performance. The systemtap probe markers described in this section may help you determine if your application calls mathematical functions with inputs that may result in multiple-precision arithmetic.

Unless explicitly mentioned otherwise, a precision of 1 implies 24 bits of precision in the mantissa of the multiple precision number. Hence, a precision level of 32 implies 768 bits of precision in the mantissa.

— Probe: slowexp_p6 (double $arg1, double $arg2)

> This probe is hit when the `exp` function is called with an input that results in multiple precision computation with precision 6. Argument $arg1 is the input value and $arg2 is the computed output.

— Probe: slowexp_p32 (double $arg1, double $arg2)

> This probe is hit when the `exp` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input value and $arg2 is the computed output.

— Probe: slowpow_p10 (double $arg1, double $arg2, double $arg3, double $arg4)

> This probe is hit when the `pow` function is called with inputs that result in multiple precision computation with precision 10. Arguments $arg1 and $arg2 are the input values, `$arg3` is the value computed in the fast phase of the algorithm and `$arg4` is the final accurate value.

— Probe: slowpow_p32 (double $arg1, double $arg2, double $arg3, double $arg4)

> This probe is hit when the `pow` function is called with an input that results in multiple precision computation with precision 32. Arguments $arg1 and $arg2 are the input values, `$arg3` is the value computed in the fast phase of the algorithm and `$arg4` is the final accurate value.

— Probe: slowlog (int $arg1, double $arg2, double $arg3)

> This probe is hit when the `log` function is called with an input that results in multiple precision computation. Argument $arg1 is the precision with which the computation succeeded. Argument $arg2 is the input and $arg3 is the computed output.

— Probe: slowlog_inexact (int $arg1, double $arg2, double $arg3)

> This probe is hit when the `log` function is called with an input that results in multiple precision computation and none of the multiple precision computations result in an accurate result. Argument $arg1 is the maximum precision with which computations were performed. Argument $arg2 is the input and $arg3 is the computed output.

— Probe: slowatan2 (int $arg1, double $arg2, double $arg3, double $arg4)

> This probe is hit when the `atan2` function is called with an input that results in multiple precision computation. Argument $arg1 is the precision with which computation succeeded. Arguments $arg2 and $arg3 are inputs to the `atan2` function and $arg4 is the computed result.

— Probe: slowatan2_inexact (int $arg1, double $arg2, double $arg3, double $arg4)

> This probe is hit when the `atan` function is called with an input that results in multiple precision computation and none of the multiple precision computations result in an accurate result. Argument $arg1 is the maximum precision with which computations were performed. Arguments $arg2 and $arg3 are inputs to the `atan2` function and $arg4 is the computed result.

— Probe: slowatan (int $arg1, double $arg2, double $arg3)

> This probe is hit when the `atan` function is called with an input that results in multiple precision computation. Argument $arg1 is the precision with which computation succeeded. Argument $arg2 is the input to the `atan` function and $arg3 is the computed result.

— Probe: slowatan_inexact (int $arg1, double $arg2, double $arg3)

> This probe is hit when the `atan` function is called with an input that results in multiple precision computation and none of the multiple precision computations result in an accurate result. Argument $arg1 is the maximum precision with which computations were performed. Argument $arg2 is the input to the `atan` function and $arg3 is the computed result.

— Probe: slowtan (double $arg1, double $arg2)

> This probe is hit when the `tan` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function and $arg2 is the computed result.

— Probe: slowasin (double $arg1, double $arg2)

> This probe is hit when the `asin` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function and $arg2 is the computed result.

— Probe: slowacos (double $arg1, double $arg2)

> This probe is hit when the `acos` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function and $arg2 is the computed result.

— Probe: slowsin (double $arg1, double $arg2)

> This probe is hit when the `sin` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function and $arg2 is the computed result.

— Probe: slowcos (double $arg1, double $arg2)

> This probe is hit when the `cos` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function and $arg2 is the computed result.

— Probe: slowsin_dx (double $arg1, double $arg2, double $arg3)

> This probe is hit when the `sin` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function, $arg2 is the error bound of $arg1 and $arg3 is the computed result.

— Probe: slowcos_dx (double $arg1, double $arg2, double $arg3)

> This probe is hit when the `cos` function is called with an input that results in multiple precision computation with precision 32. Argument $arg1 is the input to the function, $arg2 is the error bound of $arg1 and $arg3 is the computed result.