Imported Upstream version 0.1

parents
This diff is collapsed.
This diff is collapsed.
NAME=chaos
CSYM=chaos
current: pd_nt pd_intel pd_linux pd_darwin
# ----------------------- NT -----------------------
pd_nt: $(NAME).dll
.SUFFIXES: .dll
PDNTCFLAGS = /W3 /WX /MD /O2 /G6 /DNT /DPD /DMAXLIB /nologo
VC="C:\Programme\Microsoft Visual Studio\VC98"
PDNTINCLUDE = /I. /Ic:\pd\tcl\include /Ic:\pd\src /I$(VC)\include /Iinclude
PDNTLDIR = $(VC)\Lib
PDNTLIB = $(PDNTLDIR)\msvcrt.lib \
$(PDNTLDIR)\oldnames.lib \
$(PDNTLDIR)\kernel32.lib \
$(PDNTLDIR)\user32.lib \
$(PDNTLDIR)\uuid.lib \
$(PDNTLDIR)\ws2_32.lib \
$(PDNTLDIR)\pthreadVC.lib \
c:\pd\bin\pd.lib
PDNTEXTERNALS = lyapunov.obj henon.obj hopalong.obj ikeda.obj latoocarfian.obj latoomutalpha.obj latoomutbeta.obj latoomutgamma.obj logistic.obj lorenz.obj mlogistic.obj rossler.obj standardmap.obj tent.obj three_d.obj
.c.dll:
cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c *.c
link /dll /export:$(CSYM)_setup $*.obj $(PDNTEXTERNALS) $(PDNTLIB)
# ----------------------- Mac OS X (Darwin) -----------------------
pd_darwin: $(NAME).pd_darwin
.SUFFIXES: .pd_darwin
DARWINCFLAGS = -DPD -DMAXLIB -DUNIX -DMACOSX -O2 \
-Wall -W -Wshadow -Wstrict-prototypes \
-Wno-unused -Wno-parentheses -Wno-switch
# where is your m_pd.h ???
DARWININCLUDE = -I../../src -I../../obj
DARWINEXTERNALS = lyapunov.o attract1.o base.o base3.o dejong.o gingerbreadman.o henon.o hopalong.o ikeda.o latoocarfian.o latoomutalpha.o \
latoomutbeta.o latoomutgamma.o logistic.o lorenz.o martin.o mlogistic.o pickover.o popcorn.o quadruptwo.o rossler.o standardmap.o \
strange1.o tent.o three_d.o threeply.o tinkerbell.o unity.o lotka_volterra.o
PD_LOCAL_EXTERNALS = $(HOME)/Library/Pd/Externals
PD_LOCAL_HELP = $(HOME)/Library/Pd/Help
PD_BINARY = /usr/local/pd/bin/pd
MTARGET = $(NAME).pd_darwin
MDARWININCLUDE = -I/usr/local/pd/src
.c.o:
cc $(DARWINCFLAGS) $(DARWININCLUDE) -c *.c
.o.pd_darwin:
cc -bundle -bundle_loader $(PD_BINARY) -flat_namespace -o $*.pd_darwin $*.o $(DARWINEXTERNALS)
pd_darwin: $(DARWINEXTERNALS)
rm -f $*.o ../$*.pd_darwin
ln -s $*/$*.pd_darwin ..
minstall: $(MTARGET) $(DARWINEXTERNALS)
mv -f $(MTARGET) $(PD_LOCAL_EXTERNALS)
cp -f help-*.pd $(PD_LOCAL_HELP)
# ----------------------- LINUX i386 -----------------------
pd_linux: $(NAME).pd_linux
.SUFFIXES: .pd_linux
LINUXCFLAGS = -DPD -DUNIX -O2 -funroll-loops -fomit-frame-pointer \
-Wall -W -Wshadow \
-Wno-unused -Wno-parentheses -Wno-switch
# where is your m_pd.h ???
LINUXINCLUDE = -I/usr/local/include
LINUXEXTERNALS = lyapunov.o attract1.o base.o base3.o dejong.o gingerbreadman.o henon.o hopalong.o ikeda.o latoocarfian.o latoomutalpha.o \
latoomutbeta.o latoomutgamma.o logistic.o lorenz.o martin.o mlogistic.o pickover.o popcorn.o quadruptwo.o rossler.o standardmap.o \
strange1.o tent.o three_d.o threeply.o tinkerbell.o unity.o lotka_volterra.o
.c.pd_linux:
cc -O2 -Wall -DPD -fPIC $(LINUXCFLAGS) $(LINUXINCLUDE) -c *.c
ld --export-dynamic -shared -o $*.pd_linux $*.o $(LINUXEXTERNALS) -lc
strip --strip-unneeded $*.pd_linux
# ----------------------------------------------------------
PDDIR=/usr/lib/pd
clean:
rm -f *.o *.pd_* so_locations
This is the readme for "Chaos PD Externals" a set of objects for PD which
calculate various "Chaotic Attractors"; including: lorenz, rossler, henon,
ikeda, attract1, base, base3, dejong, gingerbreadman, hopalong, latoocarfian,
latoomutalpha, latoomutbeta, latoomutgamma, logistic, lotka_volterra, martin,
mlogistic, pickover, popcorn, quadruptwo, standardmap, strange1, tent, three_d, threeply, tinkerbell and unity.
If you have any questions/comments you can reach the co-authors at:
Ben Bogart ben@ekran.org
Michael McGonagle mjmogo@comcast.net
Please Note:
These programs are Copyright Ben Bogart 2002, Ben Bogart and Michael McGonagle 2003.
These programs are distributed under the terms of the GNU General Public
License
Chaos PD Externals are free software; you can redistribute them and/or modify
them 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.
Chaos PD Externals are distributed in the hope that they 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 the Chaos PD Externals; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
USAGE:
The package includes 1, 2 and 3 dimentional attractors. There are outlets for
each dimention, starting from the left, followed by three outlets for attractor
data (see the help patches for details). The scale of the values vary between
the different attractors. To run pd with the chaos externals use:
pd -lib chaos
The basic object methods are as follows:
bang: Calculate one iteration of the attractor.
reset: Reset to initial conditions defined by the two or three arguments.
[reset a b c] will reset the xyz values to abc respectively.
param: Modify the paramaters of the equation, the number of args depend
on the attractor. (Be careful with the parameters, an attractor
will go from stable to infinity in very few interations.)
See the example patches for other methods (parameter searching etc.)
The next release will include a script to generate your own attractor object
for chaos from the attractor attributes.
Have Fun.
#N canvas 426 137 573 476 10;
#X obj 44 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X floatatom 95 116 5 0 0 0 - - -;
#X floatatom 132 393 10 0 0 0 Y - -;
#X floatatom 44 393 10 0 0 0 X - -;
#X text 18 49 (This attractor is not continuous);
#X obj 44 132 metro 50;
#X obj 19 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 242 104 examples/readme-fractals;
#X msg 87 245 search;
#X text 138 246 Find a random attractor set;
#X msg 98 266 show;
#X obj 44 316 attract1 0 0 -0.0239362 -0.67834 2.50703 -0.0138538 -1.44072
2.47917;
#X msg 78 195 param -0.0239362 -0.67834 2.50703 -0.0138538 -1.44072
2.47917;
#X text 20 18 Attract1 Attractor;
#X text 18 33 Chaos PD Externals - Copyright Michael McGonagle \, 2003
;
#X obj 278 367 search-tools;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 5 0 11 0;
#X connect 6 0 11 0;
#X connect 8 0 11 0;
#X connect 10 0 11 0;
#X connect 11 0 3 0;
#X connect 11 1 2 0;
#X connect 11 2 15 0;
#X connect 11 3 15 1;
#X connect 11 4 15 2;
#X connect 12 0 11 0;
#X connect 15 0 11 0;
This diff is collapsed.
#N canvas 680 295 589 492 10;
#X obj 43 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X floatatom 94 135 5 0 0 0 - - -;
#X floatatom 43 332 10 0 0 0 X - -;
#X text 19 50 (This attractor is not continuous);
#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003
;
#X obj 43 151 metro 50;
#X obj 20 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 436 18 examples/readme-fractals;
#X text 21 19 Base Attractor;
#X obj 53 262 fractal-tools;
#X obj 43 285 base3 0.1 1.18939 2.24148;
#X msg 61 240 lyapunov 0 100 1000;
#X obj 126 320 search-tools;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 5 0 10 0;
#X connect 6 0 10 0;
#X connect 9 0 10 0;
#X connect 10 0 2 0;
#X connect 10 1 12 0;
#X connect 10 2 12 1;
#X connect 10 3 12 2;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
/* base Attractor PD External */
/* Copyright Michael McGonagle, 2003 */
/* This program is distributed under the params of the GNU Public License */
///////////////////////////////////////////////////////////////////////////////////
/* This file is part of Chaos PD Externals. */
/* */
/* Chaos PD Externals are free software; you can redistribute them and/or modify */
/* them 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. */
/* */
/* Chaos PD Externals are distributed in the hope that they 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 the Chaos PD Externals; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
///////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "chaos.h"
#define M_a_lo 0
#define M_a_hi 3
#define M_b_lo 0.001
#define M_b_hi 2.6667
#define M_a 0
#define M_b 1
#define M_x 0
#define M_param_count 2
#define M_var_count 1
#define M_search_count 3
#define M_failure_limit 1000
static char *version = "base v0.0, by Michael McGonagle, 2003";
t_class *base_class;
typedef struct base_struct {
t_object x_obj;
double vars[M_var_count];
double vars_init[M_var_count];
t_atom vars_out[M_var_count];
t_outlet *vars_outlet;
t_atom search_out[M_search_count];
t_outlet *search_outlet;
double a, a_lo, a_hi, b, b_lo, b_hi;
t_atom params_out[M_param_count];
t_outlet *params_outlet;
double lyap_exp, lyap_lo, lyap_hi, lyap_limit, failure_ratio;
} base_struct;
static void calc(base_struct *base, double *vars) {
double x_0;
x_0 =vars[M_x]+(base -> a*sin(pow(vars[M_x],base -> b)));
vars[M_x] = x_0;
} // end calc
static void calculate(base_struct *base) {
calc(base, base -> vars);
outlet_float(base -> x_obj.ob_outlet, base -> vars[M_x]);
} // end calculate
static void reset(base_struct *base, t_symbol *s, int argc, t_atom *argv) {
if (argc == M_var_count) {
base -> vars[M_x] = (double) atom_getfloatarg(M_x, argc, argv);
} else {
base -> vars[M_x] = base -> vars_init[M_x];
} // end if
} // end reset
static char *classify(base_struct *base) {
static char buff[3];
char *c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
buff[0] = c[(int) (((base -> a - M_a_lo) * (1.0 / (M_a_hi - M_a_lo))) * 26)];
buff[1] = c[(int) (((base -> b - M_b_lo) * (1.0 / (M_b_hi - M_b_lo))) * 26)];
buff[2] = '\0';
return buff;
}
static void make_results(base_struct *base) {
SETFLOAT(&base -> search_out[0], base -> lyap_exp);
SETSYMBOL(&base -> search_out[1], gensym(classify(base)));
SETFLOAT(&base -> search_out[2], base -> failure_ratio);
SETFLOAT(&base -> vars_out[M_x], base -> vars[M_x]);
SETFLOAT(&base -> params_out[M_a], base -> a);
SETFLOAT(&base -> params_out[M_b], base -> b);
outlet_list(base -> params_outlet, gensym("list"), M_param_count, base -> params_out);
outlet_list(base -> vars_outlet, gensym("list"), M_var_count, base -> vars_out);
}
static void show(base_struct *base) {
make_results(base);
outlet_anything(base -> search_outlet, gensym("show"), M_search_count, base -> search_out);
}
static void param(base_struct *base, t_symbol *s, int argc, t_atom *argv) {
if (argc != 2) {
post("Incorrect number of arguments for base fractal. Expecting 2 arguments.");
return;
}
base -> a = (double) atom_getfloatarg(0, argc, argv);
base -> b = (double) atom_getfloatarg(1, argc, argv);
}
static void seed(base_struct *base, t_symbol *s, int argc, t_atom *argv) {
if (argc > 0) {
srand48(((unsigned int)time(0))|1);
} else {
srand48((unsigned int) atom_getfloatarg(0, argc, argv));
}
}
static void lyap(base_struct *base, t_floatarg l, t_floatarg h, t_floatarg lim) {
base -> lyap_lo = l;
base -> lyap_hi = h;
base -> lyap_limit = (double) ((int) lim);
}
static void elyap(base_struct *base) {
double results[M_var_count];
int i;
if (lyapunov_full((void *) base, (t_gotfn) calc, M_var_count, base -> vars, results) != NULL) {
post("elyapunov:");
for(i = 0; i < M_var_count; i++) { post("%d: %3.80f", i, results[i]); }
}
}
static void limiter(base_struct *base) {
if (base -> a_lo < M_a_lo) { base -> a_lo = M_a_lo; }
if (base -> a_lo > M_a_hi) { base -> a_lo = M_a_hi; }
if (base -> a_hi < M_a_lo) { base -> a_hi = M_a_lo; }
if (base -> a_hi > M_a_hi) { base -> a_hi = M_a_hi; }
if (base -> b_lo < M_b_lo) { base -> b_lo = M_b_lo; }
if (base -> b_lo > M_b_hi) { base -> b_lo = M_b_hi; }
if (base -> b_hi < M_b_lo) { base -> b_hi = M_b_lo; }
if (base -> b_hi > M_b_hi) { base -> b_hi = M_b_hi; }
}
static void constrain(base_struct *base, t_symbol *s, int argc, t_atom *argv) {
int i;
t_atom *arg = argv;
if (argc == 0) {
// reset to full limits of search ranges
base -> a_lo = M_a_lo;
base -> a_hi = M_a_hi;
base -> b_lo = M_b_lo;
base -> b_hi = M_b_hi;
return;
}
if (argc == 1) {
// set the ranges based on percentage of full range
double percent = atom_getfloat(arg);
double a_spread = ((M_a_hi - M_a_lo) * percent) / 2;
double b_spread = ((M_b_hi - M_b_lo) * percent) / 2;
base -> a_lo = base -> a - a_spread;
base -> a_hi = base -> a + a_spread;
base -> b_lo = base -> b - b_spread;
base -> b_hi = base -> b + b_spread;
limiter(base);
return;
}
if (argc != M_param_count * 2) {
post("Invalid number of arguments for base constraints, requires 4 values, got %d", argc);
return;
}
base -> a_lo = atom_getfloat(arg++);
base -> a_hi = atom_getfloat(arg++);
base -> b_lo = atom_getfloat(arg++);
base -> b_hi = atom_getfloat(arg++);
limiter(base);
}
static void search(base_struct *base, t_symbol *s, int argc, t_atom *argv) {
int not_found, not_expired = base -> lyap_limit;
int jump, i, iterations;
t_atom vars[M_var_count];
double temp_a = base -> a;
double temp_b = base -> b;
if (argc > 0) {
for (i = 0; i < M_var_count; i++) {
SETFLOAT(&vars[i], atom_getfloatarg(i, argc, argv));
}
} else {
for (i = 0; i < M_var_count; i++) {
SETFLOAT(&vars[i], base -> vars_init[i]);
}
}
do {
jump = 500;
not_found = 0;
iterations = 10000;
bad_params:
base -> a = (drand48() * (base -> a_hi - base -> a_lo)) + base -> a_lo;
base -> b = (drand48() * (base -> b_hi - base -> b_lo)) + base -> b_lo;
// put any preliminary checks specific to this fractal to eliminate bad_params
reset(base, NULL, argc, vars);
do { calc(base, base -> vars); } while(jump--);
base -> lyap_exp = lyapunov((void *) base, (t_gotfn) calc, M_var_count, (double *) base -> vars);
if (isnan(base -> lyap_exp)) { not_found = 1; }
if (base -> lyap_exp < base -> lyap_lo || base -> lyap_exp > base -> lyap_hi) { not_found = 1; }
not_expired--;
} while(not_found && not_expired);
reset(base, NULL, argc, vars);
if (!not_expired) {
post("Could not find a fractal after %d attempts.", (int) base -> lyap_limit);
post("Try using wider constraints.");
base -> a = temp_a;
base -> b = temp_b;
outlet_anything(base -> search_outlet, gensym("invalid"), 0, NULL);
} else {
base -> failure_ratio = (base -> lyap_limit - not_expired) / base -> lyap_limit;
make_results(base);
outlet_anything(base -> search_outlet, gensym("search"), M_search_count, base -> search_out);
}
}
void *base_new(t_symbol *s, int argc, t_atom *argv) {
base_struct *base = (base_struct *) pd_new(base_class);
if (base != NULL) {
outlet_new(&base -> x_obj, &s_float);
base -> search_outlet = outlet_new(&base -> x_obj, &s_list);
base -> vars_outlet = outlet_new(&base -> x_obj, &s_list);
base -> params_outlet = outlet_new(&base -> x_obj, &s_list);
if (argc == M_param_count + M_var_count) {
base -> vars_init[M_x] = base -> vars[M_x] = (double) atom_getfloatarg(0, argc, argv);
base -> a = (double) atom_getfloatarg(1, argc, argv);
base -> b = (double) atom_getfloatarg(2, argc, argv);
} else {
if (argc != 0 && argc != M_param_count + M_var_count) {
post("Incorrect number of arguments for base fractal. Expecting 3 arguments.");
}
base -> vars_init[M_x] = 0.1;
base -> a = 1;
base -> b = 1;
}
constrain(base, NULL, 0, NULL);
lyap(base, -1000000.0, 1000000.0, M_failure_limit);
}
return (void *)base;
}
void base_setup(void) {
base_class = class_new(gensym("base"), (t_newmethod) base_new, 0, sizeof(base_struct), 0, A_GIMME, 0);
class_addbang(base_class, (t_method) calculate);
class_addmethod(base_class, (t_method) reset, gensym("reset"), A_GIMME, 0);
class_addmethod(base_class, (t_method) show, gensym("show"), 0);
class_addmethod(base_class, (t_method) param, gensym("param"), A_GIMME, 0);
class_addmethod(base_class, (t_method) seed, gensym("seed"), A_GIMME, 0);
class_addmethod(base_class, (t_method) lyap, gensym("lyapunov"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0);
class_addmethod(base_class, (t_method) elyap, gensym("elyapunov"), 0);
class_addmethod(base_class, (t_method) search, gensym("search"), A_GIMME, 0);
class_addmethod(base_class, (t_method) constrain, gensym("constrain"), A_GIMME, 0);
}
#N canvas 174 217 589 492 10;
#X obj 43 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X floatatom 94 135 5 0 0 0 - - -;
#X floatatom 43 332 10 0 0 0 X - -;
#X text 19 50 (This attractor is not continuous);
#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003
;
#X obj 43 151 metro 50;
#X obj 20 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 436 18 examples/readme-fractals;
#X text 21 19 Base Attractor;
#X obj 53 262 fractal-tools;
#X obj 43 285 base3 0.1 1.18939 2.24148;
#X msg 61 240 lyapunov 0 100 1000;
#X obj 126 320 search-tools;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 5 0 10 0;
#X connect 6 0 10 0;
#X connect 9 0 10 0;
#X connect 10 0 2 0;
#X connect 10 1 12 0;
#X connect 10 2 12 1;
#X connect 10 3 12 2;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
This diff is collapsed.
#N canvas 15 49 200 200 10;
#N canvas 25 49 420 300 META 1;
#X text 13 41 NAME chaos;
#X text 10 25 AUTHOR Ben Bogart <ben@ekran.org> \, Michael McGonagle <mjmogo@comcast.net>;
#X text 10 10 VERSION 0.1;
#X text 10 100 LICENSE GPLv2+;
#X restore 10 10 pd META;
/*
a test file for chaos.h
*/
#ifndef PD_VERSION
#include "m_pd.h"
#endif
#define MAX_VARS 20
/*
* fractal - pointer to the object under test
* calc - the iteration function
* var_count - the number of variables for this fractal class
* vars - pointer to the fractal variables array
*/
double lyapunov(void *fractal, t_gotfn calc, int var_count, double *vars);
/*
* CAUTION: ON FRACTALS WITH LOTS OF VARIABLES, THIS WILL TAKE A WHILE.
* This is an experimental function to test the ability of the function to
* calculate an accurate exponent by aberating each variable in the fractal.
* returns 'results' on completion.
*/
double *lyapunov_full(void *fractal, t_gotfn calc, int var_count, double *vars, double *results);
File added
Microsoft Visual Studio Solution File, Format Version 7.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chaos", "chaos.vcproj", "{079DD347-F5E0-4784-9BCE-AF551691BA41}"
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
ConfigName.0 = Debug
ConfigName.1 = Release
EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{079DD347-F5E0-4784-9BCE-AF551691BA41}.Debug.ActiveCfg = Debug|Win32
{079DD347-F5E0-4784-9BCE-AF551691BA41}.Debug.Build.0 = Debug|Win32
{079DD347-F5E0-4784-9BCE-AF551691BA41}.Release.ActiveCfg = Release|Win32
{079DD347-F5E0-4784-9BCE-AF551691BA41}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal
File added
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.00"
Name="chaos"
ProjectGUID="{079DD347-F5E0-4784-9BCE-AF551691BA41}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;E:\pd\pd-0.35-1\src&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;NT;PD"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /EXPORT:rossler_setup henon_setup ikeda_setup lorenz_setup"
AdditionalDependencies="D:\downloads\pd\pd-0.35-test23\bin\pd.lib D:\downloads\pd\pd-0.35-test23\bin\pthreadVC.lib"
ShowProgress="2"
OutputFile="$(OutDir)/cooled~.dll"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="D:\downloads\pd\pd-0.35-test23\bin"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/$(ProjectName).pdb"
SubSystem="2"
TargetMachine="0"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="TRUE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
OmitFramePointers="TRUE"
OptimizeForProcessor="0"
AdditionalIncludeDirectories="&quot;E:\pd\pd-0.35-1\src&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;NT;PD"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/EXPORT:chaos_setup"
AdditionalDependencies="E:\pd\pd-0.35-1\bin\pd.lib"
OutputFile="$(OutDir)/$(ProjectName).dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="&quot;E:\pd\pd-0.35-1\bin&quot;"
GenerateDebugInformation="TRUE"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
</Configurations>
<Files>
<File
RelativePath="chaos.c">
</File>
<File
RelativePath="henon.c">
</File>
<File
RelativePath="ikeda.c">
</File>
<File
RelativePath="lorenz.c">
</File>
<File
RelativePath="rossler.c">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
#N canvas 426 137 573 476 10;
#X obj 44 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;