38#include <boost/core/ignore_unused.hpp>
39#include <boost/test/tools/floating_point_comparison.hpp>
40#include <boost/test/unit_test.hpp>
44namespace VmathSIMDUnitTests
48 using dataType = double;
49 constexpr size_t n = 31;
52 dataType epsilon = std::numeric_limits<dataType>::epsilon();
55 for (
size_t i = 0; i < n; ++i)
63 for (
size_t i = 0; i < n; ++i)
65 BOOST_CHECK_CLOSE(
z[i], 2.0, epsilon);
71 for (
size_t i = 0; i < n; ++i)
79 for (
size_t i = 0; i < n; ++i)
81 BOOST_CHECK_CLOSE(
z[i], 2.0, epsilon);
87 for (
size_t i = 0; i < n; ++i)
95 for (
size_t i = 0; i < n; ++i)
97 BOOST_CHECK_CLOSE(
z[i], -2.0, epsilon);
103 using dataType = double;
104 constexpr size_t n = 31;
107 dataType epsilon = std::numeric_limits<dataType>::epsilon();
110 for (
size_t i = 0; i < n; ++i)
118 for (
size_t i = 0; i < n; ++i)
120 BOOST_CHECK_CLOSE(
z[i], i, epsilon);
126 for (
size_t i = 0; i < n; ++i)
134 for (
size_t i = 0; i < n; ++i)
136 BOOST_CHECK_CLOSE(
z[i], 0.0, epsilon);
142 for (
size_t i = 0; i < n; ++i)
150 for (
size_t i = 0; i < n; ++i)
152 BOOST_CHECK_CLOSE(
z[i], -2.0, epsilon);
158 using dataType = double;
159 constexpr size_t n = 11;
162 dataType epsilon = std::numeric_limits<dataType>::epsilon();
165 for (
size_t i = 0; i < n; ++i)
174 for (
size_t i = 0; i < n; ++i)
176 BOOST_CHECK_CLOSE(
z[i], 2.0, epsilon);
182 for (
size_t i = 0; i < n; ++i)
191 for (
size_t i = 0; i < n; ++i)
193 BOOST_CHECK_CLOSE(
z[i], 0.5, epsilon);
199 for (
size_t i = 0; i < n; ++i)
208 for (
size_t i = 0; i < n; ++i)
210 BOOST_CHECK_CLOSE(
z[i], 0.5, epsilon);
216 using dataType = double;
217 constexpr size_t n = 11;
220 dataType epsilon = std::numeric_limits<dataType>::epsilon();
223 for (
size_t i = 0; i < n; ++i)
233 for (
size_t i = 0; i < n; ++i)
235 BOOST_CHECK_CLOSE(
z[i], 2.0, epsilon);
241 for (
size_t i = 0; i < n; ++i)
251 for (
size_t i = 0; i < n; ++i)
253 BOOST_CHECK_CLOSE(
z[i], 0.5, epsilon);
259 for (
size_t i = 0; i < n; ++i)
269 for (
size_t i = 0; i < n; ++i)
271 BOOST_CHECK_CLOSE(
z[i], 0.5, epsilon);
277 using dataType = double;
278 constexpr size_t n = 11;
279 std::array<dataType, n> x;
280 constexpr size_t ni = 5;
281 std::array<size_t, ni> y;
282 std::array<dataType, ni>
z;
284 dataType epsilon = std::numeric_limits<dataType>::epsilon();
287 for (
size_t i = 0; i < n; ++i)
301 for (
size_t i = 0; i < ni; ++i)
303 BOOST_CHECK_CLOSE(
z[i], x[y[i]], epsilon);
309 using dataType = double;
310 constexpr size_t n = 30;
311 std::array<dataType, n> x;
312 constexpr int ni = 13;
313 std::array<int, ni> y;
314 std::array<dataType, ni>
z;
316 dataType epsilon = std::numeric_limits<dataType>::epsilon();
319 for (
size_t i = 0; i < n; ++i)
341 for (
size_t i = 0; i < ni; ++i)
343 BOOST_CHECK_CLOSE(
z[i], x[y[i]], epsilon);
std::vector< double > w(NPUPPER)
std::vector< double > z(NPUPPER)
BOOST_AUTO_TEST_CASE(TestVadd)
The above copyright notice and this permission notice shall be included.
void Vvtvp(const size_t n, const T *w, const T *x, const T *y, T *z)
vvtvp (vector times vector plus vector): z = w*x + y
void Vadd(const size_t n, const T *x, const T *y, T *z)
Add vector z = x + y.
void Gathr(const I n, const T *x, const I *y, T *z)
Gather vector z[i] = x[y[i]].
void Vvtvvtp(const size_t n, const T *v, const T *w, const T *x, const T *y, T *z)
vvtvvtp (vector times vector plus vector times vector):
void Vmul(const size_t n, const T *x, const T *y, T *z)
Multiply vector z = x * y.
typename abi< ScalarType, width >::type simd