// multiplication, multiplication by the Nth root and unity and division
// by N. Hence we can use the domain Z/(p^m Z) even if p is not a prime!
-// We use the Schönhage-Strassen choice of the modulus: p = 2^R+1. This
+// We use the Schönhage-Strassen choice of the modulus: p = 2^R+1. This
// has two big advantages: Multiplication and division by 2 (which is a
// (2R)th root of unity) or a power of 2 is just a shift and an subtraction.
// And multiplication mod p is just a normal multiplication, followed by
var uintC zerodigits = chlen - zchlen;
for (i = 0; i < M; i++)
if (DS_test_loop(Z(i) lspop chlen,zerodigits,Z(i) lspop zchlen))
- cl_abort();
+ throw runtime_exception();
}
#endif
// Put together result.
if (zchlen <= destlen) {
if (addto_loop_lsp(Z(i),destptr,zchlen))
if (inc_loop_lsp(destptr lspop zchlen,destlen-zchlen))
- cl_abort();
+ throw runtime_exception();
} else {
#ifdef DEBUG_FFTM
if (DS_test_loop(Z(i) lspop zchlen,zchlen-destlen,Z(i) lspop destlen))
- cl_abort();
+ throw runtime_exception();
#endif
if (addto_loop_lsp(Z(i),destptr,destlen))
- cl_abort();
+ throw runtime_exception();
}
if (destlen <= k) {
i++;
#ifdef DEBUG_FFTM
// Check that Z(i)..Z(M-1) are all zero.
if (test_loop_up(&arrZ[chlen*i],chlen*(M-i)))
- cl_abort();
+ throw runtime_exception();
#endif
#undef diff
#undef sum
var uintC piecelen2 = (M+1-ceiling(len1,k))*k;
#ifdef DEBUG_FFTM
if ((sintC)piecelen2 <= 0)
- cl_abort();
+ throw runtime_exception();
#endif
return ceiling(len2,piecelen2);
}
}
#ifdef DEBUG_FFTM
if (!(m > 0 && m <= r+1 && okfor(r,m,len1,len1)))
- cl_abort();
+ throw runtime_exception();
#endif
if (okfor(r,m,len1,len2)) {
if ((m <= r) && (r > log2_intDsize+2) && okfor(r-1,m,len1,ceiling(len2,2)))
}
if (addto_loop_lsp(tmpptr,destptr,destlenp))
if (inc_loop_lsp(destptr lspop destlenp,destlen-destlenp))
- cl_abort();
+ throw runtime_exception();
// Decrement len2.
destptr = destptr lspop len2p;
destlen -= len2p;