numerix_doc 0.4
rational Class Reference

#include <rational.hpp>

List of all members.

Public Member Functions

Friends


Detailed Description

Examples:

rational_test.cpp.

Definition at line 36 of file rational.hpp.


Constructor & Destructor Documentation

rational ( ) [inline]

Definition at line 44 of file rational.hpp.

: rep (new rational_rep ()) {}
rational ( signed int  i) [inline]

Definition at line 45 of file rational.hpp.

                                : rep (new rational_rep ()) {
    mpq_set_si (rep->x, i, 1); }
rational ( unsigned int  i) [inline]

Definition at line 47 of file rational.hpp.

                                  :
    rep (new rational_rep ()) { mpq_set_ui (rep->x, i, 1); }
rational ( signed short int  i) [inline]

Definition at line 49 of file rational.hpp.

                                      :
    rep (new rational_rep ()) { mpq_set_si (rep->x, i, 1); }
rational ( unsigned short int  i) [inline]

Definition at line 51 of file rational.hpp.

                                        :
    rep (new rational_rep ()) { mpq_set_ui (rep->x, i, 1); }
rational ( signed long int  i) [inline]

Definition at line 53 of file rational.hpp.

                                     :
    rep (new rational_rep ()) { mpq_set_si (rep->x, i, 1); }
rational ( unsigned long int  i) [inline]

Definition at line 55 of file rational.hpp.

                                       :
    rep (new rational_rep ()) { mpq_set_ui (rep->x, i, 1); }
rational ( const integer i) [inline]

Definition at line 57 of file rational.hpp.

                                    :
    rep (new rational_rep ()) { mpq_set_z (rep->x, *i); }
rational ( const double &  d) [inline]

Definition at line 59 of file rational.hpp.

                                   :
    rep (new rational_rep ()) { mpq_set_d (rep->x, d); }
rational ( char *const &  c) [inline]

Definition at line 62 of file rational.hpp.

                                    :
    rep (new rational_rep ()) { mpq_set_str (rep->x, c, 10); }

Friends And Related Function Documentation

rational abs ( const rational x1) [friend]

Definition at line 95 of file rational.hpp.

                                                  {
    rational r; mpq_abs (*r, *x1); return r; }
void add ( rational r,
const rational x1,
const rational x2 
) [friend]

Definition at line 120 of file rational.hpp.

                                                            {
    r.secure (); mpq_add (*r, *x1, *x2); }
double as_double ( const rational q) [friend]

Definition at line 202 of file rational.hpp.

{return mpq_get_d(*q);}
floating<V> as_floating ( const rational x) [friend]

Definition at line 237 of file floating.hpp.

                                {
  floating<V> r;
  mpfr_set_q (*r, *x, V::rnd());
  return r;
}
rational ceil ( const rational x1) [friend]

Definition at line 158 of file rational.hpp.

                                                   {
    return quo (numerator (x1) + denominator (x1) - 1, denominator (x1)); }
rational copy ( const rational x1) [friend]

Definition at line 72 of file rational.hpp.

                                                   {
    rational r; mpq_set (*r, *x1); return r; }
integer denominator ( const rational x1) [friend]

Definition at line 68 of file rational.hpp.

                                                         {
    integer r; mpq_get_den (*r, *x1); return r; }
void div ( rational r,
const rational x1,
const rational x2 
) [friend]

Definition at line 129 of file rational.hpp.

                                                            {
    ASSERT (mpq_sgn (*x2) != 0, "division by zero");
    r.secure (); mpq_div (*r, *x1, *x2); }
bool divides ( const rational x1,
const rational x2 
) [friend]

Definition at line 87 of file rational.hpp.

                                                                      {
    return mpq_sgn (*x1) != 0; }
friend class floating [friend]

Definition at line 200 of file rational.hpp.

rational floor ( const rational x1) [friend]

Definition at line 154 of file rational.hpp.

                                                    {
    return quo (numerator (x1), denominator (x1)); }
nat hash ( const rational x) [friend]

