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>