[PD-cvs] externals/tb/chaos/src bernoulli_map.hpp, 1.6, 1.7 bungalow_tent_map.hpp, 1.6, 1.7 chaos_base.hpp, 1.9, 1.10 chaos_defs.hpp, 1.5, 1.6 chaos_dsp.hpp, 1.15, 1.16 chaos_msg.hpp, 1.3, 1.4 chaos_search.hpp, 1.1, 1.2 chua.hpp, 1.4, 1.5 circle_map.hpp, 1.6, 1.7 coupled_logistic.hpp, 1.5, 1.6 delayed_logistic.hpp, 1.2, 1.3 driven_anharmonic.hpp, 1.5, 1.6 driven_van_der_pol.hpp, 1.4, 1.5 duffing.hpp, 1.1, 1.2 duffing_map.hpp, 1.3, 1.4 gauss_map.hpp, 1.6, 1.7 gaussian_map.hpp, 1.2, 1.3 henon_map.hpp, 1.6, 1.7 hydrogen.hpp, 1.2, 1.3 ikeda_laser_map.hpp, 1.6, 1.7 latoocarfian.hpp, 1.5, 1.6 latoomutalpha.hpp, 1.5, 1.6 latoomutbeta.hpp, 1.5, 1.6 latoomutgamma.hpp, 1.6, 1.7 linear_congruental.hpp, 1.1, 1.2 logistic_map.hpp, 1.9, 1.10 lorenz.hpp, 1.9, 1.10 lozi_map.hpp, 1.7, 1.8 map_base.hpp, 1.4, 1.5 ode_base.cpp, 1.3, 1.4 ode_base.hpp, 1.6, 1.7 roessler.hpp, 1.5, 1.6 sine_map.hpp, 1.6, 1.7 standard_map.hpp, 1.6, 1.7 tent_map.hpp, 1.6, 1.7

Tim Blechmann timblech at users.sourceforge.net
Sun May 21 20:34:36 CEST 2006


Update of /cvsroot/pure-data/externals/tb/chaos/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30481

Modified Files:
	bernoulli_map.hpp bungalow_tent_map.hpp chaos_base.hpp 
	chaos_defs.hpp chaos_dsp.hpp chaos_msg.hpp chaos_search.hpp 
	chua.hpp circle_map.hpp coupled_logistic.hpp 
	delayed_logistic.hpp driven_anharmonic.hpp 
	driven_van_der_pol.hpp duffing.hpp duffing_map.hpp 
	gauss_map.hpp gaussian_map.hpp henon_map.hpp hydrogen.hpp 
	ikeda_laser_map.hpp latoocarfian.hpp latoomutalpha.hpp 
	latoomutbeta.hpp latoomutgamma.hpp linear_congruental.hpp 
	logistic_map.hpp lorenz.hpp lozi_map.hpp map_base.hpp 
	ode_base.cpp ode_base.hpp roessler.hpp sine_map.hpp 
	standard_map.hpp tent_map.hpp 
Log Message:
rewrote most stuff using templates





Index: bungalow_tent_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/bungalow_tent_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** bungalow_tent_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- bungalow_tent_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 34,42 ****
  
  class bungalow_tent:
! 	public map_base
  {
  public:
! 	bungalow_tent():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0.6,0);
--- 34,41 ----
  
  class bungalow_tent:
