35#include <boost/test/unit_test.hpp>
40#include <boost/core/ignore_unused.hpp>
41#include <boost/test/tools/floating_point_comparison.hpp>
42#include <boost/test/unit_test.hpp>
46namespace FullMatrixOperationsUnitTests
48template <
typename DataType,
typename MatrixType>
51 boost::ignore_unused(
d);
57 boost::ignore_unused(
d);
67 double m_buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
68 double v_buf[] = {4, 5, 6};
73 double expected_result_buf[] = {66, 81, 96};
78 BOOST_CHECK_EQUAL(expected_result, result);
83 double m_buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
84 double v_buf[] = {4, 5, 6};
89 double expected_result_buf[] = {66, 81, 96};
94 BOOST_CHECK_EQUAL(expected_result, v);
98 TestDoubleSquareFullVectorMultiplicationWithSharedArrayAliasing)
100 double m_buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
101 double v_buf[] = {4, 5, 6};
109 double expected_result_buf[] = {66, 81, 96};
114 BOOST_CHECK_EQUAL(expected_result, result);
115 BOOST_CHECK_EQUAL(vector_array[0], 66);
116 BOOST_CHECK_EQUAL(vector_array[1], 81);
117 BOOST_CHECK_EQUAL(vector_array[2], 96);
121 TestDoubleSquareFullVectorMultiplicationWithSharedArrayAliasingAndMatrixTranspose)
123 double m_buf[] = {1, 4, 7, 2, 5, 8, 3, 6, 9};
124 double v_buf[] = {4, 5, 6};
132 double expected_result_buf[] = {66, 81, 96};
137 BOOST_CHECK_EQUAL(expected_result, result);
138 BOOST_CHECK_EQUAL(vector_array[0], 66);
139 BOOST_CHECK_EQUAL(vector_array[1], 81);
140 BOOST_CHECK_EQUAL(vector_array[2], 96);
144 TestDoubleSquareFullVectorMultiplicationWithSharedArrayAliasingAndOverlap)
146 double m_buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
147 double v_buf[] = {4, 5, 6, 0};
156 double expected_result_buf[] = {66, 81, 96};
161 BOOST_CHECK_EQUAL(expected_result, result);
162 BOOST_CHECK_EQUAL(vector_array[1], 66);
163 BOOST_CHECK_EQUAL(vector_array[2], 81);
164 BOOST_CHECK_EQUAL(vector_array[3], 96);
169 double m_buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
170 double v_buf[] = {4, 5, 6};
172 std::shared_ptr<NekMatrix<double>> inner(
177 double expected_result_buf[] = {462, 567, 672};
182 BOOST_CHECK_EQUAL(expected_result, result);
187 double buf1[] = {1.0, 2.0, 3.0, 4.0};
188 double buf2[] = {5.0, 6.0, 7.0, 8.0};
189 double buf3[] = {9.0, 10.0, 11.0, 12.0};
195 double expected_result_buf[] = {517, 766, 625, 926};
200 BOOST_CHECK_EQUAL(expected_result, m1 * m2 * m3);
202 BOOST_CHECK_EQUAL(expected_result, m1 * (m2 * m3));
207 double buf1[] = {1.0, 2.0, 3.0, 4.0};
208 double buf2[] = {5.0, 6.0, 7.0, 8.0};
209 double buf3[] = {9.0, 11.0, 10.0, 12.0};
215 double expected_result_buf[] = {517, 766, 625, 926};
218 BOOST_CHECK_EQUAL(expected_result, m1 * m2 *
Transpose(m3));
223 double buf1[] = {1.0, 2.0, 3.0, 4.0};
224 double buf2[] = {5.0, 6.0, 7.0, 8.0};
225 double buf3[] = {9.0, 11.0, 10.0, 12.0};
226 double out_buf[] = {0.0, 0.0, 0.0, 0.0};
238 double expected_result_buf[] = {517, 766, 625, 926};
242 BOOST_CHECK_EQUAL(expected_result, result);
243 BOOST_CHECK_EQUAL(array_out_buf[0], 517.0);
244 BOOST_CHECK_EQUAL(array_out_buf[1], 766.0);
245 BOOST_CHECK_EQUAL(array_out_buf[2], 625.0);
246 BOOST_CHECK_EQUAL(array_out_buf[3], 926.0);
247 BOOST_CHECK_EQUAL(result(0, 0), 517.0);
248 BOOST_CHECK_EQUAL(result(1, 0), 766.0);
249 BOOST_CHECK_EQUAL(result(0, 1), 625.0);
250 BOOST_CHECK_EQUAL(result(1, 1), 926.0);
BOOST_AUTO_TEST_CASE(TestDoubleSquareFullVectorMultiplication)
int foo(NekMatrix< DataType, MatrixType > &d)
std::vector< double > d(NPUPPER *NPUPPER)
The above copyright notice and this permission notice shall be included.
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)