Definition at line 190 of file rational.hpp.

                                             {
    const __mpq_struct &rep= (*x)[0];
    if (rep._mp_num._mp_size == 0) return 0;
    return
      ((nat) (rep._mp_num._mp_d[0])) ^
      ((nat) (rep._mp_num._mp_size << 3)) ^
      ((nat) (rep._mp_den._mp_d[0] << 7)) ^
      ((nat) (rep._mp_den._mp_size << 11));
  }
rational invert ( const rational x) [friend]

Definition at line 89 of file rational.hpp.

                                                    {
    return rational (1) / x; }
bool is_square ( const rational a) [friend]

Definition at line 164 of file rational.hpp.

                                                   {
    return mpz_perfect_square_p (mpq_numref (*a)) &&
           mpz_perfect_square_p (mpq_denref (*a)); }
rational max ( const rational x1,
const rational x2 
) [friend]

Definition at line 150 of file rational.hpp.

                                                                      {
    return x1 >= x2? x1: x2; }
rational min ( const rational x1,
const rational x2 
) [friend]

Definition at line 148 of file rational.hpp.

                                                                      {
    return x1 <= x2? x1: x2; }
void mul ( rational r,
const rational x1,
const rational x2 
) [friend]

Definition at line 126 of file rational.hpp.

                                                            {
    r.secure (); mpq_mul (*r, *x1, *x2); }
void neg ( rational r) [friend]

Definition at line 114 of file rational.hpp.

                    {
    r.secure (); mpq_neg (*r, *r); }
void neg ( rational r,
const rational x1 
) [friend]

Definition at line 117 of file rational.hpp.

                                        {
    r.secure (); mpq_neg (*r, *x1); }
integer numerator ( const rational x1) [friend]

Definition at line 66 of file rational.hpp.

                                                       {
    integer r; mpq_get_num (*r, *x1); return r; }
bool operator!= ( const rational x1,
const rational x2 
) [friend]

Definition at line 136 of file rational.hpp.

                                                                          {
    return mpq_cmp (*x1, *x2) != 0; }
rational operator* ( const rational x1,
const rational x2 
) [friend]

Definition at line 80 of file rational.hpp.

                                                                             {
    rational r; mpq_mul (*r, *x1, *x2); return r; }
rational& operator*= ( rational x1,
const rational x2 
) [friend]

Definition at line 103 of file rational.hpp.

                                                                         {
    x1.secure (); mpq_mul (*x1, *x1, *x2); return x1; }
rational operator+ ( const rational x1,
const rational x2 
) [friend]

Definition at line 76 of file rational.hpp.

                                                                             {
    rational r; mpq_add (*r, *x1, *x2); return r; }
rational& operator+= ( rational x1,
const rational x2 
) [friend]

Definition at line 99 of file rational.hpp.

                                                                         {
    x1.secure (); mpq_add (*x1, *x1, *x2); return x1; }
rational operator- ( const rational x1) [friend]

Definition at line 74 of file rational.hpp.

                                                         {
    rational r; mpq_neg (*r, *x1); return r; }
rational operator- ( const rational x1,
const rational x2 
) [friend]

Definition at line 78 of file rational.hpp.

                                                                             {
    rational r; mpq_sub (*r, *x1, *x2); return r; }
rational& operator-= ( rational x1,
const rational x2 
) [friend]

Definition at line 101 of file rational.hpp.

                                                                         {
    x1.secure (); mpq_sub (*x1, *x1, *x2); return x1; }
rational operator/ ( const rational x1,
const rational x2 
) [friend]

Definition at line 84 of file rational.hpp.

                                                                             {
    ASSERT (mpq_sgn (*x2) != 0, "division by zero");
    rational r; mpq_div (*r, *x1, *x2); return r; }
rational& operator/= ( rational x1,
const rational x2 
) [friend]

Definition at line 105 of file rational.hpp.

                                                                         {
    ASSERT (mpq_sgn (*x2) != 0, "division by zero");
    x1.secure (); mpq_div (*x1, *x1, *x2); return x1; }
