version 1.4, 2015/08/08 14:19:42 |
version 1.6, 2018/03/29 01:32:53 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/fft/polmul.c,v 1.3 2000/08/22 05:04:13 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/fft/polmul.c,v 1.5 2015/08/14 13:51:55 fujimoto Exp $ |
*/ |
*/ |
#include "dft.h" |
#include "dft.h" |
extern struct PrimesS Primes[]; |
extern struct PrimesS Primes[]; |
|
|
dft1 = wk, dft2 = &wk[n]; |
dft1 = wk, dft2 = &wk[n]; |
dftprod = &dft2[n]; |
dftprod = &dft2[n]; |
powa = &dftprod[n]; |
powa = &dftprod[n]; |
true_wk = &powa[halfn]; /* 2*n areas */ |
true_wk = &powa[halfn]; /* 2*n areas */ |
/**/ |
/**/ |
C_PREP_ALPHA( a, low0s, log2n, halfn -1, powa, P, Pinv ); |
C_PREP_ALPHA( a, low0s, log2n, halfn -1, powa, P, Pinv ); |
#ifdef TIMING |
#ifdef TIMING |
|
|
dft1 = wk, dft2 = &wk[n]; |
dft1 = wk, dft2 = &wk[n]; |
dftprod = &dft2[n]; |
dftprod = &dft2[n]; |
powa = &dftprod[n]; |
powa = &dftprod[n]; |
true_wk = &powa[halfn]; /* 2*n areas */ |
true_wk = &powa[halfn]; /* 2*n areas */ |
/**/ |
/**/ |
C_PREP_ALPHA( a, low0s, log2n, halfn -1, powa, P, Pinv ); |
C_PREP_ALPHA( a, low0s, log2n, halfn -1, powa, P, Pinv ); |
#ifdef TIMING |
#ifdef TIMING |
|
|
d = (d1 = atoi( av[0] )) + (d2 = atoi( av[1] )); |
d = (d1 = atoi( av[0] )) + (d2 = atoi( av[1] )); |
if ( d1 <= 0 || d2 <= 0 || d >= MaxNPnts ) { |
if ( d1 <= 0 || d2 <= 0 || d >= MaxNPnts ) { |
fprintf( stderr, "*** invalid degrees %s & %s. (sum < %d)\n", |
fprintf( stderr, "*** invalid degrees %s & %s. (sum < %d)\n", |
av[0], av[1], MaxNPnts ); |
av[0], av[1], MaxNPnts ); |
continue; |
continue; |
} |
} |
generate_pol( d1, Pol1 ); |
generate_pol( d1, Pol1 ); |
Line 350 fprintf( stderr, "mul by classical alg. done ( %d time |
|
Line 350 fprintf( stderr, "mul by classical alg. done ( %d time |
|
fprintf( stderr, "\nClassical mult: " ); Pr_timing( 10 ); |
fprintf( stderr, "\nClassical mult: " ); Pr_timing( 10 ); |
fprintf( stderr, "\n" ); |
fprintf( stderr, "\n" ); |
#endif /* TIMING */ |
#endif /* TIMING */ |
#if defined(__MINGW32__) || defined(__MINGW64__) |
|
fflush(stderr); |
|
#endif |
|
} |
} |
} |
} |
|
|
|
|
for ( j = 1; j < 5 && i + j < n; j++ ) printf( ",%10d", (int)v1[i+j] ); |
for ( j = 1; j < 5 && i + j < n; j++ ) printf( ",%10d", (int)v1[i+j] ); |
printf( "\n" ); |
printf( "\n" ); |
if ( (int)v1[i] == (int)v2[i] && (int)v1[i+1] == (int)v2[i+1] |
if ( (int)v1[i] == (int)v2[i] && (int)v1[i+1] == (int)v2[i+1] |
&& (int)v1[i+2] == (int)v2[i+2] && (int)v1[i+3] == (int)v2[i+3] |
&& (int)v1[i+2] == (int)v2[i+2] && (int)v1[i+3] == (int)v2[i+3] |
&& (int)v1[i+4] == (int)v2[i+4] ) continue; |
&& (int)v1[i+4] == (int)v2[i+4] ) continue; |
printf( " " ); |
printf( " " ); |
for ( j = 0; j < 5 && i + j < n; j++ ) |
for ( j = 0; j < 5 && i + j < n; j++ ) |
if ( (int)v1[i+j] == (int)v2[i+j] ) printf( " " ); |
if ( (int)v1[i+j] == (int)v2[i+j] ) printf( " " ); |