71 # include <vcl_msvc_warnings.h> 73 #include "vnl/vnl_export.h" 162 operator short()
const;
163 operator int()
const;
164 operator long()
const;
165 operator float()
const;
166 operator double()
const;
167 operator long double()
const;
168 inline operator short() {
return ((
const vnl_bignum*)
this)->operator short(); }
169 inline operator int() {
return ((
const vnl_bignum*)
this)->operator int(); }
170 inline operator long() {
return ((
const vnl_bignum*)
this)->operator long(); }
171 inline operator float() {
return ((
const vnl_bignum*)
this)->operator float(); }
172 inline operator double() {
return ((
const vnl_bignum*)
this)->operator double(); }
173 inline operator long double() {
return ((
const vnl_bignum*)
this)->operator
long double(); }
218 inline bool operator==(
double r)
const {
return r == this->
operator double(); }
219 inline bool operator!=(
double r)
const {
return r != this->
operator double(); }
220 inline bool operator< (
double r)
const {
return r > this->
operator double(); }
221 inline bool operator> (
double r)
const {
return r < this->
operator double(); }
222 inline bool operator<=(
double r)
const {
return r >= this->
operator double(); }
223 inline bool operator>=(
double r)
const {
return r <= this->
operator double(); }
224 inline bool operator==(
long double r)
const {
return r == this->
operator long double(); }
225 inline bool operator!=(
long double r)
const {
return r != this->
operator long double(); }
226 inline bool operator< (
long double r)
const {
return r > this->
operator long double(); }
227 inline bool operator> (
long double r)
const {
return r < this->
operator long double(); }
228 inline bool operator<=(
long double r)
const {
return r >= this->
operator long double(); }
229 inline bool operator>=(
long double r)
const {
return r <= this->
operator long double(); }
234 inline bool is_infinity()
const {
return count==1 && data && data[0]==0; }
238 void dump(std::ostream& = std::cout)
const;
259 void xtoBigNum(
const char *s);
260 int dtoBigNum(
const char *s);
261 void otoBigNum(
const char *s);
262 void exptoBigNum(
const char *s);
314 vnl_bignum result(r1);
return result *= (long)r2;
334 vnl_bignum result(r1);
return result *= (long)r2;
361 vnl_bignum result(r1);
return result /= (long)r2;
381 vnl_bignum result((
long)r1);
return result /= r2;
418 vnl_bignum result((
long)r1);
return result %= r2;
439 #endif // vnl_bignum_h_ VNL_EXPORT vnl_bignum left_shift(const vnl_bignum &b1, int l)
left shift (arithmetic) non-infinite vnl_bignum by positive number.
bool operator>=(int r) const
vnl_bignum operator+(vnl_bignum const &r1, long r2)
Returns the sum of two bignum numbers.
bool operator<=(double r) const
bool operator==(long r) const
bool operator>(long r1, vnl_bignum const &r2)
bool operator<=(int r) const
bool operator!=(long double r) const
bool operator<=(vnl_bignum const &r) const
bool operator!=(int r) const
VNL_EXPORT vnl_bignum right_shift(const vnl_bignum &b1, int l)
right shift (arithmetic) non-infinite vnl_bignum by positive number.
vnl_bignum & operator-=(vnl_bignum const &r)
VNL_EXPORT void divide_aux(const vnl_bignum &, unsigned short, vnl_bignum &, unsigned short &)
divide a vnl_bignum by a "single digit".
bool operator>=(long r) const
VNL_EXPORT void subtract(const vnl_bignum &, const vnl_bignum &, vnl_bignum &)
subtract bmin from bmax (unsigned, non-infinite), result in diff.
VNL_EXPORT vnl_bignum & vnl_bignum_from_string(vnl_bignum &b, const std::string &s)
Convert the number from a decimal representation in a string.
real numerical constants.
VNL_EXPORT void multiply_aux(const vnl_bignum &, unsigned short d, vnl_bignum &, unsigned short i)
multiply a non-infinite vnl_bignum by a "single digit".
bool operator==(long double r) const
bool operator<=(long r1, vnl_bignum const &r2)
vnl_bignum squared_magnitude(vnl_bignum const &x)
VNL_EXPORT unsigned short normalize(const vnl_bignum &, const vnl_bignum &, vnl_bignum &, vnl_bignum &)
normalize two vnl_bignums.
vnl_bignum & operator<<=(int l)
std::ostream & operator<<(std::ostream &s, vnl_decnum const &r)
decimal output.
Infinite precision integers.
bool operator==(long r1, vnl_bignum const &r2)
bool operator!=(vnl_bignum const &r) const
bool is_plus_infinity() const
bool operator==(double r) const
bool isnan(vnl_bignum const &)
bool operator<=(long r) const
vnl_bignum operator+() const
bool operator==(int r) const
bool operator==(int r1, vnl_finite_int< N > const &r2)
VNL_EXPORT std::istream & operator>>(std::istream &s, vnl_bignum &r)
simple input.
VNL_EXPORT void increment(vnl_bignum &bnum)
Add 1 to bnum (unsigned, non-infinite).
VNL_EXPORT unsigned short estimate_q_hat(const vnl_bignum &, const vnl_bignum &, unsigned short)
estimate next dividend.
VNL_EXPORT void add(const vnl_bignum &, const vnl_bignum &, vnl_bignum &)
add two non-infinite vnl_bignum values and save their sum.
bool operator>=(vnl_bignum const &r) const
vnl_bignum & operator>>=(int l)
vnl_bignum operator-(vnl_bignum const &r1, vnl_bignum const &r2)
Returns the difference of two bignum numbers.
bool operator>=(long r1, vnl_bignum const &r2)
bool isfinite(vnl_bignum const &x)
vnl_bignum & operator+=(vnl_bignum const &r)
vnl_bignum operator%(vnl_bignum const &r1, vnl_bignum const &r2)
Returns the remainder of r1 divided by r2.
VNL_EXPORT void divide(const vnl_bignum &, const vnl_bignum &, vnl_bignum &, vnl_bignum &)
divide b2 into b1, getting quotient q and remainder r.
bool operator!=(double r) const
bool operator<=(long double r) const
vnl_bignum abs(vnl_bignum const &x)
vnl_bignum operator+(vnl_bignum const &r1, long r2)
Returns the sum of two bignum numbers.
bool operator>=(long double r) const
VNL_EXPORT std::istream & operator>>(std::istream &s, vnl_decnum &r)
decimal input.
vnl_bignum operator-(vnl_bignum const &r1, vnl_bignum const &r2)
Returns the difference of two bignum numbers.
bool operator!=(int r1, vnl_finite_int< N > const &r2)
vnl_bignum operator++(int)
postfix increment (b++).
VNL_EXPORT std::string & vnl_bignum_to_string(std::string &s, const vnl_bignum &b)
Convert the number to a decimal representation in a string.
bool operator!=(long r) const
VNL_EXPORT void decrement(vnl_bignum &bnum)
Subtract 1 from bnum (unsigned, non-infinite, non-zero).
bool operator<(long r) const
bool operator<(long r1, vnl_bignum const &r2)
VNL_EXPORT std::ostream & operator<<(std::ostream &s, vnl_bignum const &r)
formatted output.
bool operator>=(double r) const
vnl_bignum operator/(vnl_bignum const &r1, vnl_bignum const &r2)
Returns the division of two bignum numbers.
vnl_bignum operator--(int)
decrement.
vnl_bignum operator *(vnl_bignum const &r1, vnl_bignum const &r2)
Returns the product of two bignum numbers.
vnl_bignum sqr(vnl_bignum const &x)
VNL_EXPORT int magnitude_cmp(const vnl_bignum &, const vnl_bignum &)
compare absolute values of two vnl_bignums.
VNL_EXPORT unsigned short multiply_subtract(vnl_bignum &, const vnl_bignum &, unsigned short, unsigned short)
calculate u - v*q_hat.
VNL_EXPORT bool operator<(vnl_vector< T > const &lhs, vnl_vector< T > const &rhs)
Define a complete ordering on vnl_vector.
bool operator<(int r) const
bool is_minus_infinity() const