[BACK]Return to dft.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / fft

Annotation of OpenXM_contrib2/asir2000/fft/dft.h, Revision 1.1.1.1

1.1       noro        1: /* $OpenXM: OpenXM/src/asir99/fft/dft.h,v 1.1.1.1 1999/11/10 08:12:27 noro Exp $ */
                      2: #if LONG_IS_32BIT
                      3: #if defined(VISUAL)
                      4: typedef unsigned _int64 UL;
                      5: #else
                      6: typedef unsigned long long UL;
                      7: #endif
                      8: #else
                      9: typedef unsigned long UL;
                     10: #endif
                     11:
                     12: struct PrimesS {
                     13:        int     prime, primroot;
                     14:        int  bitwid, d;
                     15: };
                     16:
                     17: #if USE_FLOAT
                     18: #define NPrimes 536
                     19: #else
                     20: #define NPrimes 13681
                     21: #endif
                     22:
                     23: #if USE_FLOAT
                     24: typedef float ModNum;
                     25:
                     26: #define AxBplusCmodP(ans,anstype,a,b,c,p,pinv) \
                     27:   { double _w_ = ((double)(a))*((double)(b))+((double)(c)), \
                     28:       _dp_ = (double)(p); \
                     29:       if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
                     30:       ans = (anstype) (_w_>=_dp_?_w_-_dp_: _w_); }
                     31:
                     32: #define AxBmodP(ans,anstype,a,b,p,pinv) \
                     33:   { double _w_ = ((double)(a))*((double)(b)), _dp_ = (double)(p); \
                     34:       _dp_ = (double)(p); \
                     35:       if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
                     36:       ans = (anstype) (_w_>=_dp_?_w_-_dp_: _w_); }
                     37:
                     38: #define AxBmodPnostrchk(ans,anstype,a,b,p,pinv) \
                     39:   { double _w_ = ((double)(a))*((double)(b)), _dp_ = (double)(p); \
                     40:       if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
                     41:       ans = (anstype) _w_; }
                     42:
                     43: #define AxBplusCmodPnostrchk(ans,anstype,a,b,c,p,pinv) \
                     44:   { double _w_ = ((double)(a))*((double)(b))+((double)(c)), \
                     45:       _dp_ = (double)(p); \
                     46:       if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
                     47:       ans = (anstype) _w_; }
                     48: #else
                     49:
                     50: #include "inline.h"
                     51:
                     52: typedef unsigned int ModNum;
                     53:
                     54: #define AxBplusCmodP(ans,anstype,a,b,c,p,pinv) \
                     55:   { DMAR(a,b,c,p,ans) }
                     56:
                     57: #define AxBmodP(ans,anstype,a,b,p,pinv) \
                     58:   { DMAR(a,b,0,p,ans) }
                     59:
                     60: #define AxBmodPnostrchk(ans,anstype,a,b,p,pinv) \
                     61:   { DMAR(a,b,0,p,ans) }
                     62:
                     63: #define AxBplusCmodPnostrchk(ans,anstype,a,b,c,p,pinv) \
                     64:   { DMAR(a,b,c,p,ans) }
                     65: #endif
                     66:
                     67: #define AstrictmodP(a,p) ((a)>=(p)?((a)-(p)):(a))
                     68:
                     69: #define AplusBmodP(a,b,p) (((p)-(b))>(a)?((a)+(b)): ((a)-((p)-(b))))
                     70: #define A_BmodP(a,b,p) ((a)>=(b)?((a)-(b)): (((p)-(b))+(a)))
                     71:
                     72: void C_DFT_FORE(ModNum *,int,int,int,ModNum *,
                     73: #ifdef POWA_STRIDE
                     74:        int
                     75: #else
                     76:        ModNum *,int,ModNum,double,ModNum *
                     77: #endif
                     78: );
                     79:
                     80: void C_DFT_BACK(ModNum *,int,int,int,ModNum *,
                     81: #ifdef POWA_STRIDE
                     82:                 int
                     83: #else
                     84:                 ModNum *,int,int,int,ModNum,ModNum,double,ModNum *
                     85: #endif
                     86: );
                     87:
                     88: void C_PREP_ALPHA(ModNum,int,int,int,ModNum *,ModNum,double);

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>