From ef53e19b3d9019b1b1f3345390f55ae9229ce390 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sat, 22 Oct 2005 15:11:45 +0000 Subject: cleanups and new system svn path=/trunk/externals/tb/; revision=3750 --- chaos/src/linear_congruental.hpp | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 chaos/src/linear_congruental.hpp (limited to 'chaos/src/linear_congruental.hpp') diff --git a/chaos/src/linear_congruental.hpp b/chaos/src/linear_congruental.hpp new file mode 100644 index 0000000..bc3536a --- /dev/null +++ b/chaos/src/linear_congruental.hpp @@ -0,0 +1,68 @@ +// +// +// chaos~ +// Copyright (C) 2004 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 +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; see the file COPYING. If not, write to +// the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +#include "map_base.hpp" + +// tent map: x[n+1] = A*x[n] + B mod C +// +// taken from Julien C. Sprott, Chaos and Time-Series Analysis + +class linear_congruental: + public map_base +{ +public: + linear_congruental(): + map_base(1) + { + CHAOS_SYS_INIT(x, 0, 0); + + CHAOS_PAR_INIT(A, 1741); + CHAOS_PAR_INIT(B, 54773); + CHAOS_PAR_INIT(C, 259200); + } + + virtual void m_step() + { + data_t x = m_data[0]; + + m_data[0] = chaos_mod( CHAOS_PARAMETER(A) * x + CHAOS_PARAMETER(B), CHAOS_PARAMETER(C)); + } + + CHAOS_SYSVAR_FUNCS(x,0); + + CHAOS_SYSPAR_FUNCS(A); + CHAOS_SYSPAR_FUNCS(B); + CHAOS_SYSPAR_FUNCS(C); +}; + +#define LINEAR_CONGRUENTAL_CALLBACKS \ +MAP_CALLBACKS; \ +CHAOS_SYS_CALLBACKS(A); \ +CHAOS_SYS_CALLBACKS(B); \ +CHAOS_SYS_CALLBACKS(C); \ +CHAOS_SYS_CALLBACKS(x); + +#define LINEAR_CONGRUENTAL_ATTRIBUTES \ +MAP_ATTRIBUTES; \ +CHAOS_SYS_ATTRIBUTE(A); \ +CHAOS_SYS_ATTRIBUTE(B); \ +CHAOS_SYS_ATTRIBUTE(C); \ +CHAOS_SYS_ATTRIBUTE(x); + -- cgit v1.2.1 From 13cba7a7997e318fbba01a36912219355e387d52 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sun, 21 May 2006 18:34:34 +0000 Subject: rewrote most stuff using templates svn path=/trunk/externals/tb/; revision=5105 --- chaos/src/linear_congruental.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'chaos/src/linear_congruental.hpp') 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); -- cgit v1.2.1 From 2c157bd8aa1f5387169cc0c0910d36c8068c4068 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sun, 21 May 2006 19:17:04 +0000 Subject: improved inlining for maps svn path=/trunk/externals/tb/; revision=5106 --- chaos/src/linear_congruental.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'chaos/src/linear_congruental.hpp') diff --git a/chaos/src/linear_congruental.hpp b/chaos/src/linear_congruental.hpp index f6ce961..25bc837 100644 --- a/chaos/src/linear_congruental.hpp +++ b/chaos/src/linear_congruental.hpp @@ -37,7 +37,7 @@ public: CHAOS_PAR_INIT(C, 259200); } - virtual void m_step() + void m_step() { data_t x = m_data[0]; -- cgit v1.2.1 From fae4d2ec359b596a775973956daf4636856f0141 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 6 Sep 2006 20:32:21 +0000 Subject: cleanups svn path=/trunk/externals/tb/; revision=5880 --- chaos/src/linear_congruental.hpp | 66 ++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) (limited to 'chaos/src/linear_congruental.hpp') diff --git a/chaos/src/linear_congruental.hpp b/chaos/src/linear_congruental.hpp index 25bc837..9c6310f 100644 --- a/chaos/src/linear_congruental.hpp +++ b/chaos/src/linear_congruental.hpp @@ -1,18 +1,18 @@ -// -// +// +// // chaos~ // Copyright (C) 2004 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 // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -25,43 +25,43 @@ // taken from Julien C. Sprott, Chaos and Time-Series Analysis class linear_congruental: - public map_base<2> + public map_base<2> { public: - linear_congruental() - { - CHAOS_SYS_INIT(x, 0, 0); - - CHAOS_PAR_INIT(A, 1741); - CHAOS_PAR_INIT(B, 54773); - CHAOS_PAR_INIT(C, 259200); - } + linear_congruental() + { + CHAOS_SYS_INIT(x, 0, 0); + + CHAOS_PAR_INIT(A, 1741); + CHAOS_PAR_INIT(B, 54773); + CHAOS_PAR_INIT(C, 259200); + } - void m_step() - { - data_t x = m_data[0]; + void m_step() + { + data_t x = m_data[0]; - m_data[0] = chaos_mod( CHAOS_PARAMETER(A) * x + CHAOS_PARAMETER(B), CHAOS_PARAMETER(C)); - } + m_data[0] = std::fmod( CHAOS_PARAMETER(A) * x + CHAOS_PARAMETER(B), CHAOS_PARAMETER(C)); + } - CHAOS_SYSVAR_FUNCS(x,0); + CHAOS_SYSVAR_FUNCS(x,0); - CHAOS_SYSPAR_FUNCS(A); - CHAOS_SYSPAR_FUNCS(B); - CHAOS_SYSPAR_FUNCS(C); + CHAOS_SYSPAR_FUNCS(A); + CHAOS_SYSPAR_FUNCS(B); + CHAOS_SYSPAR_FUNCS(C); }; -#define LINEAR_CONGRUENTAL_CALLBACKS \ -MAP_CALLBACKS; \ -CHAOS_SYS_CALLBACKS(A); \ -CHAOS_SYS_CALLBACKS(B); \ -CHAOS_SYS_CALLBACKS(C); \ +#define LINEAR_CONGRUENTAL_CALLBACKS \ +MAP_CALLBACKS; \ +CHAOS_SYS_CALLBACKS(A); \ +CHAOS_SYS_CALLBACKS(B); \ +CHAOS_SYS_CALLBACKS(C); \ CHAOS_SYS_CALLBACKS(x); -#define LINEAR_CONGRUENTAL_ATTRIBUTES \ -MAP_ATTRIBUTES; \ -CHAOS_SYS_ATTRIBUTE(A); \ -CHAOS_SYS_ATTRIBUTE(B); \ -CHAOS_SYS_ATTRIBUTE(C); \ +#define LINEAR_CONGRUENTAL_ATTRIBUTES \ +MAP_ATTRIBUTES; \ +CHAOS_SYS_ATTRIBUTE(A); \ +CHAOS_SYS_ATTRIBUTE(B); \ +CHAOS_SYS_ATTRIBUTE(C); \ CHAOS_SYS_ATTRIBUTE(x); -- cgit v1.2.1