r269398 - in /trunk/libstdc++-v3: ChangeLog inc...
redi@gcc.gnu.org
redi@gcc.gnu.org
Tue Mar 5 18:37:00 GMT 2019
Author: redi
Date: Tue Mar 5 18:37:24 2019
New Revision: 269398
URL: https://gcc.gnu.org/viewcvs?rev=269398&root=gcc&view=rev
Log:
Define midpoint and lerp functions for C++20 (P0811R3)
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.
Added:
trunk/libstdc++-v3/testsuite/26_numerics/lerp.cc
trunk/libstdc++-v3/testsuite/26_numerics/midpoint/
trunk/libstdc++-v3/testsuite/26_numerics/midpoint/floating.cc
trunk/libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
trunk/libstdc++-v3/testsuite/26_numerics/midpoint/pointer.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/c_compatibility/math.h
trunk/libstdc++-v3/include/c_global/cmath
trunk/libstdc++-v3/include/std/numeric
trunk/libstdc++-v3/include/std/version
More information about the Gcc-cvs
mailing list