aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2019-03-05 18:37:24 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2019-03-05 18:37:24 +0000
commit243874426dddf0cd56031eea8bbb7b3986f37baa (patch)
tree37e454c2ac25aa892570e55690083e4436b43bcb /gcc/go
parentf0c3b1337fbd9216c3c7c6c28066df8abf45cccb (diff)
downloadgcc-243874426dddf0cd56031eea8bbb7b3986f37baa.zip
gcc-243874426dddf0cd56031eea8bbb7b3986f37baa.tar.gz
gcc-243874426dddf0cd56031eea8bbb7b3986f37baa.tar.bz2
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
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions