Scippy

SoPlex

Sequential object-oriented simPlex

rational.cpp File Reference

Wrapper for GMP types. More...

#include <cmath>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iomanip>
#include <sstream>
#include <cstring>
#include <limits.h>
#include "soplex/rational.h"
#include "soplex/spxalloc.h"
#include "soplex/spxdefines.h"

Go to the source code of this file.

Classes

class  Rational::Private
 Defines the "Pimpl"-class Private. More...
 

Namespaces

 soplex
 Everything should be within this namespace.
 

Macros

#define SOPLEX_PERFALT_1
 use mpq_sgn instead of mpq_equal to compare rationals with zero More...
 
#define SOPLEX_PERFALT_2a
 turn on checking rationals for zero in arithmetic plus and minus operators More...
 
#define SOPLEX_PERFALT_2b
 turn on checking rationals for zero, posone, negone in arithmetic multiplication and division operators More...
 
#define SOPLEX_PERFALT_3
 turn on checking rationals for zero, posone, negone before conversion to double and long double More...
 
#define SOPLEX_PERFALT_4
 turn on checking for equality before assigning in operator=() More...
 
#define SOPLEX_PERFALT_5a
 turn on checking whether assignment in assignment operators is redundant for 0 More...
 
#define SOPLEX_PERFALT_5b
 turn on checking whether assignment in assignment operators is redundant for +1 and -1 More...
 

Functions

Rational operator- (const double &d, const Rational &r)
 subtraction operator for double and Rational More...
 
Rational operator* (const double &d, const Rational &r)
 multiplication operator for double and Rational More...
 
Rational operator/ (const double &d, const Rational &r)
 division operator for double and Rational More...
 
Rational operator- (const int &d, const Rational &r)
 subtraction operator for int and Rational More...
 
Rational operator* (const int &d, const Rational &r)
 multiplication operator for int and Rational More...
 
Rational operator/ (const int &d, const Rational &r)
 division operator for int and Rational More...
 
std::string rationalToString (const Rational &r, const int precision)
 convert rational number to string More...
 
bool readStringRational (const char *s, Rational &value)
 read Rational from string More...
 
std::ostream & operator<< (std::ostream &os, const Rational &r)
 print Rational More...
 
int compareRational (const Rational &r, const Rational &s)
 comparison operator returning a positive value if r > s, zero if r = s, and a negative value if r < s More...
 
bool operator== (const Rational &r, const Rational &s)
 equality operator More...
 
bool operator!= (const Rational &r, const Rational &s)
 inequality operator More...
 
bool operator< (const Rational &r, const Rational &s)
 less than operator More...
 
bool operator<= (const Rational &r, const Rational &s)
 less than or equal to operator More...
 
bool operator> (const Rational &r, const Rational &s)
 greater than operator More...
 
bool operator>= (const Rational &r, const Rational &s)
 greater than or equal to operator More...
 
bool operator== (const Rational &r, const double &s)
 equality operator for Rational and double More...
 
bool operator!= (const Rational &r, const double &s)
 inequality operator for Rational and double More...
 
bool operator< (const Rational &r, const double &s)
 less than operator for Rational and double More...
 
bool operator<= (const Rational &r, const double &s)
 less than or equal to operator for Rational and double More...
 
bool operator> (const Rational &r, const double &s)
 greater than operator for Rational and double More...
 
bool operator>= (const Rational &r, const double &s)
 greater than or equal to operator for Rational and double More...
 
bool operator== (const double &r, const Rational &s)
 equality operator for double and Rational More...
 
bool operator!= (const double &r, const Rational &s)
 inequality operator double and Rational More...
 
bool operator< (const double &r, const Rational &s)
 less than operator double and Rational More...
 
bool operator<= (const double &r, const Rational &s)
 less than or equal to operator double and Rational More...
 
bool operator> (const double &r, const Rational &s)
 greater than operator double and Rational More...
 
bool operator>= (const double &r, const Rational &s)
 greater than or equal to operator double and Rational More...
 
bool operator== (const Rational &r, const long double &s)
 equality operator for Rational and long double More...
 
bool operator!= (const Rational &r, const long double &s)
 inequality operator for Rational and long double More...
 
bool operator< (const Rational &r, const long double &s)
 less than operator for Rational and long double More...
 
