-
Notifications
You must be signed in to change notification settings - Fork 59
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add user-defined formulas via ExprTk
- Loading branch information
Showing
9 changed files
with
39,117 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,41 @@ | ||
SOURCES += \ | ||
$$PWD/formulas.c \ | ||
$$PWD/fractal.c \ | ||
$$PWD/btrace.c \ | ||
$$PWD/palettef.c \ | ||
$$PWD/emboss.c \ | ||
$$PWD/star.c \ | ||
$$PWD/anti.c \ | ||
$$PWD/dither.c \ | ||
$$PWD/edge.c \ | ||
$$PWD/edge2.c \ | ||
$$PWD/rotate.c \ | ||
$$PWD/zoom.c \ | ||
$$PWD/blur.c \ | ||
$$PWD/interlace.c \ | ||
$$PWD/itersmall.c \ | ||
$$PWD/stereogram.c \ | ||
$$PWD/3d.c \ | ||
$$PWD/subwindow.c \ | ||
$$PWD/plane.c \ | ||
$$PWD/julia.c \ | ||
$$PWD/i386.c | ||
|
||
HEADERS += \ | ||
$$PWD/calculate.h \ | ||
$$PWD/julia.h | ||
|
||
OTHER_FILES += \ | ||
$$PWD/3dd.c \ | ||
$$PWD/btraced.c \ | ||
$$PWD/docalc.c \ | ||
$$PWD/edged.c \ | ||
$$PWD/edge2d.c \ | ||
$$PWD/docalc.c \ | ||
$$PWD/paletted.c \ | ||
$$PWD/rotated.c \ | ||
$$PWD/stard.c \ | ||
$$PWD/stereod.c \ | ||
$$PWD/zoomd.c | ||
SOURCES += \ | ||
$$PWD/formulas.c \ | ||
$$PWD/fractal.c \ | ||
$$PWD/btrace.c \ | ||
$$PWD/palettef.c \ | ||
$$PWD/emboss.c \ | ||
$$PWD/star.c \ | ||
$$PWD/anti.c \ | ||
$$PWD/dither.c \ | ||
$$PWD/edge.c \ | ||
$$PWD/edge2.c \ | ||
$$PWD/rotate.c \ | ||
$$PWD/zoom.c \ | ||
$$PWD/blur.c \ | ||
$$PWD/interlace.c \ | ||
$$PWD/itersmall.c \ | ||
$$PWD/stereogram.c \ | ||
$$PWD/3d.c \ | ||
$$PWD/subwindow.c \ | ||
$$PWD/plane.c \ | ||
$$PWD/julia.c \ | ||
$$PWD/i386.c \ | ||
$$PWD/exprtk.cpp | ||
|
||
HEADERS += \ | ||
$$PWD/calculate.h \ | ||
$$PWD/julia.h \ | ||
$$PWD/exprtk.hpp | ||
|
||
OTHER_FILES += \ | ||
$$PWD/3dd.c \ | ||
$$PWD/btraced.c \ | ||
$$PWD/docalc.c \ | ||
$$PWD/edged.c \ | ||
$$PWD/edge2d.c \ | ||
$$PWD/docalc.c \ | ||
$$PWD/paletted.c \ | ||
$$PWD/rotated.c \ | ||
$$PWD/stard.c \ | ||
$$PWD/stereod.c \ | ||
$$PWD/zoomd.c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
#include "aconfig.h" | ||
#ifdef USE_EXPRTK | ||
#include "exprtk.h" | ||
#include "exprtk.hpp" | ||
#include <complex> | ||
|
||
typedef std::complex<double> complex_t; | ||
typedef exprtk::symbol_table<complex_t> symbol_table_t; | ||
typedef exprtk::expression<complex_t> expression_t; | ||
typedef exprtk::parser<complex_t> parser_t; | ||
|
||
|
||
bool operator<(const complex_t& a, const complex_t& b) | ||
{ | ||
return false; | ||
} | ||
|
||
bool operator<=(const complex_t& a, const complex_t& b) | ||
{ | ||
return false; | ||
} | ||
|
||
bool operator>(const complex_t& a, const complex_t& b) | ||
{ | ||
return false; | ||
} | ||
|
||
bool operator>=(const complex_t& a, const complex_t& b) | ||
{ | ||
return false; | ||
} | ||
|
||
static complex_t z; | ||
static complex_t c; | ||
static symbol_table_t symbol_table; | ||
static expression_t expression; | ||
static parser_t parser; | ||
|
||
extern "C" { | ||
|
||
void exprtk_setexpr(const char* expression_string) | ||
{ | ||
parser.compile(expression_string, expression); | ||
} | ||
|
||
void exprtk_init() | ||
{ | ||
|
||
symbol_table.add_variable("z", z); | ||
symbol_table.add_variable("c", c); | ||
symbol_table.add_constants(); | ||
expression.register_symbol_table(symbol_table); | ||
exprtk_setexpr("z*z+c"); | ||
} | ||
|
||
exprtk_cmplx exprtk_eval(double zre, double zim, double cre, double cim) | ||
{ | ||
z = complex_t(zre, zim); | ||
c = complex_t(cre, cim); | ||
z = expression.value(); | ||
exprtk_cmplx ret; | ||
ret.re = z.real(); | ||
ret.im = z.imag(); | ||
return ret; | ||
} | ||
|
||
} | ||
#endif |
Oops, something went wrong.