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