bool operator<= (const Rational &r, const long double &s)
 less than or equal to operator for Rational and long double More...
 
bool operator> (const Rational &r, const long double &s)
 greater than operator for Rational and long double More...
 
bool operator>= (const Rational &r, const long double &s)
 greater than or equal to operator for Rational and long double More...
 
bool operator== (const long double &r, const Rational &s)
 equality operator for long double and Rational More...
 
bool operator!= (const long double &r, const Rational &s)
 inequality operator long double and Rational More...
 
bool operator< (const long double &r, const Rational &s)
 less than operator long double and Rational More...
 
bool operator<= (const long double &r, const Rational &s)
 less than or equal to operator long double and Rational More...
 
bool operator> (const long double &r, const Rational &s)
 greater than operator long double and Rational More...
 
bool operator>= (const long double &r, const Rational &s)
 greater than or equal to operator long double and Rational More...
 
bool operator== (const Rational &r, const int &s)
 equality operator for Rational and int More...
 
bool operator!= (const Rational &r, const int &s)
 inequality operator for Rational and int More...
 
bool operator< (const Rational &r, const int &s)
 less than operator for Rational and int More...
 
bool operator<= (const Rational &r, const int &s)
 less than or equal to operator for Rational and int More...
 
bool operator> (const Rational &r, const int &s)
 greater than operator for Rational and int More...
 
bool operator>= (const Rational &r, const int &s)
 greater than or equal to operator for Rational and int More...
 
bool operator== (const int &r, const Rational &s)
 equality operator for int and Rational More...
 
bool operator!= (const int &r, const Rational &s)
 inequality operator for int and Rational More...
 
bool operator< (const int &r, const Rational &s)
 less than operator for int and Rational More...
 
bool operator<= (const int &r, const Rational &s)
 less than or equal to operator for int and Rational More...
 
bool operator> (const int &r, const Rational &s)
 greater than operator for int and Rational More...
 
bool operator>= (const int &r, const Rational &s)
 greater than or equal to operator for int and Rational More...
 
Rational operator+ (const double &d, const Rational &r)
 addition operator for double and Rational More...
 
Rational operator+ (const int &d, const Rational &r)
 addition operator for int and Rational More...
 
Rational spxAbs (const Rational &r)
 Absolute. More...
 
int sign (const Rational &r)
 Sign function; returns 1 if r > 0, 0 if r = 0, and -1 if r < 0. More...
 
Rational operator- (const Rational &r)
 Negation. More...
 
int totalSizeRational (const Rational *vector, const int length, const int base)
 Total size of rational vector. More...
 
int dlcmSizeRational (const Rational *vector, const int length, const int base)
 Size of least common multiple of denominators in rational vector. More...
 
int dmaxSizeRational (const Rational *vector, const int length, const int base)
 Size of largest denominator in rational vector. More...
 

Detailed Description

Wrapper for GMP types.

Definition in file rational.cpp.

Macro Definition Documentation

◆ SOPLEX_PERFALT_1

#define SOPLEX_PERFALT_1

use mpq_sgn instead of mpq_equal to compare rationals with zero

Definition at line 39 of file rational.cpp.

◆ SOPLEX_PERFALT_2a

#define SOPLEX_PERFALT_2a

turn on checking rationals for zero in arithmetic plus and minus operators

Definition at line 42 of file rational.cpp.

◆ SOPLEX_PERFALT_2b

#define SOPLEX_PERFALT_2b

turn on checking rationals for zero, posone, negone in arithmetic multiplication and division operators

Definition at line 45 of file rational.cpp.

◆ SOPLEX_PERFALT_3

#define SOPLEX_PERFALT_3

turn on checking rationals for zero, posone, negone before conversion to double and long double

Definition at line 48 of file rational.cpp.

◆ SOPLEX_PERFALT_4

#define SOPLEX_PERFALT_4

turn on checking for equality before assigning in operator=()

Definition at line 51 of file rational.cpp.

◆ SOPLEX_PERFALT_5a

#define SOPLEX_PERFALT_5a

turn on checking whether assignment in assignment operators is redundant for 0

Definition at line 54 of file rational.cpp.

◆ SOPLEX_PERFALT_5b

#define SOPLEX_PERFALT_5b

turn on checking whether assignment in assignment operators is redundant for +1 and -1

Definition at line 57 of file rational.cpp.