For each function
with at least one parameter of type floating-point-type
other than abs
the implementation also provides additional overloads sufficient to ensure that,
if every argument corresponding to
parameter has arithmetic type,
then every such argument is effectively cast to the floating-point type
with the greatest floating-point conversion rank and
greatest floating-point conversion subrank
among the types of all such arguments,
where arguments of integer type are considered to have
the same floating-point conversion rank as double.
If no such floating-point type with the greatest rank and subrank exists,
then overload resolution does not result in
a usable candidate ([over.match.general]
from the overloads provided by the implementation.