So far the SIMD booleans were the only SIMD types not wrapped in our own Simd<_>. In order to implement some conversion from/to arrays, it is necessary to wrap this in our own Simd<_> just like float SIMD types.
This PR also:
adds simd_horizontal_min and simd_horizontal_max.
adds a simd copysign.
adds a libm_force feature that force the use of libm even when we don't target no-std.
the use of libm is now opt-in when targetting no-std. This will prevent hidden performance regression when default-features = false is activated without being aware this will automatically switch all operation to libm.
So far the SIMD booleans were the only SIMD types not wrapped in our own
Simd<_>
. In order to implement some conversion from/to arrays, it is necessary to wrap this in our ownSimd<_>
just like float SIMD types.This PR also:
simd_horizontal_min
andsimd_horizontal_max
.copysign
.libm_force
feature that force the use oflibm
even when we don't targetno-std
.libm
is now opt-in when targettingno-std
. This will prevent hidden performance regression whendefault-features = false
is activated without being aware this will automatically switch all operation to libm.