! 	public map_base<1>
  {
  public:
! 	bungalow_tent()
  	{
  		CHAOS_SYS_INIT(x, 0.6,0);
***************
*** 44,52 ****
  	}
  
- 	~bungalow_tent()
- 	{
- 		
- 	}
- 
  	virtual void m_step()
  	{
--- 43,46 ----

Index: latoomutgamma.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/latoomutgamma.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** latoomutgamma.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- latoomutgamma.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 28,36 ****
  
  class latoomutgamma
! 	: public map_base
  {
  public:
! 	latoomutgamma():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
--- 28,35 ----
  
  class latoomutgamma
! 	: public map_base<2>
  {
  public:
! 	latoomutgamma()
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
***************
*** 40,48 ****
  		CHAOS_PAR_INIT(b,2.879879);
  	}
- 	
- 	~latoomutgamma()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 39,42 ----
***************
*** 60,64 ****
  
  	/* function has a fix point for x1 == x2 == 0 */
! 	virtual void m_verify() 
  	{
  		if (m_data[0] == 0 && m_data[1] == 0)
--- 54,58 ----
  
  	/* function has a fix point for x1 == x2 == 0 */
! 	void m_verify() 
  	{
  		if (m_data[0] == 0 && m_data[1] == 0)

Index: lozi_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/lozi_map.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** lozi_map.hpp	22 Oct 2005 15:11:45 -0000	1.7
--- lozi_map.hpp	21 May 2006 18:34:34 -0000	1.8
***************
*** 27,35 ****
  
  class lozi_map:
! 	public map_base
  {
  public:
! 	lozi_map():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x,0,0);
--- 27,34 ----
  
  class lozi_map:
! 	public map_base<2>
  {
  public:
! 	lozi_map()
  	{
  		CHAOS_SYS_INIT(x,0,0);
***************
*** 40,48 ****
  	}
  
- 	~lozi_map()
- 	{
- 		
- 	}
- 
  	virtual void m_step()
  	{
--- 39,42 ----

Index: duffing.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/duffing.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** duffing.hpp	1 Nov 2005 21:28:21 -0000	1.1
--- duffing.hpp	21 May 2006 18:34:34 -0000	1.2
***************
*** 27,35 ****
  
  class duffing:
! 	public ode_base
  {
  public:
! 	duffing():
! 		ode_base(2)
  	{
  		CHAOS_PAR_INIT(method,0);
--- 27,34 ----
  
  class duffing:
! 	public ode_base<2>
  {
  public:
! 	duffing()
  	{
  		CHAOS_PAR_INIT(method,0);
***************
*** 46,52 ****
  	}
  
- 	~duffing()
- 	{
- 	}
  
  	virtual void m_system(data_t* deriv, data_t* data)
--- 45,48 ----

Index: linear_congruental.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/linear_congruental.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** linear_congruental.hpp	22 Oct 2005 15:11:45 -0000	1.1
--- linear_congruental.hpp	21 May 2006 18:34:34 -0000	1.2
***************
*** 26,34 ****
  
  class linear_congruental:
! 	public map_base
  {
  public:
! 	linear_congruental():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0, 0);
--- 26,33 ----
  
  class linear_congruental:
! 	public map_base<2>
  {
  public:
! 	linear_congruental()
  	{
  		CHAOS_SYS_INIT(x, 0, 0);

Index: hydrogen.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/hydrogen.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** hydrogen.hpp	22 Oct 2005 15:11:45 -0000	1.2
--- hydrogen.hpp	21 May 2006 18:34:34 -0000	1.3
***************
*** 25,35 ****
  
  class hydrogen
! 	: public ode_base
  {
  
  
  public:
! 	hydrogen():
! 		ode_base(4)
  	{
  		CHAOS_PAR_INIT(method,2);
--- 25,34 ----
  
  class hydrogen
! 	: public ode_base<4>
  {
  
  
  public:
! 	hydrogen()
  	{
  		CHAOS_PAR_INIT(method,2);
***************
*** 46,52 ****
  	}
  	
- 	~hydrogen()
- 	{
- 	}
  
  	virtual void m_system(data_t* deriv, data_t* data)
--- 45,48 ----

Index: logistic_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/logistic_map.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** logistic_map.hpp	22 Oct 2005 15:11:45 -0000	1.9
--- logistic_map.hpp	21 May 2006 18:34:34 -0000	1.10
***************
*** 26,34 ****
  
  class logistic:
! 	public map_base
  {
  public:
! 	logistic():
! 		map_base(1)
  	{
  		CHAOS_PAR_INIT(alpha, 3.8);
--- 26,33 ----
  
  class logistic:
! 	public map_base<1>
  {
  public:
! 	logistic()
  	{
  		CHAOS_PAR_INIT(alpha, 3.8);

Index: chaos_msg.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_msg.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** chaos_msg.hpp	1 Nov 2005 21:28:21 -0000	1.3
--- chaos_msg.hpp	21 May 2006 18:34:34 -0000	1.4
***************
*** 21,47 ****
  #include "chaos_base.hpp"
  
! template <class system> class chaos_msg
! 	: public flext_base
  {
  	FLEXT_HEADER(chaos_msg, flext_base);
  
! 	~chaos_msg()
! 	{
! 		delete m_system;
! 	}
  
  public:
  
! 	/* local data for system, output and interpolation */
! 	system * m_system; /* the system */
  
  	void m_bang()
  	{
! 		m_system->m_perform();
! 		int outlets = m_system->get_num_eq();
  
  		while (outlets--)
  		{
! 			ToOutFloat(outlets, m_system->get_data(outlets));
  		}
  	}
--- 21,52 ----
  #include "chaos_base.hpp"
  
! template <class system> 
! class chaos_msg: 
!     public flext_base
  {
  	FLEXT_HEADER(chaos_msg, flext_base);
  
! protected:
!     chaos_msg(int argc, t_atom* argv)
!     {
!         int size = m_system.get_num_eq();
! 
!         for (int i = 0; i != size; ++i)
!             AddOutFloat();
!         FLEXT_ADDBANG(0, m_bang);
!     }
  
  public:
  
! 	system m_system; /* the system */
  
  	void m_bang()
  	{
! 		m_system.m_perform();
! 		int outlets = m_system.get_num_eq();
  
  		while (outlets--)
  		{
! 			ToOutFloat(outlets, m_system.get_data(outlets));
  		}
  	}
***************
*** 55,68 ****
  FLEXT_HEADER(SYSTEM##_msg, chaos_msg<SYSTEM>)	\
  												\
! SYSTEM##_msg(int argc, t_atom* argv )			\
  {												\
- 	m_system = new SYSTEM;						\
- 												\
- 	int size = m_system->get_num_eq();			\
- 												\
-     for (int i = 0; i != size; ++i)				\
-         AddOutFloat();							\
- 												\
      ATTRIBUTES;									\
-     FLEXT_ADDBANG(0, m_bang);					\
  }
--- 60,66 ----
  FLEXT_HEADER(SYSTEM##_msg, chaos_msg<SYSTEM>)	\
  												\
! SYSTEM##_msg(int argc, t_atom* argv ):          \
! chaos_msg<SYSTEM>(argc, argv)             	    \
  {												\
      ATTRIBUTES;									\
  }

Index: tent_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/tent_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** tent_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- tent_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 27,43 ****
  
  class tent_map:
! 	public map_base
  {
  public:
! 	tent_map():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0.6,0);
  	}
  	
- 	~tent_map()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 27,38 ----
  
  class tent_map:
! 	public map_base<1>
  {
  public:
! 	tent_map()
  	{
  		CHAOS_SYS_INIT(x, 0.6,0);
  	}
  	
  
  	virtual void m_step()

Index: driven_anharmonic.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/driven_anharmonic.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** driven_anharmonic.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- driven_anharmonic.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 30,38 ****
  
  class driven_anharmonic
! 	: public ode_base
  {
  public:
! 	driven_anharmonic():
! 		ode_base(2)
  	{
  		CHAOS_PAR_INIT(method,0);
--- 30,37 ----
  
  class driven_anharmonic
! 	: public ode_base<2>
  {
  public:
! 	driven_anharmonic()
  	{
  		CHAOS_PAR_INIT(method,0);
***************
*** 51,58 ****
  		m_t = 0;
  	}
! 	
! 	~driven_anharmonic()
! 	{
! 	}
  
  	virtual void m_system(data_t* deriv, data_t* data)
--- 50,54 ----
  		m_t = 0;
  	}
! 
  
  	virtual void m_system(data_t* deriv, data_t* data)

Index: chaos_dsp.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_dsp.hpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** chaos_dsp.hpp	7 Jan 2006 20:48:29 -0000	1.15
--- chaos_dsp.hpp	21 May 2006 18:34:34 -0000	1.16
***************
*** 21,31 ****
  #include "chaos_base.hpp"
  
! template <class system> class chaos_dsp
  	: public flext_dsp
  {
  	FLEXT_HEADER(chaos_dsp, flext_dsp);
  
! public:
  
  	/* signal functions: */
  	/* for frequency = sr */
--- 21,86 ----
  #include "chaos_base.hpp"
  
! template <class system> 
! class chaos_dsp
  	: public flext_dsp
  {
  	FLEXT_HEADER(chaos_dsp, flext_dsp);
  
! protected:
!     chaos_dsp(int argc, t_atom* argv)
!     {
!         m_sr = 44100; /* assume default sampling rate */
!         int size = m_system.get_num_eq();
!     
!         m_values = new t_float[size];
!         m_slopes = new t_float[size];
!         m_nextvalues = new t_float[size];
!         m_nextmidpts = new t_float[size];
!         m_curves = new t_float[size];
! 
!         /* create inlets and zero arrays*/
!         for (int i = 0; i != size; ++i)
!         {
!             AddOutSignal();
!             m_values[i] = 0;
!             m_slopes[i] = 0;
!             m_nextvalues[i] = 0;
!             m_nextmidpts[i] = 0;
!             m_curves[i] = 0;
!         }
!     
!         FLEXT_ADDATTR_VAR("frequency", get_freq, set_freq);
!         FLEXT_ADDATTR_VAR("interpolation_method",get_imethod, set_imethod);
! 
!         if (argc > 0)
!         {
!             CHAOS_INIT(freq, GetAInt(argv[0]));
!         }
!         else
!         {
!             CHAOS_INIT(freq, 440);
!         }
! 
!         if (argc > 1)
!         {
!             CHAOS_INIT(imethod, GetAInt(argv[1]));
!         }
!         else
!         {
!             CHAOS_INIT(imethod, 0);
!         }
!         m_phase = 0;
!     }
  
+     ~chaos_dsp()
+     {
+         delete[] m_values;
+         delete[] m_slopes;
+         delete[] m_nextvalues;
+         delete[] m_nextmidpts;
+         delete[] m_curves;
+     }
+     
+ public:
  	/* signal functions: */
  	/* for frequency = sr */
***************
*** 59,63 ****
  	
  	/* local data for system, output and interpolation */
! 	system * m_system; /* the system */
  
  	t_sample * m_values;   /* actual value */
--- 114,118 ----
  	
  	/* local data for system, output and interpolation */
! 	system m_system; /* the system */
  
  	t_sample * m_values;   /* actual value */
***************
*** 107,113 ****
  
  		if (imethod == 0)
! 			for (int j = 0; j != m_system->get_num_eq(); ++j)
  			{
! 				m_values[j] = m_system->get_data(j);
  				m_slopes[j] = 0;
  			}
--- 162,168 ----
  
  		if (imethod == 0)
! 			for (int j = 0; j != m_system.get_num_eq(); ++j)
  			{
! 				m_values[j] = m_system.get_data(j);
  				m_slopes[j] = 0;
  			}
***************
*** 115,119 ****
  		if(i == 2 && imethod != 2)
  		{
! 			for (int j = 0; j != m_system->get_num_eq(); ++j)
  			{
  				m_phase = 0; /* reschedule to avoid click, find a better way later*/
--- 170,174 ----
  		if(i == 2 && imethod != 2)
  		{
! 			for (int j = 0; j != m_system.get_num_eq(); ++j)
  			{
  				m_phase = 0; /* reschedule to avoid click, find a better way later*/
***************
*** 184,248 ****
  FLEXT_HEADER(SYSTEM##_dsp, chaos_dsp<SYSTEM>)							\
  																		\
! SYSTEM##_dsp(int argc, t_atom* argv )									\
! {																		\
!     m_sr = 44100; /* assume default sampling rate */					\
! 	m_system = new SYSTEM;												\
! 																		\
! 	int size = m_system->get_num_eq();									\
! 																		\
! 	m_values = new t_float[size];										\
! 	m_slopes = new t_float[size];										\
! 	m_nextvalues = new t_float[size];									\
! 	m_nextmidpts = new t_float[size];									\
! 	m_curves = new t_float[size];										\
! 																		\
!     /* create inlets and zero arrays*/									\
!     for (int i = 0; i != size; ++i)										\
! 	{																	\
! 		AddOutSignal();													\
! 		m_values[i] = 0;												\
! 		m_slopes[i] = 0;												\
! 		m_nextvalues[i] = 0;											\
! 		m_nextmidpts[i] = 0;											\
! 		m_curves[i] = 0;												\
! 	}																	\
! 																		\
!     FLEXT_ADDATTR_VAR("frequency", get_freq, set_freq);					\
!     FLEXT_ADDATTR_VAR("interpolation_method",get_imethod, set_imethod);	\
! 																		\
!     if (argc > 0)														\
! 	{																	\
! 		CHAOS_INIT(freq, GetAInt(argv[0]));								\
! 	}																	\
!     else																\
! 	{																	\
! 		CHAOS_INIT(freq, 440);											\
! 	}																	\
! 																		\
! 	if (argc > 1)														\
! 	{																	\
! 		CHAOS_INIT(imethod, GetAInt(argv[1]));							\
! 	}																	\
!     else																\
!     {																	\
! 		CHAOS_INIT(imethod, 0);											\
!     }																	\
! 																		\
!     m_phase = 0;														\
! 																		\
!     ATTRIBUTES;															\
! }																		\
! 																		\
! ~SYSTEM##_dsp()															\
  {																		\
! 	delete m_system;													\
! 	delete[] m_values;													\
! 	delete[] m_slopes;													\
! 	delete[] m_nextvalues;												\
! 	delete[] m_nextmidpts;												\
! 	delete[] m_curves;													\
  }																		\
  																		\
! FLEXT_ATTRVAR_F(m_freq);												\
  FLEXT_ATTRVAR_I(m_imethod);
  
--- 239,249 ----
  FLEXT_HEADER(SYSTEM##_dsp, chaos_dsp<SYSTEM>)							\
  																		\
! SYSTEM##_dsp(int argc, t_atom* argv):                                   \
!     chaos_dsp<SYSTEM>(argc, argv)          			                   	\
  {																		\
!    ATTRIBUTES;															\
  }																		\
  																		\
! FLEXT_ATTRVAR_F(m_freq);											     	\
  FLEXT_ATTRVAR_I(m_imethod);
  
***************
*** 253,264 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  
  	for (int i = 0; i!=n; ++i)
  	{
! 		m_system->m_perform();
  		for (int j = 0; j != outlets; ++j)
  		{
! 			outsigs[j][i] = m_system->get_data(j);
  		}
  	}
--- 254,265 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  
  	for (int i = 0; i!=n; ++i)
  	{
! 		m_system.m_perform();
  		for (int j = 0; j != outlets; ++j)
  		{
! 			outsigs[j][i] = m_system.get_data(j);
  		}
  	}
***************
*** 270,274 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	float phase = m_phase;
--- 271,275 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	float phase = m_phase;
***************
*** 279,283 ****
  		while (phase <= 0)
  		{
!  			m_system->m_perform();
  			phase += m_sr * m_invfreq;
  		}
--- 280,284 ----
  		while (phase <= 0)
  		{
!  			m_system.m_perform();
  			phase += m_sr * m_invfreq;
  		}
***************
*** 288,292 ****
  		for (int i = 0; i != outlets; ++i)
  		{
! 			SetSamples(outsigs[i]+offset, next, m_system->get_data(i));
  		}
  		offset += next;
--- 289,293 ----
  		for (int i = 0; i != outlets; ++i)
  		{
! 			SetSamples(outsigs[i]+offset, next, m_system.get_data(i));
  		}
  		offset += next;
***************
*** 300,304 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	int phase = int(m_phase);
--- 301,305 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	int phase = int(m_phase);
***************
*** 309,313 ****
  		if (phase == 0)
  		{
!  			m_system->m_perform();
  			phase = int (m_sr * m_invfreq);
  		}
--- 310,314 ----
  		if (phase == 0)
  		{
!  			m_system.m_perform();
  			phase = int (m_sr * m_invfreq);
  		}
***************
*** 319,323 ****
  		for (int i = 0; i != outlets; ++i)
  		{
! 			SetSamples(outsigs[i]+offset, next, m_system->get_data(i));
  		}
  		offset += next;
--- 320,324 ----
  		for (int i = 0; i != outlets; ++i)
  		{
! 			SetSamples(outsigs[i]+offset, next, m_system.get_data(i));
  		}
  		offset += next;
***************
*** 331,335 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	int phase = int(m_phase);
--- 332,336 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	int phase = int(m_phase);
***************
*** 341,349 ****
  		if (phase == 0)
  		{
! 			m_system->m_perform();
  			phase = int (m_sr * m_invfreq);
  
  			for (int j = 0; j != outlets; ++j)
! 				m_slopes[j] = (m_system->get_data(j) - m_values[j]) / phase;
  		}
  		
--- 342,350 ----
  		if (phase == 0)
  		{
! 			m_system.m_perform();
  			phase = int (m_sr * m_invfreq);
  
  			for (int j = 0; j != outlets; ++j)
! 				m_slopes[j] = (m_system.get_data(j) - m_values[j]) / phase;
  		}
  		
***************
*** 371,375 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	float phase = m_phase;
--- 372,376 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	float phase = m_phase;
***************
*** 381,389 ****
  		if (phase <= 0)
  		{
! 			m_system->m_perform();
  			phase = m_sr * m_invfreq;
  
  			for (int j = 0; j != outlets; ++j)
! 				m_slopes[j] = (m_system->get_data(j) - m_values[j]) / phase;
  		}
  		
--- 382,390 ----
  		if (phase <= 0)
  		{
! 			m_system.m_perform();
  			phase = m_sr * m_invfreq;
  
  			for (int j = 0; j != outlets; ++j)
! 				m_slopes[j] = (m_system.get_data(j) - m_values[j]) / phase;
  		}
  		
***************
*** 410,414 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	int phase = int(m_phase);
--- 411,415 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	int phase = int(m_phase);
***************
*** 420,424 ****
  		if (phase == 0)
  		{
! 			m_system->m_perform();
  			phase = int (m_sr * m_invfreq);
  			phase = (phase > 2) ? phase : 2;
--- 421,425 ----
  		if (phase == 0)
  		{
! 			m_system.m_perform();
  			phase = int (m_sr * m_invfreq);
  			phase = (phase > 2) ? phase : 2;
***************
*** 427,431 ****
  			{
  				t_sample value = m_nextvalues[j];
! 				m_nextvalues[j]= m_system->get_data(j);
  				
  				m_values[j] =  m_nextmidpts[j];
--- 428,432 ----
  			{
  				t_sample value = m_nextvalues[j];
! 				m_nextvalues[j]= m_system.get_data(j);
  				
  				m_values[j] =  m_nextmidpts[j];
***************
*** 462,466 ****
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system->get_num_eq();
  	
  	float phase = m_phase;
--- 463,467 ----
  	t_sample *const *outsigs)
  {
! 	int outlets = m_system.get_num_eq();
  	
  	float phase = m_phase;
***************
*** 472,476 ****
  		if (phase == 0)
  		{
! 			m_system->m_perform();
  			phase = int (m_sr * m_invfreq);
  			phase = (phase > 2) ? phase : 2;
--- 473,477 ----
  		if (phase == 0)
  		{
! 			m_system.m_perform();
  			phase = int (m_sr * m_invfreq);
  			phase = (phase > 2) ? phase : 2;
***************
*** 479,483 ****
  			{
  				t_sample value = m_nextvalues[j];
! 				m_nextvalues[j]= m_system->get_data(j);
  				
  				m_values[j] =  m_nextmidpts[j];
--- 480,484 ----
  			{
  				t_sample value = m_nextvalues[j];
! 				m_nextvalues[j]= m_system.get_data(j);
  				
  				m_values[j] =  m_nextmidpts[j];

Index: lorenz.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/lorenz.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** lorenz.hpp	22 Oct 2005 15:11:45 -0000	1.9
--- lorenz.hpp	21 May 2006 18:34:34 -0000	1.10
***************
*** 27,35 ****
  
  class lorenz
! 	: public ode_base
  {
  public:
! 	lorenz():
! 		ode_base(3)
  	{
  		CHAOS_PAR_INIT(method,0);
--- 27,34 ----
  
  class lorenz
! 	: public ode_base<3>
  {
  public:
! 	lorenz()
  	{
  		CHAOS_PAR_INIT(method,0);

Index: coupled_logistic.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/coupled_logistic.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** coupled_logistic.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- coupled_logistic.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 27,35 ****
  
  class coupled_logistic:
! 	public map_base
  {
  public:
! 	coupled_logistic():
! 		map_base(2)
  	{
  		CHAOS_PAR_INIT(e, 0.06);
--- 27,34 ----
  
  class coupled_logistic:
! 	public map_base<2>
  {
  public:
! 	coupled_logistic()
  	{
  		CHAOS_PAR_INIT(e, 0.06);
***************
*** 40,48 ****
  	}
  
! 	~coupled_logistic()
! 	{
! 	}
! 
! 	virtual void m_step()
  	{
  		data_t x = m_data[0];
--- 39,43 ----
  	}
  
! 	virtual inline void m_step()
  	{
  		data_t x = m_data[0];
***************
*** 57,61 ****
  	CHAOS_SYSPAR_FUNCS(e);
  	CHAOS_SYSPAR_FUNCS_PRED(r, m_pred_r);
! 	bool m_pred_r(t_float f)
  	{
  		return (f > 0) && (f < 4);
--- 52,56 ----
  	CHAOS_SYSPAR_FUNCS(e);
  	CHAOS_SYSPAR_FUNCS_PRED(r, m_pred_r);
! 	static bool m_pred_r(t_float f)
  	{
  		return (f > 0) && (f < 4);
***************
*** 65,74 ****
  	CHAOS_SYSVAR_FUNCS_PRED(y, 0, m_pred_xy);
  	
! 	bool m_pred_xy(t_float f)
  	{
  		return (f > 0) && (f < 1);
  	}
  
! 	virtual void m_verify()
  	{
  		data_t x = m_data[0];
--- 60,69 ----
  	CHAOS_SYSVAR_FUNCS_PRED(y, 0, m_pred_xy);
  	
! 	static bool m_pred_xy(t_float f)
  	{
  		return (f > 0) && (f < 1);
  	}
  
! 	inline void m_verify()
  	{
  		data_t x = m_data[0];
***************
*** 84,89 ****
  		}
  	}
- 
- 	
  };
  
--- 79,82 ----

Index: delayed_logistic.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/delayed_logistic.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** delayed_logistic.hpp	22 Oct 2005 15:11:45 -0000	1.2
--- delayed_logistic.hpp	21 May 2006 18:34:34 -0000	1.3
***************
*** 27,35 ****
  
  class delayed_logistic:
! 	public map_base
  {
  public:
! 	delayed_logistic():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0.5, 0);
--- 27,34 ----
  
  class delayed_logistic:
! 	public map_base<1>
  {
  public:
! 	delayed_logistic()
  	{
  		CHAOS_SYS_INIT(x, 0.5, 0);
***************
*** 39,46 ****
  	}
  
! 	~delayed_logistic()
! 	{
! 		
! 	}
  
  	virtual void m_step()
--- 38,42 ----
  	}
  
! 
  
  	virtual void m_step()

Index: latoocarfian.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/latoocarfian.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** latoocarfian.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- latoocarfian.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 29,37 ****
  
  class latoocarfian
! 	: public map_base
  {
  public:
! 	latoocarfian():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
--- 29,36 ----
  
  class latoocarfian
! 	: public map_base<2>
  {
  public:
! 	latoocarfian()
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
***************
*** 43,50 ****
  		CHAOS_PAR_INIT(d,0.744728);
  	}
- 	
- 	~latoocarfian()
- 	{
- 	}
  
  	virtual void m_step()
--- 42,45 ----

Index: map_base.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/map_base.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** map_base.hpp	22 Oct 2005 15:11:45 -0000	1.4
--- map_base.hpp	21 May 2006 18:34:34 -0000	1.5
***************
*** 24,36 ****
  #include "chaos_base.hpp"
  
  class map_base
! 	: public chaos_base
  {
  protected:
- 	map_base(int n):
- 		chaos_base(n)
- 	{
- 	}
- 		
  	virtual void m_step()
  	{
--- 24,32 ----
  #include "chaos_base.hpp"
  
+ template <int dimensions>
  class map_base
! 	: public chaos_base<dimensions>
  {
  protected:
  	virtual void m_step()
  	{
***************
*** 38,47 ****
  };
  
! #define MAP_CALLBACKS							\
! CHAOS_CALLBACKS
! 
! 
! #define MAP_ATTRIBUTES 							\
! CHAOS_ATTRIBUTES;
  
  #define __map_base_hpp
--- 34,39 ----
  };
  
! #define MAP_CALLBACKS
! #define MAP_ATTRIBUTES
  
  #define __map_base_hpp

Index: latoomutbeta.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/latoomutbeta.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** latoomutbeta.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- latoomutbeta.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 28,36 ****
  
  class latoomutbeta
! 	: public map_base
  {
  public:
! 	latoomutbeta():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
--- 28,35 ----
  
  class latoomutbeta
! 	: public map_base<2>
  {
  public:
! 	latoomutbeta()
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
***************
*** 41,49 ****
  	}
  	
- 	~latoomutbeta()
- 	{
- 		
- 	}
- 
  	virtual void m_step()
  	{
--- 40,43 ----

Index: standard_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/standard_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** standard_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- standard_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 28,36 ****
  
  class standard_map:
! 	public map_base
  {
  public:
! 	standard_map():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(I,0.1,0);
--- 28,35 ----
  
  class standard_map:
! 	public map_base<2>
  {
  public:
! 	standard_map()
  	{
  		CHAOS_SYS_INIT(I,0.1,0);

Index: driven_van_der_pol.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/driven_van_der_pol.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** driven_van_der_pol.hpp	22 Oct 2005 15:11:45 -0000	1.4
--- driven_van_der_pol.hpp	21 May 2006 18:34:34 -0000	1.5
***************
*** 31,39 ****
  
  class driven_van_der_pol
! 	: public ode_base
  {
  public:
! 	driven_van_der_pol():
! 		ode_base(3)
  	{
  		CHAOS_PAR_INIT(method,2);
--- 31,38 ----
  
  class driven_van_der_pol
! 	: public ode_base<3>
  {
  public:
! 	driven_van_der_pol()
  	{
  		CHAOS_PAR_INIT(method,2);
***************
*** 49,55 ****
  	}
  	
! 	~driven_van_der_pol()
! 	{
! 	}
  
  	virtual void m_system(data_t* deriv, data_t* data)
--- 48,52 ----
  	}
  	
! 
  
  	virtual void m_system(data_t* deriv, data_t* data)

Index: duffing_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/duffing_map.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** duffing_map.hpp	22 Oct 2005 15:11:45 -0000	1.3
--- duffing_map.hpp	21 May 2006 18:34:34 -0000	1.4
***************
*** 27,35 ****
  
  class duffing_map:
! 	public map_base
  {
  public:
! 	duffing_map():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x1, 0.5, 0);
--- 27,34 ----
  
  class duffing_map:
! 	public map_base<2>
  {
  public:
! 	duffing_map()
  	{
  		CHAOS_SYS_INIT(x1, 0.5, 0);
***************
*** 39,46 ****
  	}
  
! 	~duffing_map()
! 	{
! 		
! 	}
  
  	virtual void m_step()
--- 38,42 ----
  	}
  
! 
  
  	virtual void m_step()

Index: gaussian_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/gaussian_map.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** gaussian_map.hpp	22 Oct 2005 15:11:45 -0000	1.2
--- gaussian_map.hpp	21 May 2006 18:34:34 -0000	1.3
***************
*** 27,35 ****
  
  class gaussian_map:
! 	public map_base
  {
  public:
! 	gaussian_map():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0.5, 0);
--- 27,34 ----
  
  class gaussian_map:
! 	public map_base<1>
  {
  public:
! 	gaussian_map()
  	{
  		CHAOS_SYS_INIT(x, 0.5, 0);
***************
*** 39,46 ****
  	}
  
! 	~gaussian_map()
! 	{
! 		
! 	}
  
  	virtual void m_step()
--- 38,42 ----
  	}
  
! 
  
  	virtual void m_step()

Index: ikeda_laser_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/ikeda_laser_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** ikeda_laser_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- ikeda_laser_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 33,41 ****
  
  class ikeda_laser_map:
! 	public map_base
  {
  public:
! 	ikeda_laser_map():
! 		map_base(1)
  	{
  		CHAOS_PAR_INIT(c1,0.4);
--- 33,40 ----
  
  class ikeda_laser_map:
! 	public map_base<1>
  {
  public:
! 	ikeda_laser_map()
  	{
  		CHAOS_PAR_INIT(c1,0.4);
***************
*** 48,55 ****
  	}
  
- 	~ikeda_laser_map()
- 	{
- 	}
- 
  	virtual void m_step()
  	{
--- 47,50 ----

Index: chaos_base.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_base.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** chaos_base.hpp	22 Oct 2005 15:11:45 -0000	1.9
--- chaos_base.hpp	21 May 2006 18:34:34 -0000	1.10
***************
*** 2,6 ****
  //  
  //  chaos~
! //  Copyright (C) 2004  Tim Blechmann
  //  
  //  This program is free software; you can redistribute it and/or modify
--- 2,6 ----
  //  
  //  chaos~
! //  Copyright (C) 2004, 2006  Tim Blechmann
  //  
  //  This program is free software; you can redistribute it and/or modify
***************
*** 24,41 ****
  #include <map>
  
! #define MAXDIMENSION 5 // this should be enough for the first 
! 
  class chaos_base
  {
  public:
! 	chaos_base(int n):
! 		m_num_eq(n)
  	{
- 		m_data = new data_t[n];
  	}
  
- 		
  	inline t_sample get_data(unsigned int i)
  	{
  		return (t_sample)m_data[i]; /* this is not save, but fast */
  	}
--- 24,38 ----
  #include <map>
  
! template <int dimensions>
  class chaos_base
  {
  public:
! 	chaos_base()
  	{
  	}
  
  	inline t_sample get_data(unsigned int i)
  	{
+         assert(i<dimensions);
  		return (t_sample)m_data[i]; /* this is not save, but fast */
  	}
***************
*** 43,47 ****
  	inline int get_num_eq() const
  	{
! 		return m_num_eq;
  	}
  
--- 40,44 ----
  	inline int get_num_eq() const
  	{
! 		return dimensions;
  	}
  
***************
*** 54,61 ****
  
   	std::map<const t_symbol*,int> attr_ind;
- 	//	TableAnyMap attr_ind; /* thomas fragen :-) */
  	
  	// check the integrity of the system
! 	virtual void m_verify() 
  	{
  	}
--- 51,57 ----
  
   	std::map<const t_symbol*,int> attr_ind;
  	
  	// check the integrity of the system
! 	inline void m_verify() 
  	{
  	}
***************
*** 63,67 ****
  	inline void m_bash_denormals()
  	{
! 		for (int i = 0; i != get_num_eq(); ++i)
  		{
  #ifndef DOUBLE_PRECISION
--- 59,63 ----
  	inline void m_bash_denormals()
  	{
! 		for (int i = 0; i != dimensions; ++i)
  		{
  #ifndef DOUBLE_PRECISION
***************
*** 72,98 ****
  	};
  	
! 	data_t * m_data;  // state of the system
  
  protected:
! 	virtual void m_step() = 0;    // iteration
! 	const int m_num_eq;                 // number of equations of the system
   	flext::AtomList Parameter;    // parameter
   	flext::AtomList System;       // system
  };
  
- #define CHAOS_CALLBACKS							\
- public:											\
- void get_dimension(int &i)						\
- {												\
- 	i = m_system->get_num_eq();					\
- }												\
- FLEXT_CALLGET_I(get_dimension);
- 
- 
- #define CHAOS_ATTRIBUTES						\
- FLEXT_ADDATTR_GET("dimension",get_dimension);
- 
- 
- 
  #define __chaos_base_hpp
  #endif /* __chaos_base_hpp */
--- 68,79 ----
  	};
  	
! 	data_t m_data[dimensions];  // state of the system
  
  protected:
! 	virtual void m_step() = 0;            // iteration
   	flext::AtomList Parameter;    // parameter
   	flext::AtomList System;       // system
  };
  
  #define __chaos_base_hpp
  #endif /* __chaos_base_hpp */

Index: roessler.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/roessler.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** roessler.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- roessler.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 24,35 ****
  //                  dx2/dt = x1 + a * x2
  //                  dx3/dt = b + (x1 - c) * x3
! //  taken from Peitgen / Jürgens / Saupe: Chaos and Fractals
  
  class roessler
! 	: public ode_base
  {
  public:
! 	roessler():
! 		ode_base(3)
  	{
  		CHAOS_PAR_INIT(method,0);
--- 24,34 ----
  //                  dx2/dt = x1 + a * x2
  //                  dx3/dt = b + (x1 - c) * x3
! //  taken from Peitgen / J�rgens / Saupe: Chaos and Fractals
  
  class roessler
! 	: public ode_base<3>
  {
  public:
! 	roessler()
  	{
  		CHAOS_PAR_INIT(method,0);
***************
*** 45,51 ****
  	}
  	
- 	~roessler()
- 	{
- 	}
  
  	virtual void m_system(data_t* deriv, data_t* data)
--- 44,47 ----

Index: chaos_defs.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_defs.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** chaos_defs.hpp	16 Jun 2005 13:02:01 -0000	1.5
--- chaos_defs.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 101,109 ****
  void get_##NAME(t_float &f)						\
  {												\
! 	f = m_system->get_##NAME();					\
  }												\
  void set_##NAME(t_float &f)						\
  {												\
! 	m_system->set_##NAME(f);					\
  }												\
  FLEXT_CALLVAR_F(get_##NAME, set_##NAME);
--- 101,109 ----
  void get_##NAME(t_float &f)						\
  {												\
! 	f = m_system.get_##NAME();					\
  }												\
  void set_##NAME(t_float &f)						\
  {												\
! 	m_system.set_##NAME(f);					\
  }												\
  FLEXT_CALLVAR_F(get_##NAME, set_##NAME);
***************
*** 114,122 ****
  void get_##NAME(int &i)							\
  {												\
! 	i = m_system->get_##NAME();					\
  }												\
  void set_##NAME(int &i)							\
  {												\
! 	m_system->set_##NAME(i);					\
  }												\
  FLEXT_CALLVAR_I(get_##NAME, set_##NAME);
--- 114,122 ----
  void get_##NAME(int &i)							\
  {												\
! 	i = m_system.get_##NAME();					\
  }												\
  void set_##NAME(int &i)							\
  {												\
! 	m_system.set_##NAME(i);					\
  }												\
  FLEXT_CALLVAR_I(get_##NAME, set_##NAME);

Index: sine_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/sine_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** sine_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- sine_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 27,36 ****
  
  class sine_map:
! 	public map_base
  {
  	
  public:
! 	sine_map():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x,0,0);
--- 27,35 ----
  
  class sine_map:
! 	public map_base<1>
  {
  	
  public:
! 	sine_map()
  	{
  		CHAOS_SYS_INIT(x,0,0);

Index: circle_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/circle_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** circle_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- circle_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 28,36 ****
  
  class circle_map:
! 	public map_base
  {
  public:
  	circle_map()
- 		: map_base(1)
  	{
  		CHAOS_SYS_INIT(x, 0.4,0);
--- 28,35 ----
  
  class circle_map:
! 	public map_base<1>
  {
  public:
  	circle_map()
  	{
  		CHAOS_SYS_INIT(x, 0.4,0);
***************
*** 40,47 ****
  	}
  
- 	~circle_map()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 39,42 ----

Index: gauss_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/gauss_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** gauss_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- gauss_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 29,45 ****
  
  class gauss_map:
! 	public map_base
  {
  public:
! 	gauss_map():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x,0.5, 0);
  	}
  
- 	~gauss_map()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 29,40 ----
  
  class gauss_map:
! 	public map_base<1>
  {
  public:
! 	gauss_map()
  	{
  		CHAOS_SYS_INIT(x,0.5, 0);
  	}
  
  
  	virtual void m_step()

Index: ode_base.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/ode_base.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** ode_base.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- ode_base.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 24,54 ****
  #include "chaos_base.hpp"
  
! class ode_base
! 	: public chaos_base
  {
  public:
- 	ode_base(int n):
- 		chaos_base (n)
- 	{
- 		for (int i = 0; i != 3; ++i)
- 		{
- 			m_k[i] = new data_t[n];
- 		}
- 		m_tmp = new data_t[n];
- 
- 	}
  
- 	~ode_base()
- 	{
- 		for (int i = 0; i != 3; ++i)
- 		{
- 			delete[] m_k[i];
- 		}
- 		delete[] m_tmp;
- 	}
- 	
  	void set_method(int i)
  	{
! 		if (i >=0 && i <4)
  		{
  			m_method = (unsigned char) i;
--- 24,36 ----
  #include "chaos_base.hpp"
  
! template <int dimensions>
! class ode_base:
!     public chaos_base<dimensions>
  {
  public:
  
  	void set_method(int i)
  	{
! 		if (i >= 0 && i < 4)
  		{
  			m_method = (unsigned char) i;
***************
*** 56,66 ****
  			{
  			case 0:
! 				m_routine = &ode_base::rk1;
  				break;
  			case 1:
! 				m_routine = &ode_base::rk2;
  				break;
  			case 2:
! 				m_routine = &ode_base::rk4;
  			}
  		}
--- 38,48 ----
  			{
  			case 0:
! 				m_routine = &ode_base<dimensions>::rk1;
  				break;
  			case 1:
! 				m_routine = &ode_base<dimensions>::rk2;
  				break;
  			case 2:
! 				m_routine = &ode_base<dimensions>::rk4;
  			}
  		}
***************
*** 87,111 ****
  	
  protected:
!  	void (ode_base::*m_routine)(void);
  
  	unsigned char m_method; /* 0: rk1, 1: rk2, 3: rk4 */
  
! 	data_t* m_k[3];         /* temporary arrays for runge kutta */
! 	data_t* m_tmp;   
  
  	virtual void m_system (data_t* deriv, data_t* data) = 0;
  
! 	void rk1 ();
! 	void rk2 ();
! 	void rk4 ();
  };
  
  #define ODE_CALLBACKS							\
- CHAOS_CALLBACKS;								\
  CHAOS_SYS_CALLBACKS_I(method);					\
  CHAOS_SYS_CALLBACKS(dt);
  
  #define ODE_ATTRIBUTES							\
- CHAOS_ATTRIBUTES;								\
  CHAOS_SYS_ATTRIBUTE(method);					\
  CHAOS_SYS_ATTRIBUTE(dt);
--- 69,141 ----
  	
  protected:
!  	void (ode_base<dimensions>::*m_routine)(void);
  
  	unsigned char m_method; /* 0: rk1, 1: rk2, 3: rk4 */
  
!     data_t m_k0[dimensions];
!     data_t m_k1[dimensions];
!     data_t m_k2[dimensions];
!     data_t m_k3[dimensions];
! 	data_t m_tmp[dimensions];
! //    data_t m_tmp[dimensions];     
  
  	virtual void m_system (data_t* deriv, data_t* data) = 0;
  
!     void rk1()
!     {
! //        m_system (m_k0, m_data);
! //        for (int i = 0; i != dimensions; ++i)
! //            m_data[i] += m_dt * m_k0[i];
!     }
!     
!     void rk2()
!     {
! //        m_system (m_k0, m_data);
! //        for (int i = 0; i != dimensions; ++i)
! //            m_k0[i] = m_k0[i] * 0.5 * m_dt + m_data[i];
! //        
! //        m_system (m_k1, m_k0);
! //        for (int i = 0; i != dimensions; ++i)
! //            m_data[i] += m_dt * m_k1[i];
!     }
!     
!     void rk4()
!     {
! //        m_system (m_k0, m_data);
! //        for (int i = 0; i != dimensions; ++i)
! //        {
! //            m_k0[i] *= m_dt;
! //            m_tmp[i] = m_data[i] + 0.5 * m_k0[i];
! //        }
! //    
! //        m_system (m_k1, m_tmp);
! //        for (int i = 0; i != dimensions; ++i)
! //        {
! //            m_k1[i] *= m_dt;
! //            m_tmp[i] = m_data[i] + 0.5 * m_k1[i];
! //        }
! //        
! //        m_system (m_k2, m_tmp);
! //        for (int i = 0; i != dimensions; ++i)
! //        {
! //            m_k2[i] *= m_dt;
! //            m_tmp[i] = m_data[i] + m_k2[i];
! //        }
! //    
! //        m_system (m_k3, m_tmp);
! //        for (int i = 0; i != dimensions; ++i)
! //            m_k3[i] *= m_dt;
! //    
! //        for (int i = 0; i != dimensions; ++i)
! //            m_data[i] += (m_k0[i] + 2. * (m_k1[i] + m_k2[i]) + m_k3[i]) 
! //                / 6.;
!     }
  };
  
  #define ODE_CALLBACKS							\
  CHAOS_SYS_CALLBACKS_I(method);					\
  CHAOS_SYS_CALLBACKS(dt);
  
  #define ODE_ATTRIBUTES							\
  CHAOS_SYS_ATTRIBUTE(method);					\
  CHAOS_SYS_ATTRIBUTE(dt);

Index: bernoulli_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/bernoulli_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** bernoulli_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- bernoulli_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 26,44 ****
  
  class bernoulli:
! 	public map_base
  {
  public:
  
! 	bernoulli():
! 		map_base(1)
  	{
  		CHAOS_SYS_INIT(x,0.5,0);
  	}
  
- 	~bernoulli()
- 	{
- 		
- 	}
- 
  	virtual void m_step()
  	{
--- 26,38 ----
  
  class bernoulli:
! 	public map_base<1>
  {
  public:
  
! 	bernoulli()
  	{
  		CHAOS_SYS_INIT(x,0.5,0);
  	}
  
  	virtual void m_step()
  	{

Index: ode_base.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/ode_base.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ode_base.cpp	1 Jan 2005 11:06:58 -0000	1.3
--- ode_base.cpp	21 May 2006 18:34:34 -0000	1.4
***************
*** 21,74 ****
  #include "ode_base.hpp"
  
- void ode_base::rk1()
- {
- 	m_system (m_k[0], m_data);
- 	for (int i = 0; i != m_num_eq; ++i)
- 		m_data[i] += m_dt * m_k[0][i];
- }
- 
- 
- void ode_base::rk2()
- {
- 	m_system (m_k[0], m_data);
- 	for (int i = 0; i != m_num_eq; ++i)
- 		m_k[0][i] = m_k[0][i] * 0.5 * m_dt + m_data[i];
- 	
- 	m_system (m_k[1], m_k[0]);
- 	for (int i = 0; i != m_num_eq; ++i)
- 		m_data[i] += m_dt * m_k[1][i];
- }
- 
- 
- void ode_base::rk4()
- {
- 	m_system (m_k[0], m_data);
- 	for (int i = 0; i != m_num_eq; ++i)
- 	{
- 		m_k[0][i] *= m_dt;
- 		m_tmp[i] = m_data[i] + 0.5 * m_k[0][i];
- 	}
- 
- 	m_system (m_k[1], m_tmp);
- 	for (int i = 0; i != m_num_eq; ++i)
- 	{
- 		m_k[1][i] *= m_dt;
- 		m_tmp[i] = m_data[i] + 0.5 * m_k[1][i];
- 	}
- 	
- 	m_system (m_k[2], m_tmp);
- 	for (int i = 0; i != m_num_eq; ++i)
- 	{
- 		m_k[2][i] *= m_dt;
- 		m_tmp[i] = m_data[i] + m_k[2][i];
- 	}
- 
- 	m_system (m_k[3], m_tmp);
- 	for (int i = 0; i != m_num_eq; ++i)
- 		m_k[3][i] *= m_dt;
- 
- 	for (int i = 0; i != m_num_eq; ++i)
- 		m_data[i] += (m_k[0][i] + 2. * (m_k[1][i] + m_k[2][i]) + m_k[3][i]) 
- 			/ 6.;
- }
  
--- 21,23 ----

Index: chua.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chua.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** chua.hpp	22 Oct 2005 15:11:45 -0000	1.4
--- chua.hpp	21 May 2006 18:34:34 -0000	1.5
***************
*** 32,40 ****
  
  class chua:
! 	public ode_base
  {
  public:
! 	chua():
! 		ode_base(3)
  	{
  		CHAOS_PAR_INIT(method,2);
--- 32,39 ----
  
  class chua:
! 	public ode_base<3>
  {
  public:
! 	chua()
  	{
  		CHAOS_PAR_INIT(method,2);
***************
*** 51,58 ****
  	}
  
- 	~chua()
- 	{
- 	}
- 
  	virtual void m_system(data_t* deriv, data_t* data)
  	{
--- 50,53 ----

Index: henon_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/henon_map.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** henon_map.hpp	22 Oct 2005 15:11:45 -0000	1.6
--- henon_map.hpp	21 May 2006 18:34:34 -0000	1.7
***************
*** 27,35 ****
  
  class henon:
! 	public map_base
  {
  public:
! 	henon():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x,0,0);
--- 27,34 ----
  
  class henon:
! 	public map_base<2>
  {
  public:
! 	henon()
  	{
  		CHAOS_SYS_INIT(x,0,0);
***************
*** 40,47 ****
  	}
  
- 	~henon()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 39,42 ----

Index: latoomutalpha.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/latoomutalpha.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** latoomutalpha.hpp	22 Oct 2005 15:11:45 -0000	1.5
--- latoomutalpha.hpp	21 May 2006 18:34:34 -0000	1.6
***************
*** 28,36 ****
  
  class latoomutalpha
! 	: public map_base
  {
  public:
! 	latoomutalpha():
! 		map_base(2)
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
--- 28,35 ----
  
  class latoomutalpha
! 	: public map_base<2>
  {
  public:
! 	latoomutalpha()
  	{
  		CHAOS_SYS_INIT(x1,0.5,0);
***************
*** 42,49 ****
  	}
  	
- 	~latoomutalpha()
- 	{
- 		
- 	}
  
  	virtual void m_step()
--- 41,44 ----

Index: chaos_search.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_search.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** chaos_search.hpp	16 Jun 2005 13:02:01 -0000	1.1
--- chaos_search.hpp	21 May 2006 18:34:34 -0000	1.2
***************
*** 21,24 ****
--- 21,26 ----
  #include "chaos_base.hpp"
  
+ #define MAXDIMENSION 5
+ 
  template <class system> class chaos_search
  	: public flext_base
***************
*** 29,33 ****
  
  	/* local data for system, output and interpolation */
! 	system * m_system; /* the system */
  	
  
--- 31,35 ----
  
  	/* local data for system, output and interpolation */
! 	system m_system; /* the system */
  	
  
***************
*** 76,84 ****
  		*/
  		
! 		for (std::map<const t_symbol*,int>::iterator it = m_system->attr_ind.begin();
! 			 it != m_system->attr_ind.end(); ++it)
  		{
  			post("key %s", it->first->s_name);
! 			post("value %f", m_system->get_data(it->second));
  		}
  	}	
--- 78,86 ----
  		*/
  		
! 		for (std::map<const t_symbol*,int>::iterator it = m_system.attr_ind.begin();
! 			 it != m_system.attr_ind.end(); ++it)
  		{
  			post("key %s", it->first->s_name);
! 			post("value %f", m_system.get_data(it->second));
  		}
  	}	
***************
*** 100,106 ****
  SYSTEM##_search(int argc, t_atom* argv )							\
  {																	\
! 	m_system = new SYSTEM;											\
! 																	\
! 	int size = m_system->get_num_eq();								\
  																	\
  																	\
--- 102,106 ----
  SYSTEM##_search(int argc, t_atom* argv )							\
  {																	\
! 	int size = m_system.get_num_eq();								\
  																	\
  																	\
***************
*** 120,127 ****
  }																	\
  																	\
- ~SYSTEM##_search()													\
- {																	\
- 	delete m_system;												\
- }																	\
  																	\
  FLEXT_ATTRVAR_I(m_transient_steps);									\
--- 120,123 ----
***************
*** 133,137 ****
  void chaos_search<system>::m_search()
  {
! 	int dimensions = m_system->get_num_eq();
  	
  	ly = 0;
--- 129,133 ----
  void chaos_search<system>::m_search()
  {
! 	int dimensions = m_system.get_num_eq();
  	
  	ly = 0;
***************
*** 142,151 ****
  	for (int i = 0; i != m_transient_steps; ++i)
  	{
! 		m_system->m_perform();
  	}
  
  	for (int i = 0; i != dimensions; ++i)
  	{
! 		last[i] = min[i] = max[i] = m_system->m_data[i];
  	}
  	
--- 138,147 ----
  	for (int i = 0; i != m_transient_steps; ++i)
  	{
! 		m_system.m_perform();
  	}
  
  	for (int i = 0; i != dimensions; ++i)
  	{
! 		last[i] = min[i] = max[i] = m_system.m_data[i];
  	}
  	
***************
*** 155,159 ****
  	{
  		
! 		m_system->m_perform();
  		
  		data_t diff = 0;
--- 151,155 ----
  	{
  		
! 		m_system.m_perform();
  		
  		data_t diff = 0;
***************
*** 161,165 ****
  		{
  			/* update min/max */
! 			data_t datum = m_system->m_data[j];
  			if (datum > max[j])
  				max[j] = datum;
--- 157,161 ----
  		{
  			/* update min/max */
! 			data_t datum = m_system.m_data[j];
  			if (datum > max[j])
  				max[j] = datum;





More information about the Pd-cvs mailing list