Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/include/sffe_cmplx_asm.h
diff options
context:
space:
mode:
authorBernie Innocenti <bernie@codewiz.org>2010-05-03 21:53:47 (GMT)
committer Bernie Innocenti <bernie@codewiz.org>2010-05-03 21:53:47 (GMT)
commit1030dc837b10a03a02a85d5504cbeec168ce49e2 (patch)
tree698eefa87ac437deaf36a4141b326f8ce7986692 /src/include/sffe_cmplx_asm.h
Import XaoS r489 (trunk after version 3.5)
Diffstat (limited to 'src/include/sffe_cmplx_asm.h')
-rw-r--r--src/include/sffe_cmplx_asm.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/include/sffe_cmplx_asm.h b/src/include/sffe_cmplx_asm.h
new file mode 100644
index 0000000..f14aae8
--- /dev/null
+++ b/src/include/sffe_cmplx_asm.h
@@ -0,0 +1,140 @@
+/*/////////////////////////////////////////////////////////////////////////////////////
+// project : sFFe ( SegFault (or Segmentation Fault :) ) formula evalutaor )
+// author : Mateusz Malczak ( mateusz@malczak.info )
+// wpage : www.segfaultlabs.com/projects/sffe
+///////////////////////////////////////////////////////////////////////////////////////
+// special build for XaoS, for more info visit
+// http://www.segfaultlabs.com/projects/sfXaos
+/////////////////////////////////////////////////////////////////////////////////////*/
+#ifndef SFFE_CMPLX_ASM_H
+#define SFFE_CMPLX_ASM_H
+
+#include <config.h>
+#ifdef SFFE_CMPLX_ASM
+
+#include "sffe.h"
+
+#define sffnctscount 43
+#define sfvarscount 6
+#define cmplxset(c,r,i) ( c = cset(r,i) )
+#define real(c) (c).r
+#define imag(c) (c).i
+
+#ifdef __ELF__
+#define sffecabs _sffecabs
+#define sffecarg _sffecarg
+#define sffecargs _sffecargs
+#define sffecargc _sffecargc
+#define sffecinv _sffecinv
+#define sffecexp _sffecexp
+#define sffecln _sffecln
+#define sffeclog2 _sffeclog2
+#define sffeclog _sffeclog
+#define sffecsin _sffecsin
+#define sffeccos _sffeccos
+#define sffectan _sffectan
+#define sffeccot _sffeccot
+#define sffecsinh _sffecsinh
+#define sffeccosh _sffeccosh
+#define sffectanh _sffectanh
+#define sffeccoth _sffeccoth
+#define sffeccpow _sffeccpow
+#define sffecpowd _sffecpowd
+#define sffecpowi _sffecpowi
+#define sffecpowc _sffecpowc
+#define sffecsqrt _sffecsqrt
+#define sffecrtni _sffecrtni
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /* written with asm in file cmplx.asm, compile with NASM */
+ extern double sffecabs(const cmplx c);
+ extern double sffecarg(const cmplx c);
+ extern double sffecargs(const cmplx c);
+ extern double sffecargc(const cmplx c);
+ extern cmplx sffecinv(const cmplx c);
+ extern cmplx sffecexp(const cmplx c);
+ extern cmplx sffecln(const cmplx c);
+ extern cmplx sffeclog2(const cmplx c);
+ extern cmplx sffeclog(const cmplx c, unsigned int base);
+ extern cmplx sffecsin(const cmplx c);
+ extern cmplx sffeccos(const cmplx c);
+ extern cmplx sffectan(const cmplx c);
+ extern cmplx sffeccot(const cmplx c);
+ extern cmplx sffecsinh(const cmplx c);
+ extern cmplx sffeccosh(const cmplx c);
+ extern cmplx sffectanh(const cmplx c);
+ extern cmplx sffeccoth(const cmplx c);
+ /* power functions */
+ extern cmplx sffeccpow(const cmplx b, const cmplx exp);
+ extern cmplx sffecpowd(const cmplx b, double exp);
+ extern cmplx sffecpowi(const cmplx b, int exp);
+ extern cmplx sffecpowc(double b, const cmplx exp);
+ extern cmplx sffecsqrt(const cmplx b); /* square root */
+ extern cmplx sffecrtni(const cmplx b, int n, int i); /* i-th solution of N-th order root of a CN */
+/*complex numbers for mparser*/
+ cmplx cset(double r, double i);
+ cmplx cadd(const cmplx c1, const cmplx c2);
+ cmplx csub(const cmplx c1, const cmplx c2);
+ cmplx cmul(const cmplx c1, const cmplx c2);
+ cmplx cdiv(const cmplx c1, const cmplx c2);
+ sfarg *sfadd(sfarg * const p); /* + */
+ sfarg *sfsub(sfarg * const p); /* - */
+ sfarg *sfmul(sfarg * const p); /* * */
+ sfarg *sfdiv(sfarg * const p); /* / */
+ sfarg *sfsin(sfarg * const p); /* sin */
+ sfarg *sfcos(sfarg * const p); /* cos */
+ sfarg *sftan(sfarg * const p); /* tan */
+ sfarg *sfcot(sfarg * const p); /* ctan */
+ sfarg *sfasin(sfarg * const p); /* asin */
+ sfarg *sfacos(sfarg * const p); /* acos */
+ sfarg *sfatan(sfarg * const p); /* atan */
+ sfarg *sfacot(sfarg * const p); /* actan */
+ sfarg *sfatan2(sfarg * const p); /* atan2 */
+ sfarg *sfsinh(sfarg * const p); /* sinh */
+ sfarg *sfcosh(sfarg * const p); /* cosh */
+ sfarg *sftanh(sfarg * const p); /* tanh */
+ sfarg *sfcoth(sfarg * const p); /* ctanh */
+ sfarg *sfexp(sfarg * const p); /* exp */
+ sfarg *sflog(sfarg * const p); /* log */
+ sfarg *sflog2(sfarg * const p); /* log2 */
+ sfarg *sflog10(sfarg * const p); /* log2 */
+ sfarg *sflogN(sfarg * const p); /* logN */
+ sfarg *sflogCN(sfarg * const p); /* logCN */
+ sfarg *sfpow(sfarg * const p); /* csflx pow */
+ sfarg *sfpowi(sfarg * const p); /* int pow */
+ sfarg *sfpowd(sfarg * const p); /* double pow */
+ sfarg *sfpowdc(sfarg * const p); /* double to csflx pow */
+ sfarg *sfsqr(sfarg * const p); /* sqr */
+ sfarg *sfsqrt(sfarg * const p); /* sqrt */
+ sfarg *sfrtni(sfarg * const p); /* rtni *//*cos tu nie tak jak powinno byc ;( */
+ sfarg *sfinv(sfarg * const p); /* cinv */
+ sfarg *sfceil(sfarg * const p); /* ceil */
+ sfarg *sffloor(sfarg * const p); /* floor */
+ sfarg *sfabs(sfarg * const p); /* abs - |z| */
+ sfarg *sfre(sfarg * const p); /* RE */
+ sfarg *sfim(sfarg * const p); /* IM */
+ sfarg *sfrabs(sfarg * const p); /* abs - real numbers */
+ sfarg *sfrand(sfarg * const p); /* rand */
+/*const eval*/
+ void sfcPI(sfNumber * cnst);
+ void sfcPI2(sfNumber * cnst);
+ void sfc2PI(sfNumber * cnst);
+ void sfcE(sfNumber * cnst);
+ void sfcI(sfNumber * cnst);
+ void sfcRND(sfNumber * cnst);
+#ifdef __cplusplus
+}
+#endif
+/* all available function (function pointer, number of parameters, name )*/
+ extern const sffunction sfcmplxfunc[sffnctscount];
+/* all available buildin variables */
+extern const char sfcnames[sfvarscount][5];
+/* available variables function pointers */
+extern const cfptr sfcvals[sfvarscount];
+
+#endif
+#endif