aboutsummaryrefslogtreecommitdiff
path: root/chaos/src/logistic_map.hpp
diff options
context:
space:
mode:
authorTim Blechmann <timblech@users.sourceforge.net>2005-01-01 11:06:58 +0000
committerIOhannes m zmölnig <zmoelnig@iem.at>2015-10-14 15:11:58 +0200
commit2a0d532e5965402f19f74f70dfdcc7efd1055b15 (patch)
tree65cf38a9d098e9867287b7a274220da401cb6b57 /chaos/src/logistic_map.hpp
parent2f98df88850ab893c7acf8ea2b9000c03c2e17da (diff)
speedup using function pointers
svn path=/trunk/externals/tb/; revision=2439
Diffstat (limited to 'chaos/src/logistic_map.hpp')
-rw-r--r--chaos/src/logistic_map.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/chaos/src/logistic_map.hpp b/chaos/src/logistic_map.hpp
index 1808baa..ef2f603 100644
--- a/chaos/src/logistic_map.hpp
+++ b/chaos/src/logistic_map.hpp
@@ -21,7 +21,7 @@
#include "map_base.hpp"
// logistic map: x[n+1] = alpha * x[n] * (1 - x[n])
-// 0 <= x[n] < 1
+// 0 < x[n] < 1
// 0 <= alpha <= 4
class logistic:
@@ -43,9 +43,9 @@ public:
virtual void m_step()
{
- data_t data = m_data[0];
+ data_t x = m_data[0];
data_t alpha = CHAOS_PARAMETER(alpha);
- m_data[0] = alpha * data * (1.f - data);
+ m_data[0] = alpha * x * (1.f - x);
}
CHAOS_SYSPAR_FUNCS_PRED(alpha, m_pred_alpha);
@@ -60,6 +60,14 @@ public:
{
return (f > 0) && (f < 1);
}
+
+ virtual void m_verify()
+ {
+ data_t x = m_data[0];
+ if (m_pred_x(x))
+ return;
+ m_data[0] = 0.5;
+ }
};
#define LOGISTIC_CALLBACKS \