pair sincos for vectors

This commit is contained in:
BlackMATov
2021-02-12 18:16:54 +07:00
parent ff624384ad
commit c8570c6687
2 changed files with 11 additions and 3 deletions

View File

@@ -576,10 +576,15 @@ namespace vmath_hpp
return map_join([](T x) { return atanh(x); }, xs);
}
template < typename T, size_t Size >
template < typename T, std::size_t Size >
std::pair<vec<T, Size>, vec<T, Size>> sincos(const vec<T, Size>& xs) {
return { sin(xs), cos(xs) };
}
template < typename T, std::size_t Size >
void sincos(const vec<T, Size>& xs, vec<T, Size>* ss, vec<T, Size>* cs) {
*ss = map_join([](T x){ return sin(x); }, xs);
*cs = map_join([](T x){ return cos(x); }, xs);
*ss = sin(xs);
*cs = cos(xs);
}
}

View File

@@ -155,6 +155,9 @@ TEST_CASE("vmath/vec_fun") {
sincos(float2(10.f,15.f), &out_ss, &out_cs);
REQUIRE(out_ss == uapprox2(sin(10.f), sin(15.f)));
REQUIRE(out_cs == uapprox2(cos(10.f), cos(15.f)));
const auto [out_ss2, out_cs2] = sincos(float2(10.f,15.f));
REQUIRE(out_ss2 == uapprox2(sin(10.f), sin(15.f)));
REQUIRE(out_cs2 == uapprox2(cos(10.f), cos(15.f)));
}
}