|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r64262 - in sandbox/odeint/branches/karsten: . boost/numeric/odeint/algebra boost/numeric/odeint/stepper libs/numeric/odeint/test
From: karsten.ahnert_at_[hidden]
Date: 2010-07-22 10:59:47
Author: karsten
Date: 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
New Revision: 64262
URL: http://svn.boost.org/trac/boost/changeset/64262
Log:
adjuster changed
Added:
sandbox/odeint/branches/karsten/TODO (contents, props changed)
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/adjust_size.hpp (contents, props changed)
Text files modified:
sandbox/odeint/branches/karsten/boost/numeric/odeint/algebra/standard_algebra.hpp | 5 -
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/controlled_error_stepper.hpp | 89 +++++++++++++++++++++++++
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_error_rk54_ck.hpp | 26 ++----
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_rk4.hpp | 21 ++---
sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_stepper_base.hpp | 140 ++++++++++-----------------------------
sandbox/odeint/branches/karsten/libs/numeric/odeint/test/check_stepper_concepts.cpp | 1
6 files changed, 145 insertions(+), 137 deletions(-)
Added: sandbox/odeint/branches/karsten/TODO
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/TODO 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -0,0 +1,16 @@
+* Controlled stepper
+* Dense output for euler
+* Integrate functions
+* Implicit euler
+* skript for setting the include defines according to the position in file system an writing a general copyright comment at the beginning
+
+
+* Adaptoren
+ * GMP
+ * gsl_complex, gsl_complex_vector
+
+
+* Examples
+ * Lyapunov exponents
+ * Thrust example with a parameter study
+ * A test with boost.graph, phase oscillators on a complex network
\ No newline at end of file
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/algebra/standard_algebra.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/algebra/standard_algebra.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/algebra/standard_algebra.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -43,7 +43,6 @@
template< class StateType1 , class StateType2 , class StateType3 , class Operation >
static void for_each3( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , Operation op )
{
- // ToDo : check that number of arguments of the operation is equal 3
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType1 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType2 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType3 , container_type );
@@ -60,7 +59,6 @@
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 , class Operation >
static void for_each4( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 , Operation op )
{
- // ToDo : check that number of arguments of the operation is equal 4
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType1 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType2 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType3 , container_type );
@@ -79,7 +77,6 @@
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 , class StateType5 , class Operation >
static void for_each5( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 , StateType5 &s5 , Operation op )
{
- // ToDo : check that number of arguments of the operation is equal 5
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType1 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType2 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType3 , container_type );
@@ -100,7 +97,6 @@
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 , class StateType5 , class StateType6 , class Operation >
static void for_each6( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 , StateType5 &s5 , StateType6 &s6 , Operation op )
{
- // ToDo : check that number of arguments of the operation is equal 6
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType1 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType2 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType3 , container_type );
@@ -122,7 +118,6 @@
template< class StateType1 , class StateType2 , class StateType3 , class StateType4 , class StateType5 , class StateType6 ,class StateType7 , class Operation >
static void for_each7( StateType1 &s1 , StateType2 &s2 , StateType3 &s3 , StateType4 &s4 , StateType5 &s5 , StateType6 &s6 , StateType7 &s7 , Operation op )
{
- // ToDo : check that number of arguments of the operation is equal 7
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType1 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType2 , container_type );
BOOST_ODEINT_CHECK_CONTAINER_TYPE( StateType3 , container_type );
Added: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/adjust_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/adjust_size.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -0,0 +1,161 @@
+/*
+ boost header: NUMERIC_ODEINT/adjust_size.hpp
+
+ Copyright 2009 Karsten Ahnert
+ Copyright 2009 Mario Mulansky
+ Copyright 2009 Andre Bergner
+
+ 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)
+*/
+
+#ifndef BOOST_NUMERIC_ODEINT_ADJUST_SIZE_HPP_INCLUDED
+#define BOOST_NUMERIC_ODEINT_ADJUST_SIZE_HPP_INCLUDED
+
+#include <boost/numeric/odeint/algebra/standard_resize.hpp>
+
+#include <boost/ptr_container/ptr_array.hpp>
+#include <boost/utility.hpp>
+
+namespace boost {
+namespace numeric {
+namespace odeint {
+
+
+
+/*
+ * Tags to specify resize behavior of steppers
+ */
+struct adjust_size_manually_tag {};
+struct adjust_size_initially_tag {};
+struct adjust_size_always_tag {};
+
+
+
+
+
+
+/*
+ * Adjust size functionality with policies and resizeability
+ */
+template< class State , size_t Dim >
+class size_adjuster
+{
+public:
+
+ size_adjuster() : m_is_initialized( false ) { }
+
+ void adjust_size( const State &x )
+ {
+ adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+ }
+
+ void adjust_size_by_policy( const State &x , adjust_size_manually_tag )
+ {
+ }
+
+ void adjust_size_by_policy( const State &x , adjust_size_initially_tag )
+ {
+ if( !m_is_initialized )
+ {
+ adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+ m_is_initialized = true;
+ }
+ }
+
+ void adjust_size_by_policy( const State &x , adjust_size_always_tag )
+ {
+ adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+ }
+
+ void register_state( size_t idx , State &x )
+ {
+ states.replace( idx , &x );
+ }
+
+
+private:
+
+ void adjust_size_by_resizeability( const State &x , boost::true_type )
+ {
+ for( size_t i=0 ; i<Dim ; ++i ) boost::numeric::odeint::adjust_size( x , states[i] );
+ // adjust_size_impl( x );
+ }
+
+ void adjust_size_by_resizeability( const State &x , boost::false_type )
+ {
+ }
+
+
+private :
+
+ bool m_is_initialized;
+ boost::ptr_array< State , Dim , boost::view_clone_allocator > states;
+};
+
+
+
+
+
+
+
+
+
+//template< class State , class AdjustSizeImpl >
+//class size_adjuster
+//{
+//public:
+//
+// size_adjuster( AdjustSizeImpl &adjust_size_impl ) : m_is_initialized( false ) , m_adjust_size_impl( adjust_size_impl ) { }
+//
+// void adjust_size( const State &x )
+// {
+// adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+// }
+//
+// void adjust_size_by_policy( const State &x , adjust_size_manually_tag )
+// {
+// }
+//
+// void adjust_size_by_policy( const State &x , adjust_size_initially_tag )
+// {
+// if( !m_is_initialized )
+// {
+// adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+// m_is_initialized = true;
+// }
+// }
+//
+// void adjust_size_by_policy( const State &x , adjust_size_always_tag )
+// {
+// adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
+// }
+//
+//
+//private:
+//
+//
+// void adjust_size_by_resizeability( const State &x , boost::true_type )
+// {
+// m_adjust_size_impl( x );
+// }
+//
+// void adjust_size_by_resizeability( const State &x , boost::false_type )
+// {
+// }
+//
+//
+//private :
+//
+// bool m_is_initialized;
+// AdjustSizeImpl &m_adjust_size_impl;
+//};
+
+
+} // odeint
+} // numeric
+} // boost
+
+
+#endif //BOOST_NUMERIC_ODEINT_ADJUST_SIZE_HPP_INCLUDED
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/controlled_error_stepper.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/controlled_error_stepper.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/controlled_error_stepper.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -23,6 +23,95 @@
namespace numeric {
namespace odeint {
+typedef enum
+{
+ success_step_size_unchanged ,
+ step_size_decreased ,
+ success_step_size_increased
+} controlled_step_result;
+
+
+template<
+ class ErrorStepper ,
+
+
+ >
+class controlled_error_stepper
+{
+public:
+
+ typedef ErrorStepper error_stepper_type;
+ typedef typename error_stepper_type::state_type state_type;
+ typedef typename error_stepper_type::time_type time_type;
+ typedef typename error_stepper_type::order_type order_type;
+
+
+
+ template< class System >
+ controlled_step_result try_step( System &sys , state_type &x , const state_type &dxdt , time_type &t , time_type &dt )
+ {
+ using std::max;
+
+ // adjust size
+
+ m_error_checker.fill_scale( x , dxdt , dt , m_x_scale );
+
+ m_x_tmp = x;
+ m_stepper.do_step( system , x , dxdt , t , dt , m_x_err );
+
+ time_type max_rel_err = m_error_checker.get_max_error_ratio( m_x_err , m_x_scale );
+
+ if( max_rel_err > 1.1 )
+ {
+ // error too large - decrease dt
+ // limit scaling factor to 0.2
+ dt *= std::max( 0.9 * pow( max_rel_err , -1.0/(m_stepper.order_error()-1.0) ),
+ 0.2 );
+
+ // reset state
+ x = m_x_tmp;
+ return step_size_decreased;
+ }
+ else
+ {
+ if( max_rel_err < 0.5 )
+ {
+ //error too small - increase dt and keep the evolution
+ t += dt;
+ // limit scaling factor to 5.0
+ dt *= std::min( 0.9*pow(max_rel_err , -1.0/m_stepper.order_error_step()), 5.0 );
+ return success_step_size_increased;
+ }
+ else
+ {
+ t += dt;
+ return success_step_size_unchanged;
+ }
+ }
+ }
+
+ template< class System >
+ controlled_step_result try_step( System &sys , state_type &x , time_type &t , time_type &dt )
+ {
+
+ system( x , m_dxdt , t );
+ return try_step( system , x , m_dxdt , t , dt );
+ }
+
+
+private:
+
+ time_type m_eps_abs;
+ time_type m_eps_rel;
+ time_type m_a_x;
+ time_type m_a_dxdt;
+
+ state_type m_dxdt;
+ state_type m_x_tmp;
+ state_type m_x_err;
+ state_type m_x_scale;
+
+};
//template<
// class State ,
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_error_rk54_ck.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_error_rk54_ck.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_error_rk54_ck.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -49,8 +49,15 @@
BOOST_ODEINT_EXPLICIT_STEPPERS_AND_ERROR_STEPPERS_TYPEDEFS( explicit_error_rk54_ck , 5 , 5 , 4);
- explicit_error_rk54_ck( void ) : m_size_adjuster( *this ) , m_x1() , m_x2() , m_x3() , m_x4() , m_x5() , m_x6()
- { }
+ explicit_error_rk54_ck( void ) : m_size_adjuster() , m_x1() , m_x2() , m_x3() , m_x4() , m_x5() , m_x6()
+ {
+ m_size_adjuster.register_state( 0 , m_x1 );
+ m_size_adjuster.register_state( 1 , m_x2 );
+ m_size_adjuster.register_state( 2 , m_x3 );
+ m_size_adjuster.register_state( 3 , m_x4 );
+ m_size_adjuster.register_state( 4 , m_x5 );
+ m_size_adjuster.register_state( 5 , m_x6 );
+ }
template< class System >
@@ -152,20 +159,7 @@
private:
- typedef size_adjuster< state_type , stepper_type > size_adjuster_type;
- friend class size_adjuster< state_type , stepper_type >;
-
- void adjust_size_impl( const state_type &x )
- {
- boost::numeric::odeint::adjust_size( x , m_x1 );
- boost::numeric::odeint::adjust_size( x , m_x2 );
- boost::numeric::odeint::adjust_size( x , m_x3 );
- boost::numeric::odeint::adjust_size( x , m_x4 );
- boost::numeric::odeint::adjust_size( x , m_x5 );
- boost::numeric::odeint::adjust_size( x , m_x6 );
- }
-
- size_adjuster_type m_size_adjuster;
+ size_adjuster< state_type , 6 > m_size_adjuster;
state_type m_x1, m_x2, m_x3, m_x4, m_x5, m_x6;
};
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_rk4.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_rk4.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_rk4.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -44,7 +44,13 @@
BOOST_ODEINT_EXPLICIT_STEPPERS_TYPEDEFS( explicit_rk4 , 1 );
- explicit_rk4( void ) : m_size_adjuster( *this ) { }
+ explicit_rk4( void ) : m_size_adjuster() , m_dxt() , m_dxm() , m_dxh() , m_xt()
+ {
+ m_size_adjuster.register_state( 0 , m_dxt );
+ m_size_adjuster.register_state( 1 , m_dxm );
+ m_size_adjuster.register_state( 2 , m_dxh );
+ m_size_adjuster.register_state( 3 , m_xt );
+ }
template< class System >
void do_step_impl( System system , state_type &x , const state_type &dxdt , time_type t , time_type dt )
@@ -92,18 +98,7 @@
private:
- typedef size_adjuster< state_type , stepper_type > size_adjuster_type;
- friend class size_adjuster< state_type , stepper_type >;
-
- void adjust_size_impl( const state_type &x )
- {
- boost::numeric::odeint::adjust_size( x , m_dxt );
- boost::numeric::odeint::adjust_size( x , m_dxm );
- boost::numeric::odeint::adjust_size( x , m_dxh );
- boost::numeric::odeint::adjust_size( x , m_xt );
- }
-
- size_adjuster_type m_size_adjuster;
+ size_adjuster< state_type , 4 > m_size_adjuster;
state_type m_dxt;
state_type m_dxm;
Modified: sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_stepper_base.hpp
==============================================================================
--- sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_stepper_base.hpp (original)
+++ sandbox/odeint/branches/karsten/boost/numeric/odeint/stepper/explicit_stepper_base.hpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -14,10 +14,15 @@
#define BOOST_BOOST_NUMERIC_ODEINT_EXPLICIT_STEPPER_BASE_HPP_INCLUDED
+#include <boost/mem_fn.hpp>
+#include <boost/bind.hpp>
+
+#include <boost/numeric/odeint/stepper/adjust_size.hpp>
#include <boost/numeric/odeint/algebra/standard_resize.hpp>
+
namespace boost {
namespace numeric {
namespace odeint {
@@ -26,75 +31,6 @@
-/*
- * Tags to specify resize behavior of steppers
- */
-struct adjust_size_manually_tag {};
-struct adjust_size_initially_tag {};
-struct adjust_size_always_tag {};
-
-
-
-
-/*
- * Adjust size functionality with policies and resizeability
- */
-template< class State , class Stepper >
-class size_adjuster
-{
-public:
-
- size_adjuster( Stepper &stepper ) : m_is_initialized( false ) , m_stepper( stepper ) { }
-
- void adjust_size( const State &x )
- {
- adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
- }
-
- void adjust_size_by_policy( const State &x , adjust_size_manually_tag )
- {
- }
-
- void adjust_size_by_policy( const State &x , adjust_size_initially_tag )
- {
- if( !m_is_initialized )
- {
- adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
- m_is_initialized = true;
- }
- }
-
- void adjust_size_by_policy( const State &x , adjust_size_always_tag )
- {
- adjust_size_by_resizeability( x , typename is_resizeable< State >::type() );
- }
-
-
-private:
-
-
- void adjust_size_by_resizeability( const State &x , boost::true_type )
- {
- m_stepper.adjust_size_impl( x );
- }
-
- void adjust_size_by_resizeability( const State &x , boost::false_type )
- {
- }
-
-
-private :
-
- bool m_is_initialized;
- Stepper &m_stepper;
-};
-
-
-
-
-
-
-
/*
@@ -122,13 +58,18 @@
typedef AdjustSizePolicy adjust_size_policy;
typedef Stepper stepper_type;
+ typedef explicit_stepper_base< Stepper , Order , State , Time , Algebra , Operations , AdjustSizePolicy > internal_stepper_base_type;
+
typedef unsigned short order_type;
static const order_type order_value = Order;
order_type order( void ) const { return order_value; }
- explicit_stepper_base( void ) : m_size_adjuster( *this ) { }
+ explicit_stepper_base( void ) : m_size_adjuster() , m_dxdt()
+ {
+ m_size_adjuster.register_state( 0 , m_dxdt );
+ }
stepper_type& stepper( void ) { return *static_cast< stepper_type* >( this ); }
@@ -144,27 +85,24 @@
this->stepper().do_step_impl( system , x , m_dxdt , t , dt );
}
-
- void adjust_size( const state_type &x )
+ template< class System >
+ void do_step( System system , state_type &x , const state_type dxdt , time_type t , time_type dt )
{
- m_size_adjuster.adjust_size( x );
+ this->stepper().do_step_impl( system , x , dxdt , t , dt );
}
-private:
-
- typedef explicit_stepper_base< Stepper , Order , State , Time , Algebra , Operations , AdjustSizePolicy > internal_stepper_base_type;
- typedef size_adjuster< state_type , internal_stepper_base_type > base_size_adjuster_type;
- friend class size_adjuster< state_type , internal_stepper_base_type >;
- void adjust_size_impl( const state_type &x )
+ void adjust_size( const state_type &x )
{
- boost::numeric::odeint::adjust_size( x , m_dxdt );
+ m_size_adjuster.adjust_size( x );
}
+private:
+
+ size_adjuster< state_type , 1 > m_size_adjuster;
state_type m_dxdt;
- base_size_adjuster_type m_size_adjuster;
};
@@ -213,7 +151,10 @@
order_type error_order( void ) const { return error_order_value; }
- explicit_error_stepper_base( void ) : m_size_adjuster( *this ) { }
+ explicit_error_stepper_base( void ) : m_size_adjuster() , m_dxdt()
+ {
+ m_size_adjuster.register_state( 0 , m_dxdt );
+ }
stepper_type& stepper( void ) { return *static_cast< stepper_type* >( this ); }
@@ -229,6 +170,13 @@
this->stepper().do_step_impl( system , x , m_dxdt , t , dt , xerr );
}
+ template< class System >
+ void do_step( System system , state_type &x , const state_type &dxdt , time_type t , time_type dt , state_type &xerr )
+ {
+ this->stepper().do_step_impl( system , x , dxdt , t , dt , xerr );
+ }
+
+
void adjust_size( const state_type &x )
{
@@ -238,17 +186,8 @@
private:
- typedef explicit_error_stepper_base< ErrorStepper , StepperOrder , ErrorOrder , State , Time , Algebra , Operations , AdjustSizePolicy > internal_stepper_base_type;
- typedef size_adjuster< state_type , internal_stepper_base_type > base_size_adjuster_type;
- friend class size_adjuster< state_type , internal_stepper_base_type >;
-
- void adjust_size_impl( const state_type &x )
- {
- boost::numeric::odeint::adjust_size( x , m_dxdt );
- }
-
+ size_adjuster< state_type , 1 > m_size_adjuster;
state_type m_dxdt;
- base_size_adjuster_type m_size_adjuster;
};
@@ -305,7 +244,10 @@
order_type error_order( void ) const { return error_order_value; }
- explicit_stepper_and_error_stepper_base( void ) : m_size_adjuster( *this ) { }
+ explicit_stepper_and_error_stepper_base( void ) : m_size_adjuster() , m_dxdt()
+ {
+ m_size_adjuster.register_state( 0 , m_dxdt );
+ }
stepper_type& stepper( void ) { return *static_cast< stepper_type* >( this ); }
@@ -340,17 +282,9 @@
private:
- typedef explicit_stepper_and_error_stepper_base< Stepper , Order , StepperOrder , ErrorOrder , State , Time , Algebra , Operations , AdjustSizePolicy > internal_stepper_base_type;
- typedef size_adjuster< state_type , internal_stepper_base_type > base_size_adjuster_type;
- friend class size_adjuster< state_type , internal_stepper_base_type >;
-
- void adjust_size_impl( const state_type &x )
- {
- boost::numeric::odeint::adjust_size( x , m_dxdt );
- }
-
+ size_adjuster< state_type , 1 > m_size_adjuster;
state_type m_dxdt;
- base_size_adjuster_type m_size_adjuster;
+
};
Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/test/check_stepper_concepts.cpp
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/test/check_stepper_concepts.cpp (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/test/check_stepper_concepts.cpp 2010-07-22 10:59:46 EDT (Thu, 22 Jul 2010)
@@ -98,6 +98,7 @@
}
};
+// ToDo : implement
template< class Stepper >
struct perform_stepper_test< Stepper , gsl_vector_type >
{
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk