File: [local] / OpenXM_contrib2 / asir2000 / fft / dft.h (download)
Revision 1.1.1.1 (vendor branch), Fri Dec 3 07:39:08 1999 UTC (24 years, 7 months ago) by noro
Branch: NORO
CVS Tags: RELEASE_20000124, RELEASE_1_1_2, ASIR2000 Changes since 1.1: +0 -0
lines
Imported asir2000 as OpenXM_contrib2/asir2000.
|
/* $OpenXM: OpenXM_contrib2/asir2000/fft/dft.h,v 1.1.1.1 1999/12/03 07:39:08 noro Exp $ */
#if LONG_IS_32BIT
#if defined(VISUAL)
typedef unsigned _int64 UL;
#else
typedef unsigned long long UL;
#endif
#else
typedef unsigned long UL;
#endif
struct PrimesS {
int prime, primroot;
int bitwid, d;
};
#if USE_FLOAT
#define NPrimes 536
#else
#define NPrimes 13681
#endif
#if USE_FLOAT
typedef float ModNum;
#define AxBplusCmodP(ans,anstype,a,b,c,p,pinv) \
{ double _w_ = ((double)(a))*((double)(b))+((double)(c)), \
_dp_ = (double)(p); \
if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
ans = (anstype) (_w_>=_dp_?_w_-_dp_: _w_); }
#define AxBmodP(ans,anstype,a,b,p,pinv) \
{ double _w_ = ((double)(a))*((double)(b)), _dp_ = (double)(p); \
_dp_ = (double)(p); \
if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
ans = (anstype) (_w_>=_dp_?_w_-_dp_: _w_); }
#define AxBmodPnostrchk(ans,anstype,a,b,p,pinv) \
{ double _w_ = ((double)(a))*((double)(b)), _dp_ = (double)(p); \
if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
ans = (anstype) _w_; }
#define AxBplusCmodPnostrchk(ans,anstype,a,b,c,p,pinv) \
{ double _w_ = ((double)(a))*((double)(b))+((double)(c)), \
_dp_ = (double)(p); \
if ( _w_ >= _dp_ ) _w_ -= (_dp_*(double)((int)(_w_*(pinv)))); \
ans = (anstype) _w_; }
#else
#include "inline.h"
typedef unsigned int ModNum;
#define AxBplusCmodP(ans,anstype,a,b,c,p,pinv) \
{ DMAR(a,b,c,p,ans) }
#define AxBmodP(ans,anstype,a,b,p,pinv) \
{ DMAR(a,b,0,p,ans) }
#define AxBmodPnostrchk(ans,anstype,a,b,p,pinv) \
{ DMAR(a,b,0,p,ans) }
#define AxBplusCmodPnostrchk(ans,anstype,a,b,c,p,pinv) \
{ DMAR(a,b,c,p,ans) }
#endif
#define AstrictmodP(a,p) ((a)>=(p)?((a)-(p)):(a))
#define AplusBmodP(a,b,p) (((p)-(b))>(a)?((a)+(b)): ((a)-((p)-(b))))
#define A_BmodP(a,b,p) ((a)>=(b)?((a)-(b)): (((p)-(b))+(a)))
void C_DFT_FORE(ModNum *,int,int,int,ModNum *,
#ifdef POWA_STRIDE
int
#else
ModNum *,int,ModNum,double,ModNum *
#endif
);
void C_DFT_BACK(ModNum *,int,int,int,ModNum *,
#ifdef POWA_STRIDE
int
#else
ModNum *,int,int,int,ModNum,ModNum,double,ModNum *
#endif
);
void C_PREP_ALPHA(ModNum,int,int,int,ModNum *,ModNum,double);