--- src/engine/formulas.c.old 2007-10-05 21:35:03.000000000 +0200 +++ src/engine/formulas.c 2007-11-03 11:46:07.000000000 +0100 @@ -1049,6 +1049,61 @@ #define RPIP #include "docalc.c" +#define BERYL_VARIABLES register number_t yre, yim, re1tmp, re2tmp, im1tmp, modz=0; +#define BERYL_TEST (less_than_4(modz)||(yre*yre+yim*yim)<9*(modz)) +#define BERYL_FORMULA \ + re1tmp=zre; \ + re2tmp=yre; \ + im1tmp=zim; \ + zre=(re1tmp+re2tmp)/2; \ + zim=(im1tmp+yim)/2; \ + yre=(re1tmp*re2tmp-im1tmp*yim ); \ + yim=(re1tmp*yim +re2tmp*im1tmp); \ + modz=zre*zre+zim*zim; + +#define VARIABLES BERYL_VARIABLES; +#define BTEST BERYL_TEST +/* Im(U0) and Im(V0) constant */ +#define INIT yim=pim, yre=zim, zim=pre; +#define FORMULA BERYL_FORMULA +#define CALC beryl_calc +#define PERI beryl_peri +#define RANGE 2 +#include "docalc.c" + +#define VARIABLES BERYL_VARIABLES; +#define BTEST BERYL_TEST +/* U0 constant */ +#define INIT yre=pre; yim=pim; +#define FORMULA BERYL_FORMULA +#define CALC emerald_calc +#define PERI emerald_peri +#include "docalc.c" + +#define VARIABLES BERYL_VARIABLES; +#define BTEST BERYL_TEST +/* Re(U0) and Re(V0) constant */ +#define INIT yim=zre, yre=pim, zre=pre; +#define FORMULA BERYL_FORMULA +#define CALC heliodor_calc +#define PERI heliodor_peri +#define RANGE 2 +#include "docalc.c" + +#define VARIABLES BERYL_VARIABLES; +#define BTEST BERYL_TEST +/* Re(u0) and Im(v0) constant */ +#define INIT yre=zre, zre=pre, yim=pim; +#define FORMULA BERYL_FORMULA +#define CALC aquamarine_calc +#define PERI aquamarine_peri +#define RANGE 2 +#include "docalc.c" + +#undef BERYL_VARIABLES +#undef BERYL_TEST +#undef BERYL_FORMULA + /* plan9 compiler has problem with rest of formulas files. Hope that will be fixed later */ #define VARIABLES @@ -2207,7 +2262,171 @@ {INT_MAX, INT_MAX, 0, NULL}, }, MANDEL_BTRACE, - } + } , + { /* formula added by Samuel Bizien */ + FORMULAMAGIC, +#ifndef SLOWFUNCPTR + beryl_calc, + beryl_peri, + NULL, + NULL, +#endif + NULL, + {"Beryl", "Beryl"}, + "beryl", + {0, 0, 12, 12}, + 0, 0, 0.0, 0.0, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + MANDEL_BTRACE, + } , + { /* formula added by Samuel Bizien */ + FORMULAMAGIC, +#ifndef SLOWFUNCPTR + emerald_calc, + emerald_peri, + NULL, + NULL, +#endif + NULL, + {"Emeraude", "Emeraude"}, + "emerald", + {-0.75, 0, 5, 5}, + 0, 0, 1.0, 0.0, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + MANDEL_BTRACE, + } , + { /* formula added by Samuel Bizien */ + FORMULAMAGIC, +#ifndef SLOWFUNCPTR + heliodor_calc, + heliodor_peri, + NULL, + NULL, +#endif + NULL, + {"Heliodor", "Heliodor"}, + "heliodor", + {0, 0, 4, 4}, + 0, 0, 1.0, 1.0, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + MANDEL_BTRACE, + } , + {/* formula added by Samuel Bizien */ + FORMULAMAGIC, +#ifndef SLOWFUNCPTR + aquamarine_calc, + aquamarine_peri, + NULL, + NULL, +#endif + NULL, + {"Aquamarine", "Aquamarine"}, + "aquamarine", + {0, 0, 12, 12}, + 0, 0, 0.0, 0.0, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + { + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + {INT_MAX, INT_MAX, 0, NULL}, + }, + MANDEL_BTRACE, + } }; #ifdef SLOWFUNCPTR @@ -2287,10 +2506,22 @@ break; case 22: return (koch_calc (x1, y1, x2, y2)); - break; + break; case 23: return (hornflake_calc (x1, y1, x2, y2)); - break; + break; + case 24: + return (beryl_peri (x1, y1, x2, y2)); + break; + case 25: + return (emerald_peri (x1, y1, x2, y2)); + break; + case 26: + return (heliodor_peri (x1, y1, x2, y2)); + break; + case 27: + return (aquamarine_peri (x1, y1, x2, y2)); + break; } else switch (cfractalc.currentformula - formulas) @@ -2363,10 +2594,22 @@ break; case 22: return (koch_calc (x1, y1, x2, y2)); - break; + break; case 23: return (hornflake_calc (x1, y1, x2, y2)); - break; + break; + case 24: + return (beryl_peri (x1, y1, x2, y2)); + break; + case 25: + return (emerald_peri (x1, y1, x2, y2)); + break; + case 26: + return (heliodor_peri (x1, y1, x2, y2)); + break; + case 27: + return (aquamarine_peri (x1, y1, x2, y2)); + break; } else if (cfractalc.coloringmode == 9) switch (cfractalc.currentformula - formulas) @@ -2442,7 +2685,19 @@ break; case 23: return (hornflake_calc (x1, y1, x2, y2)); - break; + break; + case 24: + return (beryl_calc (x1, y1, x2, y2)); + break; + case 25: + return (emerald_calc (x1, y1, x2, y2)); + break; + case 26: + return (heliodor_calc (x1, y1, x2, y2)); + break; + case 27: + return (aquamarine_calc (x1, y1, x2, y2)); + break; } else switch (cfractalc.currentformula - formulas) @@ -2516,9 +2771,21 @@ case 22: return (koch_calc (x1, y1, x2, y2)); break; - case 22: + case 23: return (hornflake_calc (x1, y1, x2, y2)); - break; + break; + case 24: + return (beryl_calc (x1, y1, x2, y2)); + break; + case 25: + return (emerald_calc (x1, y1, x2, y2)); + break; + case 26: + return (heliodor_calc (x1, y1, x2, y2)); + break; + case 27: + return (aquamarine_calc (x1, y1, x2, y2)); + break; } return 0; }