gcc/libstdc++-v3/testsuite/26_numerics
Jonathan Wakely 243874426d 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.

From-SVN: r269398
2019-03-05 18:37:24 +00:00
..
accumulate Update copyright years. 2019-01-01 13:31:55 +01:00
adjacent_difference Update copyright years. 2019-01-01 13:31:55 +01:00
bit Remove redundant dg-do directive from test 2019-03-04 13:18:47 +00:00
complex PR libstdc++/88204 disable std::complex<long double> tests 2019-01-09 09:37:34 +00:00
gcd Update copyright years. 2019-01-01 13:31:55 +01:00
headers Document LWG 2735 status and add test 2019-02-14 09:07:09 +00:00
inner_product Update copyright years. 2019-01-01 13:31:55 +01:00
iota Update copyright years. 2019-01-01 13:31:55 +01:00
lcm Update copyright years. 2019-01-01 13:31:55 +01:00
midpoint Define midpoint and lerp functions for C++20 (P0811R3) 2019-03-05 18:37:24 +00:00
partial_sum Update copyright years. 2019-01-01 13:31:55 +01:00
random Update copyright years. 2019-01-01 13:31:55 +01:00
slice Update copyright years. 2019-01-01 13:31:55 +01:00
slice_array Update copyright years. 2019-01-01 13:31:55 +01:00
valarray Update copyright years. 2019-01-01 13:31:55 +01:00
lerp.cc Define midpoint and lerp functions for C++20 (P0811R3) 2019-03-05 18:37:24 +00:00