bool operator< ( const rational x1,
const rational x2 
) [friend]

Definition at line 138 of file rational.hpp.

                                                                         {
    return mpq_cmp (*x1, *x2) < 0; }
rational operator<< ( const rational x1,
const xint &  shift 
) [friend]

Definition at line 91 of file rational.hpp.

                                                                             {
    rational r; mpq_mul_2si (*r, *x1, shift); return r; }
rational& operator<<= ( rational x1,
const xint &  shift 
) [friend]

Definition at line 108 of file rational.hpp.

                                                                         {
    x1.secure (); mpq_mul_2si (*x1, *x1, shift); return x1; }
bool operator<= ( const rational x1,
const rational x2 
) [friend]

Definition at line 142 of file rational.hpp.

                                                                          {
    return mpq_cmp (*x1, *x2) <= 0; }
bool operator== ( const rational x1,
const rational x2 
) [friend]

Definition at line 134 of file rational.hpp.

                                                                          {
    return mpq_cmp (*x1, *x2) == 0; }
bool operator> ( const rational x1,
const rational x2 
) [friend]

Definition at line 140 of file rational.hpp.

                                                                         {
    return mpq_cmp (*x1, *x2) > 0; }
bool operator>= ( const rational x1,
const rational x2 
) [friend]

Definition at line 144 of file rational.hpp.

                                                                          {
    return mpq_cmp (*x1, *x2) >= 0; }
rational operator>> ( const rational x1,
const xint &  shift 
) [friend]

Definition at line 93 of file rational.hpp.

                                                                             {
    rational r; mpq_mul_2si (*r, *x1, -shift); return r; }
rational& operator>>= ( rational x1,
const xint &  shift 
) [friend]

Definition at line 110 of file rational.hpp.

                                                                         {
    x1.secure (); mpq_mul_2si (*x1, *x1, -shift); return x1; }
rational pow ( const rational a,
const int &  i 
) [friend]

Definition at line 173 of file rational.hpp.

                                                               {
    rational r;
    if (i >= 0) {
      mpz_pow_ui (mpq_numref (*r), mpq_numref (*a), i);
      mpz_pow_ui (mpq_denref (*r), mpq_denref (*a), i);
    }
    else {
      ASSERT (mpq_sgn (*a) != 0, "division by zero");
      mpz_pow_ui (mpq_denref (*r), mpq_numref (*a), -i);
      mpz_pow_ui (mpq_numref (*r), mpq_denref (*a), -i);
    }
    return r; }
rational pow ( const rational a,
const integer i 
) [friend]

Definition at line 185 of file rational.hpp.

                                                                   {
    // FIXME: test whether integer i fits in int
    return pow (a, as_int (i)); }
rational round ( const rational x1) [friend]

Definition at line 160 of file rational.hpp.

                                                    {
    return quo (numerator (x1) + (denominator (x1) >> 1), denominator (x1)); }
int sign ( const rational x1) [friend]

Definition at line 146 of file rational.hpp.

                                              {
    int r= mpq_sgn (*x1); return (r<0? -1: (r==0? 0: 1)); }
rational sqrt ( const rational a) [friend]

Definition at line 167 of file rational.hpp.

                                                  {
    VERIFY (is_square (a), "not a perfect square");
    rational r;
    mpz_sqrt (mpq_numref (*r), mpq_numref (*a));
    mpz_sqrt (mpq_denref (*r), mpq_denref (*a));
    return r; }
rational square ( const rational x1) [friend]

Definition at line 82 of file rational.hpp.

                                                     {
    rational r; mpq_mul (*r, *x1, *x1); return r; }
void sub ( rational r,
const rational x1,
const rational x2 
) [friend]

Definition at line 123 of file rational.hpp.

                                                            {
    r.secure (); mpq_sub (*r, *x1, *x2); }
rational trunc ( const rational x1) [friend]

Definition at line 156 of file rational.hpp.

                                                    {
    return sign (x1) * quo (abs (numerator (x1)), denominator (x1)); }

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines