本文整理汇总了C++中NTL_OVERFLOW函数的典型用法代码示例。如果您正苦于以下问题:C++ NTL_OVERFLOW函数的具体用法?C++ NTL_OVERFLOW怎么用?C++ NTL_OVERFLOW使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NTL_OVERFLOW函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: BuildSparseIrred
void BuildSparseIrred(GF2X& f, long n)
{
if (n <= 0) Error("SparseIrred: n <= 0");
if (NTL_OVERFLOW(n, 1, 0))
Error("overflow in BuildSparseIrred");
if (n == 1) {
SetX(f);
return;
}
if (n <= 2048) {
if (GF2X_irred_tab[n][1] == 0) {
clear(f);
SetCoeff(f, n);
SetCoeff(f, GF2X_irred_tab[n][0]);
SetCoeff(f, 0);
}
else {
clear(f);
SetCoeff(f, n);
SetCoeff(f, GF2X_irred_tab[n][0]);
SetCoeff(f, GF2X_irred_tab[n][1]);
SetCoeff(f, GF2X_irred_tab[n][2]);
SetCoeff(f, 0);
}
return;
}
long k3, k2, k1;
k3 = FindTrinom(n);
if (k3) {
clear(f);
SetCoeff(f, n);
SetCoeff(f, k3);
SetCoeff(f, 0);
return;
}
k3 = FindPent(n, k2, k1);
if (k3) {
clear(f);
SetCoeff(f, n);
SetCoeff(f, k3);
SetCoeff(f, k2);
SetCoeff(f, k1);
SetCoeff(f, 0);
return;
}
// the following is probably of only theoretical value...
// it is reasonable to conjecture that for all n >= 2,
// there is either an irreducible trinomial or pentanomial
// of degree n.
BuildIrred(f, n);
}
开发者ID:shayne-fletcher,项目名称:cppf,代码行数:60,代码来源:GF2XFactoring.cpp
示例2: to_mat_ZZ_p_crt_rep
void to_mat_ZZ_p_crt_rep(mat_ZZ_p_crt_rep& X, const mat_ZZ_p& A)
{
long n = A.NumRows();
long m = A.NumCols();
const MatPrime_crt_helper& H = get_MatPrime_crt_helper_info();
long nprimes = H.GetNumPrimes();
if (NTL_OVERFLOW(nprimes, CRT_BLK, 0))
ResourceError("overflow"); // this is pretty academic
X.rep.SetLength(nprimes);
for (long k = 0; k < nprimes; k++) X.rep[k].SetDims(n, m);
ZZ_pContext context;
context.save();
bool seq = (double(n)*double(m)*H.GetCost() < PAR_THRESH);
// FIXME: right now, we just partition the rows, but if
// #cols > #rows, we should perhaps partition the cols
NTL_GEXEC_RANGE(seq, n, first, last)
NTL_IMPORT(n)
NTL_IMPORT(m)
NTL_IMPORT(nprimes)
context.restore();
MatPrime_crt_helper_scratch scratch;
Vec<MatPrime_residue_t> remainders_store;
remainders_store.SetLength(nprimes*CRT_BLK);
MatPrime_residue_t *remainders = remainders_store.elts();
for (long i = first; i < last; i++) {
const ZZ_p *a = A[i].elts();
long jj = 0;
for (; jj <= m-CRT_BLK; jj += CRT_BLK) {
for (long j = 0; j < CRT_BLK; j++)
reduce(H, rep(a[jj+j]), remainders + j*nprimes, scratch);
for (long k = 0; k < nprimes; k++) {
MatPrime_residue_t *x = X.rep[k][i].elts();
for (long j = 0; j < CRT_BLK; j++)
x[jj+j] = remainders[j*nprimes+k];
}
}
if (jj < m) {
for (long j = 0; j < m-jj; j++)
reduce(H, rep(a[jj+j]), remainders + j*nprimes, scratch);
for (long k = 0; k < nprimes; k++) {
MatPrime_residue_t *x = X.rep[k][i].elts();
for (long j = 0; j < m-jj; j++)
x[jj+j] = remainders[j*nprimes+k];
}
}
}
NTL_GEXEC_RANGE_END
}
开发者ID:tell,项目名称:ntl-unix,代码行数:60,代码来源:mat_ZZ_p.cpp
示例3: BuildIrred
void BuildIrred(GF2X& f, long n)
{
if (n <= 0)
Error("BuildIrred: n must be positive");
if (NTL_OVERFLOW(n, 1, 0)) Error("overflow in BuildIrred");
if (n == 1) {
SetX(f);
return;
}
GF2X g;
_ntl_ulong i;
i = 0;
do {
ConvertBits(g, 2*i+1);
SetCoeff(g, n);
i++;
} while (!IterIrredTest(g));
f = g;
}
开发者ID:shayne-fletcher,项目名称:cppf,代码行数:26,代码来源:GF2XFactoring.cpp
示例4: InnerProduct
void InnerProduct(zz_p& x, const vec_zz_p& a, const vec_zz_p& b,
long offset)
{
if (offset < 0) LogicError("InnerProduct: negative offset");
if (NTL_OVERFLOW(offset, 1, 0)) ResourceError("InnerProduct: offset too big");
long n = min(a.length(), b.length()+offset);
long i;
long accum, t;
long p = zz_p::modulus();
mulmod_t pinv = zz_p::ModulusInverse();
const zz_p *ap = a.elts();
const zz_p *bp = b.elts();
accum = 0;
for (i = offset; i < n; i++) {
t = MulMod(rep(ap[i]), rep(bp[i-offset]), p, pinv);
accum = AddMod(accum, t, p);
}
x.LoopHole() = accum;
}
开发者ID:tell,项目名称:ntl-unix,代码行数:25,代码来源:vec_lzz_p.cpp
示例5: LeftShift
void LeftShift(zz_pX& x, const zz_pX& a, long n)
{
if (IsZero(a)) {
clear(x);
return;
}
if (n < 0) {
if (n < -NTL_MAX_LONG)
clear(x);
else
RightShift(x, a, -n);
return;
}
if (NTL_OVERFLOW(n, 1, 0))
Error("overflow in LeftShift");
long m = a.rep.length();
x.rep.SetLength(m+n);
long i;
for (i = m-1; i >= 0; i--)
x.rep[i+n] = a.rep[i];
for (i = 0; i < n; i++)
clear(x.rep[i]);
}
开发者ID:av-elier,项目名称:fast-exponentiation-algs,代码行数:29,代码来源:lzz_pX1.c
示例6: ProjectPowers
void ProjectPowers(vec_zz_p& x, const vec_zz_p& a, long k,
const zz_pXArgument& H, const zz_pXModulus& F)
{
long n = F.n;
if (a.length() > n || k < 0 || NTL_OVERFLOW(k, 1, 0))
Error("ProjectPowers: bad args");
long m = H.H.length()-1;
long l = (k+m-1)/m - 1;
zz_pXMultiplier M;
build(M, H.H[m], F);
vec_zz_p s(INIT_SIZE, n);
s = a;
StripZeroes(s);
x.SetLength(k);
for (long i = 0; i <= l; i++) {
long m1 = min(m, k-i*m);
zz_p* w = &x[i*m];
for (long j = 0; j < m1; j++)
InnerProduct(w[j], H.H[j].rep, s);
if (i < l)
UpdateMap(s, s, M, F);
}
}
开发者ID:av-elier,项目名称:fast-exponentiation-algs,代码行数:30,代码来源:lzz_pX1.c
示例7: ResourceError
void GF2X::SetMaxLength(long n)
{
if (n < 0) LogicError("GF2X::SetMaxLength: negative length");
if (NTL_OVERFLOW(n, 1, 0))
ResourceError("GF2X::SetMaxLength: excessive length");
long w = (n + NTL_BITS_PER_LONG - 1)/NTL_BITS_PER_LONG;
xrep.SetMaxLength(w);
}
开发者ID:tell,项目名称:ntl-unix,代码行数:8,代码来源:GF2X.cpp
示例8: SetOutputPrecision
void xdouble::SetOutputPrecision(long p)
{
if (p < 1) p = 1;
if (NTL_OVERFLOW(p, 1, 0))
ResourceError("xdouble: output precision too big");
oprec = p;
}
开发者ID:kenjinote,项目名称:NTLSample,代码行数:9,代码来源:xdouble.cpp
示例9: SetOutputPrecision
void quad_float::SetOutputPrecision(long p)
{
if (p < 1) p = 1;
if (NTL_OVERFLOW(p, 1, 0))
ResourceError("quad_float: output precision too big");
oprec = p;
}
开发者ID:tell,项目名称:ntl-unix,代码行数:9,代码来源:quad_float.cpp
示例10: InvPrec
void InvPrec(RR& x, const RR& a, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("InvPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
inv(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例11: DivPrec
void DivPrec(RR& x, const RR& a, const RR& b, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("DivPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
div(x, a, b);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例12: NegatePrec
void NegatePrec(RR& x, const RR& a, const RR& b, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("NegatePrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
negate(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例13: ConvPrec
void ConvPrec(RR& x, const char *s, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("ConvPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
conv(x, s);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例14: SqrRootPrec
void SqrRootPrec(RR& x, const RR& a, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("SqrRootPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
SqrRoot(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例15: TruncPrec
void TruncPrec(RR& x, const RR& a, const RR& b, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("TruncPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
trunc(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例16: RoundPrec
void RoundPrec(RR& x, const RR& a, const RR& b, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("RoundPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
round(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例17: CeilPrec
void CeilPrec(RR& x, const RR& a, const RR& b, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("CeilPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
ceil(x, a);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例18: MakeRRPrec
void MakeRRPrec(RR& x, const ZZ& a, long e, long p)
{
if (p < 1 || NTL_OVERFLOW(p, 1, 0))
Error("MakeRRPrec: bad precsion");
long old_p = RR::prec;
RR::prec = p;
MakeRR(x, a, e);
RR::prec = old_p;
}
开发者ID:Macaulay2,项目名称:Singular,代码行数:10,代码来源:RR.c
示例19: SetOutputPrecision
void RR::SetOutputPrecision(long p)
{
if (p < 1)
p = 1;
if (NTL_OVERFLOW(p, 1, 0))
ResourceError("RR: output precision too high");
oprec = p;
}
开发者ID:95krasovsky,项目名称:SecretSharingSchemes,代码行数:10,代码来源:RR.c
示例20: SetPrecision
void RR::SetPrecision(long p)
{
if (p < 53)
p = 53;
if (NTL_OVERFLOW(p, 1, 0))
ResourceError("RR: precision too high");
prec = p;
}
开发者ID:95krasovsky,项目名称:SecretSharingSchemes,代码行数:10,代码来源:RR.c
注:本文中的NTL_OVERFLOW函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论