本文整理汇总了C++中base::is_zero方法的典型用法代码示例。如果您正苦于以下问题:C++ base::is_zero方法的具体用法?C++ base::is_zero怎么用?C++ base::is_zero使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类base
的用法示例。
在下文中一共展示了base::is_zero方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: extended_gcd
void base::extended_gcd(base &n, base &u, base &v, base &g, INT verbose_level)
{
INT f_v = (verbose_level >= 1);
//INT f_vv = (verbose_level >= 2);
base sign1, sign2;
INT c;
if (f_v) {
cout << "base::extended_gcd() m=" << *this << " n=" << n << endl;
}
c = compare_with_euklidean(n);
if (c < 0) {
n.extended_gcd(*this, v, u, g, verbose_level);
return;
}
if (f_v) {
cout << "base::extended_gcd() m=" << *this << "(" << kind_ascii(s_kind()) << ")"
<< "n=" << n << "(" << kind_ascii(n.s_kind()) << ")" << endl;
}
u = *this;
v = n;
if (/* c == 0 ||*/ n.is_zero()) {
u.one();
v.zero();
g = *this;
return;
}
if (s_kind() == INTEGER) {
INT a;
a = s_i_i();
if (a < 0) {
sign1.m_i_i(-1);
m_i_i(-a);
}
else
sign1.m_i_i(1);
a = n.s_i_i();
if (a < 0) {
sign2.m_i_i(-1);
n.m_i_i(-a);
}
else
sign2.m_i_i(1);
}
base M, N, Q, R;
base u1, u2, u3, v1, v2, v3;
M = *this;
N = n;
u1 = *this; u1.one();
u2 = *this; u2.zero();
v1 = n; v1.zero();
v2 = n; v2.one();
while (TRUE) {
if (f_v) {
cout << "loop:" << endl;
cout << "M=" << M << "(" << kind_ascii(M.s_kind()) << ") N="
<< N << "(" << kind_ascii(N.s_kind()) << ")" << endl;
cout << "before integral_division" << endl;
}
M.integral_division(N, Q, R, verbose_level);
if (f_v) {
cout << "after integral_division" << endl;
cout << "Q=" << Q << " R=" << R << endl;
}
if (R.is_zero()) {
break;
}
// u3 := u1 - Q * u2
u3 = u2;
u3 *= Q;
u3.negate();
u3 += u1;
// v3 := v1 - Q * v2
v3 = v2;
v3 *= Q;
v3.negate();
v3 += v1;
M = N;
N = R;
u1 = u2;
u2 = u3;
v1 = v2;
v2 = v3;
}
u = u2;
v = v2;
g = N;
if (s_kind() == INTEGER) {
// cout << "sign1=" << sign1 << endl;
// cout << "sign2=" << sign2 << endl;
INT a;
//.........这里部分代码省略.........