20 std::ostream& operator << (std::ostream& os, const Scl<MPQ>& b);
37 {mpq_init(&data);mpq_set_si(&data,sl,1);}
41 {mpq_init(&data);mpq_set_ui(&data,ul,1);}
45 {mpq_init(&data);mpq_set_si(&data,si,1);}
51 mpz_init_set_str(&tmp,
string, base);
53 mpq_set_z(&data,&tmp);
60 mpz_init_set(&data._mp_num, &rhs.
data._mp_num);
61 mpz_init_set(&data._mp_den, &rhs.
data._mp_den);
69 mpq_set_d(&data, rhs);
79 mpq_set(&data, &rhs.
data);
86 return mpq_cmp(&data, &rhs.
data) == 0;
92 return mpq_cmp_ui(&data, sl, 1) == 0;
98 return mpq_cmp_ui(&data, (
long) si, 1) == 0;
104 return mpq_cmp_ui(&data, ul, 1) == 0;
111 return mpq_cmp(&data, &rhs.
data) != 0;
117 return mpq_cmp_ui(&data, sl,1) != 0;
123 return mpq_cmp_ui(&data, (
long) si,1) != 0;
129 return mpq_cmp_ui(&data, ul,1) != 0;
135 return mpq_cmp(&data, &rhs.
data) > 0;
141 return mpq_cmp_ui(&data, sl, 1) > 0;
147 return mpq_cmp_ui(&data, (
long) si, 1) > 0;
153 return mpq_cmp_ui(&data, ul,1) > 0;
159 return mpq_cmp(&data, &rhs.
data) >= 0;
165 return mpq_cmp_ui(&data, sl, 1) >= 0;
172 return mpq_cmp_ui(&data, (
long) si, 1) >= 0;
178 return mpq_cmp_ui(&data, ul, 1) >= 0;
185 return mpq_cmp(&data, &rhs.
data) < 0;
190 return mpq_cmp_ui(&data, sl, 1) < 0;
197 return mpq_cmp_ui(&data, (
long) si, 1) < 0;
204 return mpq_cmp_ui(&data, ul, 1) < 0;
212 return mpq_cmp(&data, &rhs.
data) <= 0;
218 return mpq_cmp_ui(&data, sl,1) <= 0;
225 return mpq_cmp_ui(&data, (
long) si, 1) <= 0;
231 return mpq_cmp_ui(&data, ul, 1) <= 0;
238 mpq_set_ui(&data, ul, 1);
return *
this;
244 mpq_set_si(&data, sl, 1);
return *
this;
250 mpq_set_si(&data, ul, 1);
return *
this;
257 mpq_add(&tmp.
data, &data, &rhs.
data);
258 mpq_swap(&tmp.
data,&data);
267 mpq_add(&data, &data, &tmp.
data);
276 mpq_add(&data, &data, &tmp.
data);
294 mpq_sub(&data, &data, &rhs.
data);
303 mpq_sub(&data, &data, &tmp.
data);
312 mpq_sub(&data, &data, &tmp.
data);
335 mpq_mul(&data, &data, &rhs.
data);
344 mpq_mul(&data, &data, &tmp.
data);
352 mpq_mul(&data, &data, &tmp.
data);
361 mpq_mul(&data, &data, &tmp.
data);
370 mpq_div(&data, &data, &rhs.
data);
379 mpq_div(&data, &data, &tmp.
data);
388 mpq_div(&data, &data, &tmp.
data);
461 mpq_add(&data, &data, &tmp.
data);
470 mpq_sub(&data, &data, &tmp.
data);
476 std::ostream& operator << (std::ostream& os, const Scl<MPQ>& b)
478 size_t len_num= mpz_sizeinbase (&b.data._mp_num, 10) + 2;
479 size_t len_den= mpz_sizeinbase (&b.data._mp_den, 10) + 2;
480 size_t tmp_len= len_num > len_den ? len_num : len_den;
481 char* tmp=
new char[tmp_len];
482 tmp= mpz_get_str(tmp,10,&b.data._mp_num);
484 if(mpz_cmp_ui(&b.data._mp_den,1)){
486 tmp=mpz_get_str(tmp, 10, &b.data._mp_den);
495 std::string s;is >> s;
497 mpz_init_set_str(&tmp,s.c_str(), 10);
499 mpq_set_z(&b.
data,&tmp);
506 template<>
inline void
509 if (data._mp_num._mp_size < 0) data._mp_num._mp_size = - data._mp_num._mp_size;
515 data._mp_num._mp_size = - data._mp_num._mp_size;
return *
this;
526 return mpq_cmp_ui(&b.
data, ul, 1);
532 return mpq_cmp_ui(&b.
data, sl, 1);
553 #endif // //SCL_MPQ_H
bool has_positive_sign(const Scl< MPQ > &x)
Definition: Scl_mpq.hpp:550
Scl< MPQ > operator+(const Scl< MPQ > &a1, const Scl< MPQ > &a2)
Definition: Scl_mpq.hpp:396
Scl< MPQ > operator-(const Scl< MPQ > &a1, const Scl< MPQ > &a2)
Definition: Scl_mpq.hpp:404
T data
Definition: Scl.hpp:34
Scl< MPQ > operator/(const Scl< MPQ > &a1, const Scl< MPQ > &a2)
Definition: Scl_mpq.hpp:420
Scl< MPQ > operator*(const Scl< MPQ > &a1, const Scl< MPQ > &a2)
Definition: Scl_mpq.hpp:412
Scl< T > operator-=(const Scl< T > &rhs)
MSKaccmodee MSKint32t MSKsoltypee MSKstakeye MSKrealt MSKrealt * sl
Definition: mosek.h:3209
Scl< T > operator+=(const Scl< T > &rhs)
bool operator>=(const Scl< T > &rhs) const
MSKaccmodee MSKint32t MSKsoltypee MSKstakeye MSKrealt * x
Definition: mosek.h:3209
Scl< T > operator*=(const Scl< T > &rhs)
bool operator==(const Scl< T > &rhs) const
Scl()
Definition: Scl.hpp:38
std::istream & operator>>(std::istream &is, Scl< MPQ > &b)
Definition: Scl_mpq.hpp:493
bool operator<=(const Scl< T > &rhs) const
Scl< T > operator/=(const Scl< T > &rhs)
Scl< T > operator=(const Scl< T > &rhs)
bool operator>(const Scl< T > &rhs) const
MP_RAT MPQ
Definition: Scl_mpq.hpp:18
~Scl()
Definition: Scl.hpp:49
int compare(const Scl< MPQ > &b1, const Scl< MPQ > &b2)
Definition: Scl_mpq.hpp:519
bool operator!=(const Scl< T > &rhs) const
bool operator<(const Scl< T > &rhs) const