123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /* Boost check_mkl.cpp test file
- Copyright 2010-2011 Mario Mulansky
- Copyright 2011 Karsten Ahnert
- This file tests the odeint library with the intel mkl blas1 routines
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at http://www.boost.org/LICENSE_1_0.txt)
- */
- #define BOOST_TEST_MODULE test_mkl
- #include <boost/test/unit_test.hpp>
- #include <boost/numeric/odeint/stepper/euler.hpp>
- #include <boost/numeric/odeint/stepper/runge_kutta4.hpp>
- #include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
- #include <boost/numeric/odeint/external/mkl/mkl_operations.hpp>
- using namespace boost::numeric::odeint;
- typedef double value_type;
- typedef boost::array< value_type , 1 > state_type;
- void constant_system( state_type &x , state_type &dxdt , value_type t )
- {
- dxdt[0] = 1.0;
- }
- const double eps = 1E-14;
- BOOST_AUTO_TEST_CASE( test_mkl )
- {
- //to use mkl routines we have to use the vector_space_algebra and the mkl_operations
- runge_kutta4< state_type , value_type , state_type , value_type , vector_space_algebra , mkl_operations > stepper;
- state_type x;
- x[0] = 0.0;
- stepper.do_step( constant_system , x , 0.0 , 0.1 );
- using std::abs;
- std::cout << x[0] << " ?= " << 0.1 << std::endl;
- BOOST_CHECK_SMALL( abs( x[0] - 0.1 ) , eps );
- }
|