Annotation of OpenXM_contrib2/asir2000/fft/dft.h, Revision 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>