@ -16,6 +16,7 @@ arguments.
@menu
* Memory Allocation Probes:: Probes in the memory allocation subsystem
* Mathematical Function Probes:: Probes in mathematical functions
@end menu
@node Memory Allocation Probes
@ -255,3 +256,100 @@ This probe is triggered when function @code{free} decides to adjust the
dynamic brk/mmap thresholds. Argument @var{$arg1} and @var{$arg2} are
the adjusted mmap and trim thresholds, respectively.
@end deftp
@node Mathematical Function Probes
@section 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.
@deftp Probe slowexp_p6 (double @var{$arg1}, double @var{$arg2})
This probe is hit when the @code{exp} function is called with an input that
results in multiple precision computation with precision 6. Argument
@var{$arg1} is the input value and @var{$arg2} is the computed output.
@end deftp
@deftp Probe slowexp_p32 (double @var{$arg1}, double @var{$arg2})
This probe is hit when the @code{exp} function is called with an input that
results in multiple precision computation with precision 32. Argument
@var{$arg1} is the input value and @var{$arg2} is the computed output.
@end deftp
@deftp Probe slowpow_p10 (double @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
This probe is hit when the @code{pow} function is called with inputs that
result in multiple precision computation with precision 10. Arguments
@var{$arg1} and @var{$arg2} are the input values, @code{$arg3} is the value
computed in the fast phase of the algorithm and @code{$arg4} is the final
accurate value.
@end deftp
@deftp Probe slowpow_p32 (double @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
This probe is hit when the @code{pow} function is called with an input that
results in multiple precision computation with precision 32. Arguments
@var{$arg1} and @var{$arg2} are the input values, @code{$arg3} is the value
computed in the fast phase of the algorithm and @code{$arg4} is the final
accurate value.
@end deftp
@deftp Probe slowlog (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
This probe is hit when the @code{log} function is called with an input that
results in multiple precision computation. Argument @var{$arg1} is the
precision with which the computation succeeded. Argument @var{$arg2} is the
input and @var{$arg3} is the computed output.
@end deftp
@deftp Probe slowlog_inexact (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
This probe is hit when the @code{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 @var{$arg1} is the maximum
precision with which computations were performed. Argument @var{$arg2} is the
input and @var{$arg3} is the computed output.
@end deftp
@deftp Probe slowatan2 (int @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
This probe is hit when the @code{atan2} function is called with an input that
results in multiple precision computation. Argument @var{$arg1} is the
precision with which computation succeeded. Arguments @var{$arg2} and
@var{$arg3} are inputs to the @code{atan2} function and @var{$arg4} is the
computed result.
@end deftp
@deftp Probe slowatan2_inexact (int @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
This probe is hit when the @code{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 @var{$arg1} is the maximum
precision with which computations were performed. Arguments @var{$arg2} and
@var{$arg3} are inputs to the @code{atan2} function and @var{$arg4} is the
computed result.
@end deftp
@deftp Probe slowatan (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
This probe is hit when the @code{atan} function is called with an input that
results in multiple precision computation. Argument @var{$arg1} is the
precision with which computation succeeded. Argument @var{$arg2} is the
input to the @code{atan} function and @var{$arg3} is the computed result.
@end deftp
@deftp Probe slowatan_inexact (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
This probe is hit when the @code{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 @var{$arg1} is the maximum
precision with which computations were performed. Argument @var{$arg2} is the
input to the @code{atan} function and @var{$arg3} is the computed result.
@end deftp
@deftp Probe slowtan (double @var{$arg1}, double @var{$arg2})
This probe is hit when the @code{tan} function is called with an input that
results in multiple precision computation with precision 32. Argument
@var{$arg1} is the input to the function and @var{$arg2} is the computed
result.
@end deftp