243874426d
The implementation of midpoint used for integral types is due to Howard Hinnant and avoids a branch for int and larger types (but not for chars and shorts). The midpoint and lerp functions for floating point types come straight from the P0811R3 proposal, with no attempt at optimization. * include/c_compatibility/math.h [C++20] (lerp): Add using declaration. * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define. (__lerp): Define function template to implement lerp. (lerp(float, float, float), lerp(double, double, double)) (lerp(long double, long double, long double)): Define for C++20. * include/std/numeric [C++20] (__cpp_lib_interpolate): Define. (midpoint(T, T), midpoint(T*, T*)): Define. * include/std::version [C++20] (__cpp_lib_interpolate): Define. * testsuite/26_numerics/lerp.cc: New test. * testsuite/26_numerics/midpoint/floating.cc: New test. * testsuite/26_numerics/midpoint/integral.cc: New test. * testsuite/26_numerics/midpoint/pointer.cc: New test. From-SVN: r269398 |
||
---|---|---|
.. | ||
cassert | ||
ccomplex | ||
cctype | ||
cerrno | ||
cfenv | ||
cfloat | ||
cinttypes | ||
ciso646 | ||
climits | ||
clocale | ||
cmath | ||
csetjmp | ||
csignal | ||
cstdalign | ||
cstdarg | ||
cstdbool | ||
cstddef | ||
cstdint | ||
cstdio | ||
cstdlib | ||
cstring | ||
ctgmath | ||
ctime | ||
cuchar | ||
cwchar | ||
cwctype |