diff -Naur /old/libs/numeric/ublas/test/utils.hpp /new/libs/numeric/ublas/test/utils.hpp
|
old
|
new
|
|
| 56 | 56 | #include <boost/numeric/ublas/traits.hpp> |
| 57 | 57 | #include <cmath> |
| 58 | 58 | #include <complex> |
| | 59 | #include <cstddef> |
| 59 | 60 | #include <iostream> |
| 60 | 61 | #include <limits> |
| 61 | 62 | #include <stdexcept> |
| … |
… |
|
| 143 | 144 | }}}}}} // Namespace boost::numeric::ublas::test::detail::<unnamed> |
| 144 | 145 | |
| 145 | 146 | |
| 146 | | /// Expand its argument. |
| | 147 | /// Expand its argument \a x. |
| 147 | 148 | #define BOOST_UBLAS_TEST_EXPAND_(x) x |
| 148 | 149 | |
| 149 | 150 | |
| 150 | | /// Transform its argument into a string. |
| | 151 | /// Expand its argument \a x inside parenthesis. |
| | 152 | #define BOOST_UBLAS_TEST_EXPANDP_(x) (x) |
| | 153 | |
| | 154 | |
| | 155 | /// Transform its argument \a x into a string. |
| 151 | 156 | #define BOOST_UBLAS_TEST_STRINGIFY_(x) #x |
| 152 | 157 | |
| 153 | 158 | |
| 154 | | /// Concatenate its two \e string arguments. |
| | 159 | /// Concatenate its two \e string arguments \a x and \a y. |
| 155 | 160 | #define BOOST_UBLAS_TEST_JOIN_(x,y) x ## y |
| 156 | 161 | |
| 157 | 162 | |
| 158 | 163 | /// Output the message \a x if in debug-mode; otherwise output nothing. |
| | 164 | /// Note: we don't use macro expansion inside parenthesis to let \a m be an |
| | 165 | /// expression of the form <code>a << b</code>. |
| 159 | 166 | #ifndef NDEBUG |
| 160 | 167 | # define BOOST_UBLAS_DEBUG_TRACE(x) ::std::cerr << "[Debug>> " << BOOST_UBLAS_TEST_EXPAND_(x) << ::std::endl |
| 161 | 168 | #else |
| … |
… |
|
| 163 | 170 | #endif // NDEBUG |
| 164 | 171 | |
| 165 | 172 | |
| 166 | | /// Define the name of the entire test suite. |
| 167 | | #define BOOST_UBLAS_TEST_SUITE(m) ::std::cerr << "--- Test Suite: " << m << " ---" << ::std::endl; |
| | 173 | /// Define the name \a m of the entire test suite. |
| | 174 | #define BOOST_UBLAS_TEST_SUITE(m) ::std::cerr << "--- Test Suite: " << BOOST_UBLAS_TEST_EXPAND_(m) << " ---" << ::std::endl; |
| 168 | 175 | |
| 169 | 176 | |
| 170 | 177 | /// Define the beginning of a test suite. |
| 171 | 178 | #define BOOST_UBLAS_TEST_BEGIN() /* [BOOST_UBLAS_TEST_BEGIN] */ \ |
| 172 | 179 | { \ |
| 173 | 180 | /* Begin of Test Suite */ \ |
| 174 | | unsigned int test_fails__(0) \ |
| | 181 | ::std::size_t test_fails__(0) \ |
| 175 | 182 | /* [/BOOST_UBLAS_TEST_BEGIN] */ |
| 176 | 183 | |
| 177 | 184 | |
| 178 | 185 | /// Define a test case \a x inside the current test suite. |
| 179 | | #define BOOST_UBLAS_TEST_DEF(x) static void BOOST_UBLAS_TEST_EXPAND_(x)(unsigned int& test_fails__) |
| | 186 | #define BOOST_UBLAS_TEST_DEF(x) static void BOOST_UBLAS_TEST_EXPAND_(x)(::std::size_t& test_fails__) |
| 180 | 187 | |
| 181 | 188 | |
| 182 | 189 | /// Call the test case \a x. |
| … |
… |
|
| 212 | 219 | |
| 213 | 220 | |
| 214 | 221 | /// Output the message \a m. |
| | 222 | /// Note: we don't use macro expansion inside parenthesis to let \a m be an |
| | 223 | /// expression of the form <code>a << b</code>. |
| 215 | 224 | #define BOOST_UBLAS_TEST_TRACE(m) ::std::cerr << "[Info>> " << BOOST_UBLAS_TEST_EXPAND_(m) << ::std::endl |
| 216 | 225 | |
| 217 | 226 | |
| 218 | 227 | /// Check the truth of assertion \a x. |
| 219 | 228 | #define BOOST_UBLAS_TEST_CHECK(x) /* [BOOST_UBLAS_TEST_CHECK] */ \ |
| 220 | | if (!(x)) \ |
| | 229 | if (!BOOST_UBLAS_TEST_EXPANDP_(x)) \ |
| 221 | 230 | { \ |
| 222 | 231 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: " << BOOST_UBLAS_TEST_STRINGIFY_(x) ); \ |
| 223 | 232 | ++test_fails__; \ |
| … |
… |
|
| 227 | 236 | |
| 228 | 237 | /// Check for the equality of \a x against \a y. |
| 229 | 238 | #define BOOST_UBLAS_TEST_CHECK_EQ(x,y) /* [BOOST_UBLAS_TEST_CHECK_EQUAL] */ \ |
| 230 | | if (!(BOOST_UBLAS_TEST_EXPAND_(x) == BOOST_UBLAS_TEST_EXPAND_(y))) \ |
| | 239 | if (!(BOOST_UBLAS_TEST_EXPANDP_(x) == BOOST_UBLAS_TEST_EXPANDP_(y))) \ |
| 231 | 240 | { \ |
| 232 | 241 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: (" << BOOST_UBLAS_TEST_STRINGIFY_(x) << " == " << BOOST_UBLAS_TEST_STRINGIFY_(y) << ")" ); \ |
| 233 | 242 | ++test_fails__; \ |
| … |
… |
|
| 239 | 248 | #define BOOST_UBLAS_TEST_CHECK_EQUAL(x,y) BOOST_UBLAS_TEST_CHECK_EQ(x,y) |
| 240 | 249 | |
| 241 | 250 | |
| 242 | | /// Check that \a x and \a y are close with respect to a given precision. |
| 243 | | #define BOOST_UBLAS_TEST_CHECK_CLOSE(x,y,e) /* [BOOST_UBLAS_TEST_CHECK_PRECISION] */ \ |
| | 251 | /// Check that \a x and \a y are close with respect to a given precision \a e. |
| | 252 | #define BOOST_UBLAS_TEST_CHECK_CLOSE(x,y,e) /* [BOOST_UBLAS_TEST_CHECK_CLOSE] */ \ |
| 244 | 253 | if (!::boost::numeric::ublas::test::detail::close_to(BOOST_UBLAS_TEST_EXPAND_(x), BOOST_UBLAS_TEST_EXPAND_(y), BOOST_UBLAS_TEST_EXPAND_(e))) \ |
| 245 | 254 | { \ |
| 246 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs(" << BOOST_UBLAS_TEST_STRINGIFY_(x) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x) << " == " << BOOST_UBLAS_TEST_EXPAND_(x) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y) << " == " << BOOST_UBLAS_TEST_EXPAND_(y) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " == " << BOOST_UBLAS_TEST_EXPAND_(e) << "]" ); \ |
| | 255 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs(" << BOOST_UBLAS_TEST_STRINGIFY_(x) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " == " << BOOST_UBLAS_TEST_EXPANDP_(e) << "]" ); \ |
| 247 | 256 | ++test_fails__; \ |
| 248 | 257 | } \ |
| 249 | | /* [/BOOST_UBLAS_TEST_CHECK_PRECISION] */ |
| | 258 | /* [/BOOST_UBLAS_TEST_CHECK_CLOSE] */ |
| 250 | 259 | |
| 251 | 260 | |
| 252 | 261 | /// Alias for macro \c BOOST_UBLAS_TEST_CHECK_CLOSE (for backward compatibility), |
| 253 | 262 | #define BOOST_UBLAS_TEST_CHECK_PRECISION(x,y,e) BOOST_UBLAS_TEST_CHECK_CLOSE(x,y,e) |
| 254 | 263 | |
| 255 | 264 | |
| 256 | | /// Check that \a x is close to \a y with respect to a given relative precision. |
| 257 | | #define BOOST_UBLAS_TEST_CHECK_REL_CLOSE(x,y,e) /* [BOOST_UBLAS_TEST_CHECK_REL_PRECISION] */ \ |
| | 265 | /// Check that \a x is close to \a y with respect to a given relative precision \a e. |
| | 266 | #define BOOST_UBLAS_TEST_CHECK_REL_CLOSE(x,y,e) /* [BOOST_UBLAS_TEST_CHECK_REL_CLOSE] */ \ |
| 258 | 267 | if (!::boost::numeric::ublas::test::detail::rel_close_to(BOOST_UBLAS_TEST_EXPAND_(x), BOOST_UBLAS_TEST_EXPAND_(y), BOOST_UBLAS_TEST_EXPAND_(e))) \ |
| 259 | 268 | { \ |
| 260 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ")/" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x) << " == " << BOOST_UBLAS_TEST_EXPAND_(x) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y) << " == " << BOOST_UBLAS_TEST_EXPAND_(y) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " == " << BOOST_UBLAS_TEST_EXPAND_(e) << "]" ); \ |
| | 269 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ")/" << BOOST_UBLAS_TEST_STRINGIFY_(y) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " == " << BOOST_UBLAS_TEST_EXPANDP_(e) << "]" ); \ |
| 261 | 270 | ++test_fails__; \ |
| 262 | 271 | } \ |
| 263 | | /* [/BOOST_UBLAS_TEST_CHECK_REL_PRECISION] */ |
| | 272 | /* [/BOOST_UBLAS_TEST_CHECK_REL_CLOSE] */ |
| 264 | 273 | |
| 265 | 274 | |
| 266 | 275 | /// Alias for macro \c BOOST_UBLAS_TEST_CHECK_REL_CLOSE (for backward compatibility), |
| … |
… |
|
| 269 | 278 | |
| 270 | 279 | /// Check that elements of \a x and \a y are equal. |
| 271 | 280 | #define BOOST_UBLAS_TEST_CHECK_VECTOR_EQ(x,y,n) /* [BOOST_UBLAS_TEST_CHECK_VECTOR_EQ] */ \ |
| 272 | | if (BOOST_UBLAS_TEST_EXPAND_(n) > 0) \ |
| | 281 | if (BOOST_UBLAS_TEST_EXPANDP_(n) > 0) \ |
| 273 | 282 | { \ |
| 274 | | unsigned long n__ = BOOST_UBLAS_TEST_EXPAND_(n); \ |
| 275 | | for (unsigned long i__ = n__; i__ > 0; --i__) \ |
| | 283 | ::std::size_t n__ = BOOST_UBLAS_TEST_EXPAND_(n); \ |
| | 284 | for (::std::size_t i__ = n__; i__ > 0; --i__) \ |
| 276 | 285 | { \ |
| 277 | | if (!(BOOST_UBLAS_TEST_EXPAND_(x)[n__-i__]==BOOST_UBLAS_TEST_EXPAND_(y)[n__-i__])) \ |
| | 286 | if (!(BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__]==BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__])) \ |
| 278 | 287 | { \ |
| 279 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: (" << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << "==" << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << ")" << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << " == " << BOOST_UBLAS_TEST_EXPAND_(x)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << " == " << BOOST_UBLAS_TEST_EXPAND_(y)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << " and " << BOOST_UBLAS_TEST_STRINGIFY_(n) << " == " << n__ << "]" ); \ |
| | 288 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: (" << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << "==" << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << ")" << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << " and " << BOOST_UBLAS_TEST_STRINGIFY_(n) << " == " << n__ << "]" ); \ |
| 280 | 289 | ++test_fails__; \ |
| 281 | 290 | } \ |
| 282 | 291 | } \ |
| … |
… |
|
| 284 | 293 | /* [/BOOST_UBLAS_TEST_CHECK_VECTOR_EQ] */ |
| 285 | 294 | |
| 286 | 295 | |
| 287 | | /// Check that elements of \a x and \a y are close with respect to a given precision. |
| | 296 | /// Check that elements of \a x and \a y are close with respect to a given precision \a e. |
| 288 | 297 | #define BOOST_UBLAS_TEST_CHECK_VECTOR_CLOSE(x,y,n,e) /* [BOOST_UBLAS_TEST_CHECK_VECTOR_CLOSE] */ \ |
| 289 | | if (BOOST_UBLAS_TEST_EXPAND_(n) > 0) \ |
| | 298 | if (BOOST_UBLAS_TEST_EXPANDP_(n) > 0) \ |
| 290 | 299 | { \ |
| 291 | | unsigned long n__ = BOOST_UBLAS_TEST_EXPAND_(n); \ |
| 292 | | for (unsigned long i__ = n__; i__ > 0; --i__) \ |
| | 300 | ::std::size_t n__ = BOOST_UBLAS_TEST_EXPAND_(n); \ |
| | 301 | for (::std::size_t i__ = n__; i__ > 0; --i__) \ |
| 293 | 302 | { \ |
| 294 | | if (!::boost::numeric::ublas::test::detail::close_to(BOOST_UBLAS_TEST_EXPAND_(x)[n__-i__], BOOST_UBLAS_TEST_EXPAND_(y)[n__-i__], BOOST_UBLAS_TEST_EXPAND_(e))) \ |
| | 303 | if (!::boost::numeric::ublas::test::detail::close_to(BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__], BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__], BOOST_UBLAS_TEST_EXPANDP_(e))) \ |
| 295 | 304 | { \ |
| 296 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << " == " << BOOST_UBLAS_TEST_EXPAND_(x)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << " == " << BOOST_UBLAS_TEST_EXPAND_(y)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << " and " << BOOST_UBLAS_TEST_STRINGIFY_(n) << " == " << n__ << "]" ); \ |
| | 305 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << " and " << BOOST_UBLAS_TEST_STRINGIFY_(n) << " == " << n__ << "]" ); \ |
| 297 | 306 | ++test_fails__; \ |
| 298 | 307 | } \ |
| 299 | 308 | } \ |
| … |
… |
|
| 301 | 310 | /* [/BOOST_UBLAS_TEST_CHECK_VECTOR_CLOSE] */ |
| 302 | 311 | |
| 303 | 312 | |
| | 313 | /// Check that elements of \a x and \a y are close with respect to a given relative precision \a e. |
| | 314 | #define BOOST_UBLAS_TEST_CHECK_VECTOR_REL_CLOSE(x,y,n,e) /* [BOOST_UBLAS_TEST_CHECK_VECTOR_REL_CLOSE] */ \ |
| | 315 | if (BOOST_UBLAS_TEST_EXPANDP_(n) > 0) \ |
| | 316 | { \ |
| | 317 | ::std::size_t n__ = BOOST_UBLAS_TEST_EXPAND_(n); \ |
| | 318 | for (::std::size_t i__ = n__; i__ > 0; --i__) \ |
| | 319 | { \ |
| | 320 | if (!::boost::numeric::ublas::test::detail::rel_close_to(BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__], BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__], BOOST_UBLAS_TEST_EXPANDP_(e))) \ |
| | 321 | { \ |
| | 322 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y[i__]) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)[n__-i__] << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << " and " << BOOST_UBLAS_TEST_STRINGIFY_(n) << " == " << n__ << "]" ); \ |
| | 323 | ++test_fails__; \ |
| | 324 | } \ |
| | 325 | } \ |
| | 326 | } \ |
| | 327 | /* [/BOOST_UBLAS_TEST_CHECK_VECTOR_REL_CLOSE] */ |
| | 328 | |
| | 329 | |
| 304 | 330 | /// Check that elements of matrices \a x and \a y are equal. |
| 305 | 331 | #define BOOST_UBLAS_TEST_CHECK_MATRIX_EQ(x,y,nr,nc) /* [BOOST_UBLAS_TEST_CHECK_MATRIX_EQ] */ \ |
| 306 | | for (unsigned long i__ = 0; i__ < BOOST_UBLAS_TEST_EXPAND_(nr); ++i__) \ |
| | 332 | for (::std::size_t i__ = 0; i__ < BOOST_UBLAS_TEST_EXPANDP_(nr); ++i__) \ |
| 307 | 333 | { \ |
| 308 | | for (unsigned long j__ = 0; j__ < BOOST_UBLAS_TEST_EXPAND_(nc); ++j__) \ |
| | 334 | for (::std::size_t j__ = 0; j__ < BOOST_UBLAS_TEST_EXPANDP_(nc); ++j__) \ |
| 309 | 335 | { \ |
| 310 | | if (!(BOOST_UBLAS_TEST_EXPAND_(x)(i__,j__)==BOOST_UBLAS_TEST_EXPAND_(y)(i__,j__))) \ |
| | 336 | if (!(BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__)==BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__))) \ |
| 311 | 337 | { \ |
| 312 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: (" << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << ") [with " << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPAND_(x)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPAND_(y)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << ", " << BOOST_UBLAS_TEST_STRINGIFY_(j__) << " == " << BOOST_UBLAS_TEST_EXPAND_(j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(nr) << " == " << BOOST_UBLAS_TEST_EXPAND_(nr) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(nc) << " == " << BOOST_UBLAS_TEST_EXPAND_(nc) << "]" ); \ |
| | 338 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: (" << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << ") [with " << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << ", " << BOOST_UBLAS_TEST_STRINGIFY_(j__) << " == " << BOOST_UBLAS_TEST_EXPANDP_(j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(nr) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nr) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(nc) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nc) << "]" ); \ |
| | 339 | ++test_fails__; \ |
| 313 | 340 | } \ |
| 314 | 341 | } \ |
| 315 | 342 | } \ |
| 316 | 343 | /* [/BOOST_UBLAS_TEST_CHECK_MATRIX_EQ] */ |
| 317 | 344 | |
| 318 | 345 | |
| 319 | | /// Check that elements of matrices \a x and \a y are close with respect to a given precision. |
| | 346 | /// Check that elements of matrices \a x and \a y are close with respect to a given precision \a e. |
| 320 | 347 | #define BOOST_UBLAS_TEST_CHECK_MATRIX_CLOSE(x,y,nr,nc,e) /* [BOOST_UBLAS_TEST_CHECK_MATRIX_CLOSE] */ \ |
| 321 | | for (unsigned long i__ = 0; i__ < BOOST_UBLAS_TEST_EXPAND_(nr); ++i__) \ |
| | 348 | for (::std::size_t i__ = 0; i__ < BOOST_UBLAS_TEST_EXPANDP_(nr); ++i__) \ |
| 322 | 349 | { \ |
| 323 | | for (unsigned long j__ = 0; j__ < BOOST_UBLAS_TEST_EXPAND_(nc); ++j__) \ |
| | 350 | for (::std::size_t j__ = 0; j__ < BOOST_UBLAS_TEST_EXPANDP_(nc); ++j__) \ |
| 324 | 351 | { \ |
| 325 | | if (!::boost::numeric::ublas::test::detail::close_to(BOOST_UBLAS_TEST_EXPAND_(x)(i__,j__), BOOST_UBLAS_TEST_EXPAND_(y)(i__,j__), BOOST_UBLAS_TEST_EXPAND_(e))) \ |
| | 352 | if (!::boost::numeric::ublas::test::detail::close_to(BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__), BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__), BOOST_UBLAS_TEST_EXPANDP_(e))) \ |
| 326 | 353 | { \ |
| 327 | | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPAND_(x)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPAND_(y)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << ", " << BOOST_UBLAS_TEST_STRINGIFY_(j__) << " == " << BOOST_UBLAS_TEST_EXPAND_(j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(nr) << " == " << BOOST_UBLAS_TEST_EXPAND_(nr) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(nc) << " == " << BOOST_UBLAS_TEST_EXPAND_(nc) << "]" ); \ |
| | 354 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << ", " << BOOST_UBLAS_TEST_STRINGIFY_(j__) << " == " << BOOST_UBLAS_TEST_EXPANDP_(j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(nr) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nr) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(nc) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nc) << "]" ); \ |
| | 355 | ++test_fails__; \ |
| 328 | 356 | } \ |
| 329 | 357 | } \ |
| 330 | 358 | } \ |
| 331 | 359 | /* [/BOOST_UBLAS_TEST_CHECK_MATRIX_CLOSE] */ |
| 332 | 360 | |
| 333 | 361 | |
| | 362 | /// Check that elements of matrices \a x and \a y are close with respect to a given relative precision \a e. |
| | 363 | #define BOOST_UBLAS_TEST_CHECK_MATRIX_REL_CLOSE(x,y,nr,nc,e) /* [BOOST_UBLAS_TEST_CHECK_MATRIX_REL_CLOSE] */ \ |
| | 364 | for (::std::size_t i__ = 0; i__ < BOOST_UBLAS_TEST_EXPANDP_(nr); ++i__) \ |
| | 365 | { \ |
| | 366 | for (::std::size_t j__ = 0; j__ < BOOST_UBLAS_TEST_EXPANDP_(nc); ++j__) \ |
| | 367 | { \ |
| | 368 | if (!::boost::numeric::ublas::test::detail::rel_close_to(BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__), BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__), BOOST_UBLAS_TEST_EXPANDP_(e))) \ |
| | 369 | { \ |
| | 370 | BOOST_UBLAS_TEST_ERROR( "Failed assertion: abs((" << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << "-" << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << ") <= " << BOOST_UBLAS_TEST_STRINGIFY_(e) << " [with " << BOOST_UBLAS_TEST_STRINGIFY_(x(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(x)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(y(i__,j__)) << " == " << BOOST_UBLAS_TEST_EXPANDP_(y)(i__,j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(i__) << " == " << i__ << ", " << BOOST_UBLAS_TEST_STRINGIFY_(j__) << " == " << BOOST_UBLAS_TEST_EXPANDP_(j__) << ", " << BOOST_UBLAS_TEST_STRINGIFY_(nr) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nr) << " and " << BOOST_UBLAS_TEST_STRINGIFY_(nc) << " == " << BOOST_UBLAS_TEST_EXPANDP_(nc) << "]" ); \ |
| | 371 | ++test_fails__; \ |
| | 372 | } \ |
| | 373 | } \ |
| | 374 | } \ |
| | 375 | /* [/BOOST_UBLAS_TEST_CHECK_MATRIX_REL_CLOSE] */ |
| | 376 | |
| | 377 | |
| 334 | 378 | ///< Output the error message \a x. |
| 335 | 379 | #define BOOST_UBLAS_TEST_ERROR(x) ::std::cerr << "[Error (" << __FILE__ << ":" << __func__ << ":" << __LINE__ << ")>> " << BOOST_UBLAS_TEST_EXPAND_(x) << ::std::endl |
| 336 | 380 | |