aboutsummaryrefslogtreecommitdiff
path: root/chaos/src
diff options
context:
space:
mode:
authorTim Blechmann <timblech@users.sourceforge.net>2006-05-21 18:34:34 +0000
committerIOhannes m zmölnig <zmoelnig@iem.at>2015-10-14 15:12:02 +0200
commit13cba7a7997e318fbba01a36912219355e387d52 (patch)
tree77ec90e15c3a912a480d21958bdf1b57a7d7f14f /chaos/src
parentcceea140611ff282d1513937f615abe2b8081ebc (diff)
rewrote most stuff using templates
svn path=/trunk/externals/tb/; revision=5105
Diffstat (limited to 'chaos/src')
-rw-r--r--chaos/src/bernoulli_map.hpp10
-rw-r--r--chaos/src/bungalow_tent_map.hpp10
-rw-r--r--chaos/src/chaos_base.hpp37
-rw-r--r--chaos/src/chaos_defs.hpp8
-rw-r--r--chaos/src/chaos_dsp.hpp171
-rw-r--r--chaos/src/chaos_msg.hpp38
-rw-r--r--chaos/src/chaos_search.hpp28
-rw-r--r--chaos/src/chua.hpp9
-rw-r--r--chaos/src/circle_map.hpp7
-rw-r--r--chaos/src/coupled_logistic.hpp19
-rw-r--r--chaos/src/delayed_logistic.hpp10
-rw-r--r--chaos/src/driven_anharmonic.hpp10
-rw-r--r--chaos/src/driven_van_der_pol.hpp9
-rw-r--r--chaos/src/duffing.hpp8
-rw-r--r--chaos/src/duffing_map.hpp10
-rw-r--r--chaos/src/gauss_map.hpp9
-rw-r--r--chaos/src/gaussian_map.hpp10
-rw-r--r--chaos/src/henon_map.hpp9
-rw-r--r--chaos/src/hydrogen.hpp8
-rw-r--r--chaos/src/ikeda_laser_map.hpp9
-rw-r--r--chaos/src/latoocarfian.hpp9
-rw-r--r--chaos/src/latoomutalpha.hpp9
-rw-r--r--chaos/src/latoomutbeta.hpp10
-rw-r--r--chaos/src/latoomutgamma.hpp12
-rw-r--r--chaos/src/linear_congruental.hpp5
-rw-r--r--chaos/src/logistic_map.hpp5
-rw-r--r--chaos/src/lorenz.hpp5
-rw-r--r--chaos/src/lozi_map.hpp10
-rw-r--r--chaos/src/map_base.hpp16
-rw-r--r--chaos/src/ode_base.cpp51
-rw-r--r--chaos/src/ode_base.hpp96
-rw-r--r--chaos/src/roessler.hpp10
-rw-r--r--chaos/src/sine_map.hpp5
-rw-r--r--chaos/src/standard_map.hpp5
-rw-r--r--chaos/src/tent_map.hpp9
35 files changed, 260 insertions, 426 deletions
diff --git a/chaos/src/bernoulli_map.hpp b/chaos/src/bernoulli_map.hpp
index f084c67..c720e1b 100644
--- a/chaos/src/bernoulli_map.hpp
+++ b/chaos/src/bernoulli_map.hpp
@@ -25,21 +25,15 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class bernoulli:
- public map_base
+ public map_base<1>
{
public:
- bernoulli():
- map_base(1)
+ bernoulli()
{
CHAOS_SYS_INIT(x,0.5,0);
}
- ~bernoulli()
- {
-
- }
-
virtual void m_step()
{
data_t x = m_data[0];
diff --git a/chaos/src/bungalow_tent_map.hpp b/chaos/src/bungalow_tent_map.hpp
index 4d4836b..fd098f3 100644
--- a/chaos/src/bungalow_tent_map.hpp
+++ b/chaos/src/bungalow_tent_map.hpp
@@ -33,21 +33,15 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class bungalow_tent:
- public map_base
+ public map_base<1>
{
public:
- bungalow_tent():
- map_base(1)
+ bungalow_tent()
{
CHAOS_SYS_INIT(x, 0.6,0);
CHAOS_PAR_INIT(r, 0.5);
}
- ~bungalow_tent()
- {
-
- }
-
virtual void m_step()
{
data_t x = m_data[0];
diff --git a/chaos/src/chaos_base.hpp b/chaos/src/chaos_base.hpp
index 5c87bed..4b984d9 100644
--- a/chaos/src/chaos_base.hpp
+++ b/chaos/src/chaos_base.hpp
@@ -1,7 +1,7 @@
//
//
// chaos~
-// Copyright (C) 2004 Tim Blechmann
+// Copyright (C) 2004, 2006 Tim Blechmann
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -23,26 +23,23 @@
#include "chaos.hpp"
#include <map>
-#define MAXDIMENSION 5 // this should be enough for the first
-
+template <int dimensions>
class chaos_base
{
public:
- chaos_base(int n):
- m_num_eq(n)
+ chaos_base()
{
- m_data = new data_t[n];
}
-
inline t_sample get_data(unsigned int i)
{
+ assert(i<dimensions);
return (t_sample)m_data[i]; /* this is not save, but fast */
}
inline int get_num_eq() const
{
- return m_num_eq;
+ return dimensions;
}
inline void m_perform()
@@ -53,16 +50,15 @@ public:
}
std::map<const t_symbol*,int> attr_ind;
- // TableAnyMap attr_ind; /* thomas fragen :-) */
// check the integrity of the system
- virtual void m_verify()
+ inline void m_verify()
{
}
inline void m_bash_denormals()
{
- for (int i = 0; i != get_num_eq(); ++i)
+ for (int i = 0; i != dimensions; ++i)
{
#ifndef DOUBLE_PRECISION
if (PD_BIGORSMALL(m_data[i]))
@@ -71,28 +67,13 @@ public:
}
};
- data_t * m_data; // state of the system
+ data_t m_data[dimensions]; // state of the system
protected:
- virtual void m_step() = 0; // iteration
- const int m_num_eq; // number of equations of the system
+ virtual void m_step() = 0; // iteration
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 */
diff --git a/chaos/src/chaos_defs.hpp b/chaos/src/chaos_defs.hpp
index bf8607c..c4e68a5 100644
--- a/chaos/src/chaos_defs.hpp
+++ b/chaos/src/chaos_defs.hpp
@@ -100,11 +100,11 @@ data_t m_##NAME;
public: \
void get_##NAME(t_float &f) \
{ \
- f = m_system->get_##NAME(); \
+ f = m_system.get_##NAME(); \
} \
void set_##NAME(t_float &f) \
{ \
- m_system->set_##NAME(f); \
+ m_system.set_##NAME(f); \
} \
FLEXT_CALLVAR_F(get_##NAME, set_##NAME);
@@ -113,11 +113,11 @@ FLEXT_CALLVAR_F(get_##NAME, set_##NAME);
public: \
void get_##NAME(int &i) \
{ \
- i = m_system->get_##NAME(); \
+ i = m_system.get_##NAME(); \
} \
void set_##NAME(int &i) \
{ \
- m_system->set_##NAME(i); \
+ m_system.set_##NAME(i); \
} \
FLEXT_CALLVAR_I(get_##NAME, set_##NAME);
diff --git a/chaos/src/chaos_dsp.hpp b/chaos/src/chaos_dsp.hpp
index 786bee3..9f6dd75 100644
--- a/chaos/src/chaos_dsp.hpp
+++ b/chaos/src/chaos_dsp.hpp
@@ -20,13 +20,68 @@
#include "chaos_base.hpp"
-template <class system> class chaos_dsp
+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 */
void m_signal_(int n, t_sample *const *insigs,t_sample *const *outsigs);
@@ -58,7 +113,7 @@ public:
void (thisType::*m_routine)(int n, t_sample *const *insigs,t_sample *const *outsigs);
/* local data for system, output and interpolation */
- system * m_system; /* the system */
+ system m_system; /* the system */
t_sample * m_values; /* actual value */
t_sample * m_slopes; /* actual slope for cubic interpolation */
@@ -106,15 +161,15 @@ public:
}
if (imethod == 0)
- for (int j = 0; j != m_system->get_num_eq(); ++j)
+ for (int j = 0; j != m_system.get_num_eq(); ++j)
{
- m_values[j] = m_system->get_data(j);
+ m_values[j] = m_system.get_data(j);
m_slopes[j] = 0;
}
if(i == 2 && imethod != 2)
{
- for (int j = 0; j != m_system->get_num_eq(); ++j)
+ for (int j = 0; j != m_system.get_num_eq(); ++j)
{
m_phase = 0; /* reschedule to avoid click, find a better way later*/
m_nextvalues[j] = m_values[j];
@@ -183,67 +238,13 @@ public:
#define CHAOS_DSP_INIT(SYSTEM, ATTRIBUTES) \
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() \
+SYSTEM##_dsp(int argc, t_atom* argv): \
+ chaos_dsp<SYSTEM>(argc, argv) \
{ \
- delete m_system; \
- delete[] m_values; \
- delete[] m_slopes; \
- delete[] m_nextvalues; \
- delete[] m_nextmidpts; \
- delete[] m_curves; \
+ ATTRIBUTES; \
} \
\
-FLEXT_ATTRVAR_F(m_freq); \
+FLEXT_ATTRVAR_F(m_freq); \
FLEXT_ATTRVAR_I(m_imethod);
@@ -252,14 +253,14 @@ template <class system>
void chaos_dsp<system>::m_signal_(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
for (int i = 0; i!=n; ++i)
{
- m_system->m_perform();
+ m_system.m_perform();
for (int j = 0; j != outlets; ++j)
{
- outsigs[j][i] = m_system->get_data(j);
+ outsigs[j][i] = m_system.get_data(j);
}
}
}
@@ -269,7 +270,7 @@ template <class system>
void chaos_dsp<system>::m_signal_n_hf(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
float phase = m_phase;
@@ -278,7 +279,7 @@ void chaos_dsp<system>::m_signal_n_hf(int n, t_sample *const *insigs,
{
while (phase <= 0)
{
- m_system->m_perform();
+ m_system.m_perform();
phase += m_sr * m_invfreq;
}
int next = (phase < n) ? int(ceilf (phase)) : n;
@@ -287,7 +288,7 @@ void chaos_dsp<system>::m_signal_n_hf(int n, t_sample *const *insigs,
for (int i = 0; i != outlets; ++i)
{
- SetSamples(outsigs[i]+offset, next, m_system->get_data(i));
+ SetSamples(outsigs[i]+offset, next, m_system.get_data(i));
}
offset += next;
}
@@ -299,7 +300,7 @@ template <class system>
void chaos_dsp<system>::m_signal_n(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
int phase = int(m_phase);
@@ -308,7 +309,7 @@ void chaos_dsp<system>::m_signal_n(int n, t_sample *const *insigs,
{
if (phase == 0)
{
- m_system->m_perform();
+ m_system.m_perform();
phase = int (m_sr * m_invfreq);
}
@@ -318,7 +319,7 @@ void chaos_dsp<system>::m_signal_n(int n, t_sample *const *insigs,
for (int i = 0; i != outlets; ++i)
{
- SetSamples(outsigs[i]+offset, next, m_system->get_data(i));
+ SetSamples(outsigs[i]+offset, next, m_system.get_data(i));
}
offset += next;
}
@@ -330,7 +331,7 @@ template <class system>
void chaos_dsp<system>::m_signal_l(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
int phase = int(m_phase);
@@ -340,11 +341,11 @@ void chaos_dsp<system>::m_signal_l(int n, t_sample *const *insigs,
{
if (phase == 0)
{
- m_system->m_perform();
+ 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;
+ m_slopes[j] = (m_system.get_data(j) - m_values[j]) / phase;
}
int next = (phase < n) ? phase : n;
@@ -370,7 +371,7 @@ template <class system>
void chaos_dsp<system>::m_signal_l_hf(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
float phase = m_phase;
@@ -380,11 +381,11 @@ void chaos_dsp<system>::m_signal_l_hf(int n, t_sample *const *insigs,
{
if (phase <= 0)
{
- m_system->m_perform();
+ 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;
+ m_slopes[j] = (m_system.get_data(j) - m_values[j]) / phase;
}
int next = (phase < n) ? int(ceilf (phase)) : n;
@@ -409,7 +410,7 @@ template <class system>
void chaos_dsp<system>::m_signal_c(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
int phase = int(m_phase);
@@ -419,14 +420,14 @@ void chaos_dsp<system>::m_signal_c(int n, t_sample *const *insigs,
{
if (phase == 0)
{
- m_system->m_perform();
+ m_system.m_perform();
phase = int (m_sr * m_invfreq);
phase = (phase > 2) ? phase : 2;
for (int j = 0; j != outlets; ++j)
{
t_sample value = m_nextvalues[j];
- m_nextvalues[j]= m_system->get_data(j);
+ m_nextvalues[j]= m_system.get_data(j);
m_values[j] = m_nextmidpts[j];
m_nextmidpts[j] = (m_nextvalues[j] + value) * 0.5f;
@@ -461,7 +462,7 @@ template <class system>
void chaos_dsp<system>::m_signal_c_hf(int n, t_sample *const *insigs,
t_sample *const *outsigs)
{
- int outlets = m_system->get_num_eq();
+ int outlets = m_system.get_num_eq();
float phase = m_phase;
@@ -471,14 +472,14 @@ void chaos_dsp<system>::m_signal_c_hf(int n, t_sample *const *insigs,
{
if (phase == 0)
{
- m_system->m_perform();
+ m_system.m_perform();
phase = int (m_sr * m_invfreq);
phase = (phase > 2) ? phase : 2;
for (int j = 0; j != outlets; ++j)
{
t_sample value = m_nextvalues[j];
- m_nextvalues[j]= m_system->get_data(j);
+ m_nextvalues[j]= m_system.get_data(j);
m_values[j] = m_nextmidpts[j];
m_nextmidpts[j] = (m_nextvalues[j] + value) * 0.5f;
diff --git a/chaos/src/chaos_msg.hpp b/chaos/src/chaos_msg.hpp
index 357ff6a..9025273 100644
--- a/chaos/src/chaos_msg.hpp
+++ b/chaos/src/chaos_msg.hpp
@@ -20,29 +20,34 @@
#include "chaos_base.hpp"
-template <class system> class chaos_msg
- : public flext_base
+template <class system>
+class chaos_msg:
+ public flext_base
{
FLEXT_HEADER(chaos_msg, flext_base);
- ~chaos_msg()
- {
- delete m_system;
- }
+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:
- /* local data for system, output and interpolation */
- system * m_system; /* the system */
+ system m_system; /* the system */
void m_bang()
{
- m_system->m_perform();
- int outlets = m_system->get_num_eq();
+ m_system.m_perform();
+ int outlets = m_system.get_num_eq();
while (outlets--)
{
- ToOutFloat(outlets, m_system->get_data(outlets));
+ ToOutFloat(outlets, m_system.get_data(outlets));
}
}
@@ -54,15 +59,8 @@ public:
#define CHAOS_MSG_INIT(SYSTEM, ATTRIBUTES) \
FLEXT_HEADER(SYSTEM##_msg, chaos_msg<SYSTEM>) \
\
-SYSTEM##_msg(int argc, t_atom* argv ) \
+SYSTEM##_msg(int argc, t_atom* argv ): \
+chaos_msg<SYSTEM>(argc, 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); \
}
diff --git a/chaos/src/chaos_search.hpp b/chaos/src/chaos_search.hpp
index a7fc44d..1b812a0 100644
--- a/chaos/src/chaos_search.hpp
+++ b/chaos/src/chaos_search.hpp
@@ -20,6 +20,8 @@
#include "chaos_base.hpp"
+#define MAXDIMENSION 5
+
template <class system> class chaos_search
: public flext_base
{
@@ -28,7 +30,7 @@ template <class system> class chaos_search
public:
/* local data for system, output and interpolation */
- system * m_system; /* the system */
+ system m_system; /* the system */
data_t min[MAXDIMENSION]; /* minimal coordinates */
@@ -75,11 +77,11 @@ public:
- send lyapunov exponent to 4
*/
- for (std::map<const t_symbol*,int>::iterator it = m_system->attr_ind.begin();
- it != m_system->attr_ind.end(); ++it)
+ 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));
+ post("value %f", m_system.get_data(it->second));
}
}
@@ -99,9 +101,7 @@ FLEXT_HEADER(SYSTEM##_search, chaos_search<SYSTEM>) \
\
SYSTEM##_search(int argc, t_atom* argv ) \
{ \
- m_system = new SYSTEM; \
- \
- int size = m_system->get_num_eq(); \
+ int size = m_system.get_num_eq(); \
\
\
m_asymptotic_steps = 10000; \
@@ -119,10 +119,6 @@ SYSTEM##_search(int argc, t_atom* argv ) \
FLEXT_ADDMETHOD_(0,"search", m_search); \
} \
\
-~SYSTEM##_search() \
-{ \
- delete m_system; \
-} \
\
FLEXT_ATTRVAR_I(m_transient_steps); \
FLEXT_ATTRVAR_I(m_asymptotic_steps);
@@ -132,7 +128,7 @@ FLEXT_ATTRVAR_I(m_asymptotic_steps);
template <class system>
void chaos_search<system>::m_search()
{
- int dimensions = m_system->get_num_eq();
+ int dimensions = m_system.get_num_eq();
ly = 0;
data_t diff_old = 0.1;
@@ -141,12 +137,12 @@ void chaos_search<system>::m_search()
/* transient dynamics */
for (int i = 0; i != m_transient_steps; ++i)
{
- m_system->m_perform();
+ m_system.m_perform();
}
for (int i = 0; i != dimensions; ++i)
{
- last[i] = min[i] = max[i] = m_system->m_data[i];
+ last[i] = min[i] = max[i] = m_system.m_data[i];
}
/* now we start the analysis */
@@ -154,13 +150,13 @@ void chaos_search<system>::m_search()
for (int i = 0; i != m_asymptotic_steps; ++i)
{
- m_system->m_perform();
+ m_system.m_perform();
data_t diff = 0;
for (int j = 0; j != dimensions; ++j)
{
/* update min/max */
- data_t datum = m_system->m_data[j];
+ data_t datum = m_system.m_data[j];
if (datum > max[j])
max[j] = datum;
else if (datum < min[j])
diff --git a/chaos/src/chua.hpp b/chaos/src/chua.hpp
index 997116c..f8c6e31 100644
--- a/chaos/src/chua.hpp
+++ b/chaos/src/chua.hpp
@@ -31,11 +31,10 @@
// taken from Viktor Avrutin: lecture notes
class chua:
- public ode_base
+ public ode_base<3>
{
public:
- chua():
- ode_base(3)
+ chua()
{
CHAOS_PAR_INIT(method,2);
CHAOS_PAR_INIT(dt,0.05);
@@ -50,10 +49,6 @@ public:
CHAOS_PAR_INIT(beta,30);
}
- ~chua()
- {
- }
-
virtual void m_system(data_t* deriv, data_t* data)
{
data_t x1 = data[0];
diff --git a/chaos/src/circle_map.hpp b/chaos/src/circle_map.hpp
index 0a52993..294b7d6 100644
--- a/chaos/src/circle_map.hpp
+++ b/chaos/src/circle_map.hpp
@@ -27,11 +27,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class circle_map:
- public map_base
+ public map_base<1>
{
public:
circle_map()
- : map_base(1)
{
CHAOS_SYS_INIT(x, 0.4,0);
@@ -39,10 +38,6 @@ public:
CHAOS_PAR_INIT(r, 3);
}
- ~circle_map()
- {
-
- }
virtual void m_step()
{
diff --git a/chaos/src/coupled_logistic.hpp b/chaos/src/coupled_logistic.hpp
index 2e4b160..048aae1 100644
--- a/chaos/src/coupled_logistic.hpp
+++ b/chaos/src/coupled_logistic.hpp
@@ -26,11 +26,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class coupled_logistic:
- public map_base
+ public map_base<2>
{
public:
- coupled_logistic():
- map_base(2)
+ coupled_logistic()
{
CHAOS_PAR_INIT(e, 0.06);
CHAOS_PAR_INIT(r, 3.7);
@@ -39,11 +38,7 @@ public:
CHAOS_SYS_INIT(y, 0.2,1);
}
- ~coupled_logistic()
- {
- }
-
- virtual void m_step()
+ virtual inline void m_step()
{
data_t x = m_data[0];
data_t y = m_data[1];
@@ -56,7 +51,7 @@ public:
CHAOS_SYSPAR_FUNCS(e);
CHAOS_SYSPAR_FUNCS_PRED(r, m_pred_r);
- bool m_pred_r(t_float f)
+ static bool m_pred_r(t_float f)
{
return (f > 0) && (f < 4);
}
@@ -64,12 +59,12 @@ public:
CHAOS_SYSVAR_FUNCS_PRED(x, 0, m_pred_xy);
CHAOS_SYSVAR_FUNCS_PRED(y, 0, m_pred_xy);
- bool m_pred_xy(t_float f)
+ static bool m_pred_xy(t_float f)
{
return (f > 0) && (f < 1);
}
- virtual void m_verify()
+ inline void m_verify()
{
data_t x = m_data[0];
data_t y = m_data[1];
@@ -83,8 +78,6 @@ public:
m_data[1] += -rand_range(0,0.2);
}
}
-
-
};
#define COUPLED_LOGISTIC_CALLBACKS \
diff --git a/chaos/src/delayed_logistic.hpp b/chaos/src/delayed_logistic.hpp
index 47360e7..3db7e27 100644
--- a/chaos/src/delayed_logistic.hpp
+++ b/chaos/src/delayed_logistic.hpp
@@ -26,11 +26,10 @@
// taken from E. Atlee Jackson: Perspective of nonlinear dynamics (Vol. 2)
class delayed_logistic:
- public map_base
+ public map_base<1>
{
public:
- delayed_logistic():
- map_base(1)
+ delayed_logistic()
{
CHAOS_SYS_INIT(x, 0.5, 0);
CHAOS_PAR_INIT(alpha, 3.8);
@@ -38,10 +37,7 @@ public:
m_delayed = get_x(); /* the initial state of the delay */
}
- ~delayed_logistic()
- {
-
- }
+
virtual void m_step()
{
diff --git a/chaos/src/driven_anharmonic.hpp b/chaos/src/driven_anharmonic.hpp
index 2d72071..7d6bfd6 100644
--- a/chaos/src/driven_anharmonic.hpp
+++ b/chaos/src/driven_anharmonic.hpp
@@ -29,11 +29,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class driven_anharmonic
- : public ode_base
+ : public ode_base<2>
{
public:
- driven_anharmonic():
- ode_base(2)
+ driven_anharmonic()
{
CHAOS_PAR_INIT(method,0);
CHAOS_PAR_INIT(dt,0.01);
@@ -50,10 +49,7 @@ public:
m_t = 0;
}
-
- ~driven_anharmonic()
- {
- }
+
virtual void m_system(data_t* deriv, data_t* data)
{
diff --git a/chaos/src/driven_van_der_pol.hpp b/chaos/src/driven_van_der_pol.hpp
index e538185..3c034d2 100644
--- a/chaos/src/driven_van_der_pol.hpp
+++ b/chaos/src/driven_van_der_pol.hpp
@@ -30,11 +30,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class driven_van_der_pol
- : public ode_base
+ : public ode_base<3>
{
public:
- driven_van_der_pol():
- ode_base(3)
+ driven_van_der_pol()
{
CHAOS_PAR_INIT(method,2);
CHAOS_PAR_INIT(dt,0.01);
@@ -48,9 +47,7 @@ public:
CHAOS_PAR_INIT(k,5);
}
- ~driven_van_der_pol()
- {
- }
+
virtual void m_system(data_t* deriv, data_t* data)
{
diff --git a/chaos/src/duffing.hpp b/chaos/src/duffing.hpp
index 6cdafd6..ee7f7fb 100644
--- a/chaos/src/duffing.hpp
+++ b/chaos/src/duffing.hpp
@@ -26,11 +26,10 @@
class duffing:
- public ode_base
+ public ode_base<2>
{
public:
- duffing():
- ode_base(2)
+ duffing()
{
CHAOS_PAR_INIT(method,0);
CHAOS_PAR_INIT(dt,0.01);
@@ -45,9 +44,6 @@ public:
t = 0;
}
- ~duffing()
- {
- }
virtual void m_system(data_t* deriv, data_t* data)
{
diff --git a/chaos/src/duffing_map.hpp b/chaos/src/duffing_map.hpp
index f0e3001..46fecbf 100644
--- a/chaos/src/duffing_map.hpp
+++ b/chaos/src/duffing_map.hpp
@@ -26,11 +26,10 @@
// taken from Viktor Avrutin: AnT-Demos-4.669
class duffing_map:
- public map_base
+ public map_base<2>
{
public:
- duffing_map():
- map_base(2)
+ duffing_map()
{
CHAOS_SYS_INIT(x1, 0.5, 0);
CHAOS_SYS_INIT(x2, 0.5, 1);
@@ -38,10 +37,7 @@ public:
CHAOS_PAR_INIT(b, 0.5);
}
- ~duffing_map()
- {
-
- }
+
virtual void m_step()
{
diff --git a/chaos/src/gauss_map.hpp b/chaos/src/gauss_map.hpp
index 641b93a..d013bae 100644
--- a/chaos/src/gauss_map.hpp
+++ b/chaos/src/gauss_map.hpp
@@ -28,19 +28,14 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class gauss_map:
- public map_base
+ public map_base<1>
{
public:
- gauss_map():
- map_base(1)
+ gauss_map()
{
CHAOS_SYS_INIT(x,0.5, 0);
}
- ~gauss_map()
- {
-
- }
virtual void m_step()
{
diff --git a/chaos/src/gaussian_map.hpp b/chaos/src/gaussian_map.hpp
index 9b2b8ca..c6aaf1e 100644
--- a/chaos/src/gaussian_map.hpp
+++ b/chaos/src/gaussian_map.hpp
@@ -26,11 +26,10 @@
// taken from Robert C. Hilborn: Chaos and Nonlinear Dynamics
class gaussian_map:
- public map_base
+ public map_base<1>
{
public:
- gaussian_map():
- map_base(1)
+ gaussian_map()
{
CHAOS_SYS_INIT(x, 0.5, 0);
@@ -38,10 +37,7 @@ public:
CHAOS_PAR_INIT(c,0.5);
}
- ~gaussian_map()
- {
-
- }
+
virtual void m_step()
{
diff --git a/chaos/src/henon_map.hpp b/chaos/src/henon_map.hpp
index bb1c6c7..014fa68 100644
--- a/chaos/src/henon_map.hpp
+++ b/chaos/src/henon_map.hpp
@@ -26,11 +26,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class henon:
- public map_base
+ public map_base<2>
{
public:
- henon():
- map_base(2)
+ henon()
{
CHAOS_SYS_INIT(x,0,0);
CHAOS_SYS_INIT(y,0,1);
@@ -39,10 +38,6 @@ public:
CHAOS_PAR_INIT(b,0.3);
}
- ~henon()
- {
-
- }
virtual void m_step()
{
diff --git a/chaos/src/hydrogen.hpp b/chaos/src/hydrogen.hpp
index 6df6088..cec6ae3 100644
--- a/chaos/src/hydrogen.hpp
+++ b/chaos/src/hydrogen.hpp
@@ -24,13 +24,12 @@
// hydrogen atom in a magnetic field
class hydrogen
- : public ode_base
+ : public ode_base<4>
{
public:
- hydrogen():
- ode_base(4)
+ hydrogen()
{
CHAOS_PAR_INIT(method,2);
CHAOS_PAR_INIT(dt,0.01);
@@ -45,9 +44,6 @@ public:
reset = 0;
}
- ~hydrogen()
- {
- }
virtual void m_system(data_t* deriv, data_t* data)
{
diff --git a/chaos/src/ikeda_laser_map.hpp b/chaos/src/ikeda_laser_map.hpp
index 3c4d587..60e3a77 100644
--- a/chaos/src/ikeda_laser_map.hpp
+++ b/chaos/src/ikeda_laser_map.hpp
@@ -32,11 +32,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class ikeda_laser_map:
- public map_base
+ public map_base<1>
{
public:
- ikeda_laser_map():
- map_base(1)
+ ikeda_laser_map()
{
CHAOS_PAR_INIT(c1,0.4);
CHAOS_PAR_INIT(c2,0.9);
@@ -47,10 +46,6 @@ public:
CHAOS_SYS_INIT(y,0.5,1);
}
- ~ikeda_laser_map()
- {
- }
-
virtual void m_step()
{
data_t x = m_data[0];
diff --git a/chaos/src/latoocarfian.hpp b/chaos/src/latoocarfian.hpp
index eec6116..47abc33 100644
--- a/chaos/src/latoocarfian.hpp
+++ b/chaos/src/latoocarfian.hpp
@@ -28,11 +28,10 @@
// taken from Pickover: Chaos In Wonderland
class latoocarfian
- : public map_base
+ : public map_base<2>
{
public:
- latoocarfian():
- map_base(2)
+ latoocarfian()
{
CHAOS_SYS_INIT(x1,0.5,0);
CHAOS_SYS_INIT(x2,0,1);
@@ -42,10 +41,6 @@ public:
CHAOS_PAR_INIT(c,0.765145);
CHAOS_PAR_INIT(d,0.744728);
}
-
- ~latoocarfian()
- {
- }
virtual void m_step()
{
diff --git a/chaos/src/latoomutalpha.hpp b/chaos/src/latoomutalpha.hpp
index ac4f28d..255829a 100644
--- a/chaos/src/latoomutalpha.hpp
+++ b/chaos/src/latoomutalpha.hpp
@@ -27,11 +27,10 @@
// taken from Pickover: Chaos In Wonderland
class latoomutalpha
- : public map_base
+ : public map_base<2>
{
public:
- latoomutalpha():
- map_base(2)
+ latoomutalpha()
{
CHAOS_SYS_INIT(x1,0.5,0);
CHAOS_SYS_INIT(x2,0.2,1);
@@ -41,10 +40,6 @@ public:
CHAOS_PAR_INIT(c,0.765145);
}
- ~latoomutalpha()
- {
-
- }
virtual void m_step()
{
diff --git a/chaos/src/latoomutbeta.hpp b/chaos/src/latoomutbeta.hpp
index 3a048cd..d663761 100644
--- a/chaos/src/latoomutbeta.hpp
+++ b/chaos/src/latoomutbeta.hpp
@@ -27,11 +27,10 @@
// taken from Pickover: Chaos In Wonderland
class latoomutbeta
- : public map_base
+ : public map_base<2>
{
public:
- latoomutbeta():
- map_base(2)
+ latoomutbeta()
{
CHAOS_SYS_INIT(x1,0.5,0);
CHAOS_SYS_INIT(x2,0.5,1);
@@ -40,11 +39,6 @@ public:
CHAOS_PAR_INIT(b,2.879879);
}
- ~latoomutbeta()
- {
-
- }
-
virtual void m_step()
{
data_t x1 = m_data[0], x2 = m_data[1];
diff --git a/chaos/src/latoomutgamma.hpp b/chaos/src/latoomutgamma.hpp
index 5e55225..022e651 100644
--- a/chaos/src/latoomutgamma.hpp
+++ b/chaos/src/latoomutgamma.hpp
@@ -27,11 +27,10 @@
// taken from Pickover: Chaos In Wonderland
class latoomutgamma
- : public map_base
+ : public map_base<2>
{
public:
- latoomutgamma():
- map_base(2)
+ latoomutgamma()
{
CHAOS_SYS_INIT(x1,0.5,0);
CHAOS_SYS_INIT(x2,0.5,1);
@@ -39,11 +38,6 @@ public:
CHAOS_PAR_INIT(a,-0.966918);
CHAOS_PAR_INIT(b,2.879879);
}
-
- ~latoomutgamma()
- {
-
- }
virtual void m_step()
{
@@ -59,7 +53,7 @@ public:
/* function has a fix point for x1 == x2 == 0 */
- virtual void m_verify()
+ void m_verify()
{
if (m_data[0] == 0 && m_data[1] == 0)
for (int i = 0; i != 2; ++i)
diff --git a/chaos/src/linear_congruental.hpp b/chaos/src/linear_congruental.hpp
index bc3536a..f6ce961 100644
--- a/chaos/src/linear_congruental.hpp
+++ b/chaos/src/linear_congruental.hpp
@@ -25,11 +25,10 @@
// taken from Julien C. Sprott, Chaos and Time-Series Analysis
class linear_congruental:
- public map_base
+ public map_base<2>
{
public:
- linear_congruental():
- map_base(1)
+ linear_congruental()
{
CHAOS_SYS_INIT(x, 0, 0);
diff --git a/chaos/src/logistic_map.hpp b/chaos/src/logistic_map.hpp
index 3e0ef24..7880d21 100644
--- a/chaos/src/logistic_map.hpp
+++ b/chaos/src/logistic_map.hpp
@@ -25,11 +25,10 @@
// 0 <= alpha <= 4
class logistic:
- public map_base
+ public map_base<1>
{
public:
- logistic():
- map_base(1)
+ logistic()
{
CHAOS_PAR_INIT(alpha, 3.8);
CHAOS_SYS_INIT(x, 0.5,0);
diff --git a/chaos/src/lorenz.hpp b/chaos/src/lorenz.hpp
index b27f954..cf0fa14 100644
--- a/chaos/src/lorenz.hpp
+++ b/chaos/src/lorenz.hpp
@@ -26,11 +26,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class lorenz
- : public ode_base
+ : public ode_base<3>
{
public:
- lorenz():
- ode_base(3)
+ lorenz()
{
CHAOS_PAR_INIT(method,0);
CHAOS_PAR_INIT(dt,0.01);
diff --git a/chaos/src/lozi_map.hpp b/chaos/src/lozi_map.hpp
index dee6b0d..24096a6 100644
--- a/chaos/src/lozi_map.hpp
+++ b/chaos/src/lozi_map.hpp
@@ -26,11 +26,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class lozi_map:
- public map_base
+ public map_base<2>
{
public:
- lozi_map():
- map_base(2)
+ lozi_map()
{
CHAOS_SYS_INIT(x,0,0);
CHAOS_SYS_INIT(y,0,1);
@@ -39,11 +38,6 @@ public:
CHAOS_PAR_INIT(b,0.3);
}
- ~lozi_map()
- {
-
- }
-
virtual void m_step()
{
data_t x = m_data[0];
diff --git a/chaos/src/map_base.hpp b/chaos/src/map_base.hpp
index 1395bb8..92016b1 100644
--- a/chaos/src/map_base.hpp
+++ b/chaos/src/map_base.hpp
@@ -23,26 +23,18 @@
#include "chaos_base.hpp"
+template <int dimensions>
class map_base
- : public chaos_base
+ : public chaos_base<dimensions>
{
protected:
- map_base(int n):
- chaos_base(n)
- {
- }
-
virtual void m_step()
{
}
};
-#define MAP_CALLBACKS \
-CHAOS_CALLBACKS
-
-
-#define MAP_ATTRIBUTES \
-CHAOS_ATTRIBUTES;
+#define MAP_CALLBACKS
+#define MAP_ATTRIBUTES
#define __map_base_hpp
#endif /* __map_base_hpp */
diff --git a/chaos/src/ode_base.cpp b/chaos/src/ode_base.cpp
index 2830c2f..004a1b3 100644
--- a/chaos/src/ode_base.cpp
+++ b/chaos/src/ode_base.cpp
@@ -20,55 +20,4 @@
#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.;
-}
diff --git a/chaos/src/ode_base.hpp b/chaos/src/ode_base.hpp
index 11811f7..b198dc5 100644
--- a/chaos/src/ode_base.hpp
+++ b/chaos/src/ode_base.hpp
@@ -23,45 +23,27 @@
#include "chaos_base.hpp"
-class ode_base
- : public chaos_base
+template <int dimensions>
+class ode_base:
+ public chaos_base<dimensions>
{
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)
+ if (i >= 0 && i < 4)
{
m_method = (unsigned char) i;
switch (i)
{
case 0:
- m_routine = &ode_base::rk1;
+ m_routine = &ode_base<dimensions>::rk1;
break;
case 1:
- m_routine = &ode_base::rk2;
+ m_routine = &ode_base<dimensions>::rk2;
break;
case 2:
- m_routine = &ode_base::rk4;
+ m_routine = &ode_base<dimensions>::rk4;
}
}
else
@@ -86,27 +68,75 @@ public:
}
protected:
- void (ode_base::*m_routine)(void);
+ void (ode_base<dimensions>::*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;
+ 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 ();
- void rk2 ();
- void rk4 ();
+ 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_CALLBACKS; \
CHAOS_SYS_CALLBACKS_I(method); \
CHAOS_SYS_CALLBACKS(dt);
#define ODE_ATTRIBUTES \
-CHAOS_ATTRIBUTES; \
CHAOS_SYS_ATTRIBUTE(method); \
CHAOS_SYS_ATTRIBUTE(dt);
diff --git a/chaos/src/roessler.hpp b/chaos/src/roessler.hpp
index fd65d4e..aa03a47 100644
--- a/chaos/src/roessler.hpp
+++ b/chaos/src/roessler.hpp
@@ -23,14 +23,13 @@
// roessler model: dx1/dt = - (x2 + x3)
// dx2/dt = x1 + a * x2
// dx3/dt = b + (x1 - c) * x3
-// taken from Peitgen / Jürgens / Saupe: Chaos and Fractals
+// taken from Peitgen / J�rgens / Saupe: Chaos and Fractals
class roessler
- : public ode_base
+ : public ode_base<3>
{
public:
- roessler():
- ode_base(3)
+ roessler()
{
CHAOS_PAR_INIT(method,0);
CHAOS_PAR_INIT(dt,0.001);
@@ -44,9 +43,6 @@ public:
CHAOS_PAR_INIT(c,4);
}
- ~roessler()
- {
- }
virtual void m_system(data_t* deriv, data_t* data)
{
diff --git a/chaos/src/sine_map.hpp b/chaos/src/sine_map.hpp
index 3d69065..8a11281 100644
--- a/chaos/src/sine_map.hpp
+++ b/chaos/src/sine_map.hpp
@@ -26,12 +26,11 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class sine_map:
- public map_base
+ public map_base<1>
{
public:
- sine_map():
- map_base(1)
+ sine_map()
{
CHAOS_SYS_INIT(x,0,0);
}
diff --git a/chaos/src/standard_map.hpp b/chaos/src/standard_map.hpp
index 4df1eb9..8798edc 100644
--- a/chaos/src/standard_map.hpp
+++ b/chaos/src/standard_map.hpp
@@ -27,11 +27,10 @@
// taken from Willi-Hans Steeb: Chaos and Fractals
class standard_map:
- public map_base
+ public map_base<2>
{
public:
- standard_map():
- map_base(2)
+ standard_map()
{
CHAOS_SYS_INIT(I,0.1,0);
CHAOS_SYS_INIT(theta,0.2,1);
diff --git a/chaos/src/tent_map.hpp b/chaos/src/tent_map.hpp
index 9bd8e62..2e716ac 100644
--- a/chaos/src/tent_map.hpp
+++ b/chaos/src/tent_map.hpp
@@ -26,19 +26,14 @@
class tent_map:
- public map_base
+ public map_base<1>
{
public:
- tent_map():
- map_base(1)
+ tent_map()
{
CHAOS_SYS_INIT(x, 0.6,0);
}
- ~tent_map()
- {
-
- }
virtual void m_step()
{