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.