unsigned short tmp[SHORT_PER_LONG];
unsigned long u;
int newsgn;
- if (newsgn = (y >= 0))
+ newsgn = (y >= 0);
+ if (newsgn != 0)
u = y;
else
u = -y;
char* f = cvtItoa(x, fmtbase, fmtlen, base, showbase, width, align_right,
fillchar, Xcase, showpos);
s.write(f, fmtlen);
- delete fmtbase;
+ delete[] fmtbase;
}
char* cvtItoa(const IntRep* x, char* fmt, int& fmtlen, int base, int showbase,
operator long() const;
operator double() const;
- friend char* Itoa(const Integer& x, int base = 10, int width = 0);
- friend Integer atoI(const char* s, int base = 10);
+ friend char* Itoa(const Integer& x, int base = 10, int width = 0)
+ {
+ return Itoa(x.rep, base, width);
+ }
+
+ friend Integer atoI(const char* s, int base = 10)
+ {
+ Integer r; r.rep = atoIntRep(s, base); return r;
+ }
+
void printon(std::ostream& s, int base = 10, int width = 0) const;
friend std::istream& operator >> (std::istream& s, Integer& y);
return y.rep->len > 0 && (y.rep->s[0] & 1);
}
-inline char* Itoa(const Integer& y, int base, int width)
-{
- return Itoa(y.rep, base, width);
-}
-
inline long lg(const Integer& x)
Integer r; complement(x, r); return r;
}
-inline Integer atoI(const char* s, int base)
-{
- Integer r; r.rep = atoIntRep(s, base); return r;
-}
inline Integer gcd(const Integer& x, const Integer& y)
{
result = sqrt(fact30);
std::cout << "sqrt(fact30) = " << result << "\n";
- Integer negfact31 = fact30 * -31;
+ Integer negfact31 = fact30 * long(-31);
Integer posfact31 = abs(negfact31);
assert(negfact31.OK());
assert(posfact31.OK());
Integer b, e, m;
m = 1; m <<= 32;
- b = m + 1;
+ b = m + long(1);
e = Ipow( 2, 32 );
b = Ipow( 2, 32 ); // use b as a comparison
std::cout << "2^32 = " << e << "\n";
- e %= (e-1); // do same op two ways...
- b = b % (b - 1);
+ e %= (e-long(1)); // do same op two ways...
+ b = b % (b - long(1));
std::cout << "2^32 % (2^32-1) = " << e << "\n"; // e is incorrect here
std::cout << "2^32 % (2^32-1) = " << b << "\n"; // but b is ok