CGAL 5.4 - Number Types
CGAL::Gmpq Class Reference

#include <CGAL/Gmpq.h>

## Definition

An object of the class Gmpq is an arbitrary precision rational number based on the GMP library.

Is Model Of:

Field

RealEmbeddable

Fraction

Implementation

Gmpqs are reference counted.

## Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &out, const Gmpq &q)
writes q to the ostream out, in the form n/d.

std::istream & operator>> (std::istream &in, Gmpq &q)
reads a number from in, then converts it to a Gmpq. More...

## Creation

Gmpq ()
creates an uninitialized Gmpq q.

Gmpq (int i)
creates a Gmpq initialized with i.

Gmpq (Gmpz n)
creates a Gmpq initialized with n.

Gmpq (Gmpfr f)
creates a Gmpq initialized with f.

Gmpq (int n, int d)
creates a Gmpq initialized with n/d.

Gmpq (signed long n, unsigned long d)
creates a Gmpq initialized with n/d.

Gmpq (unsigned long n, unsigned long d)
creates a Gmpq initialized with n/d.

Gmpq (Gmpz n, Gmpz d)
creates a Gmpq initialized with n/d.

Gmpq (double d)
creates a Gmpq initialized with d.

Gmpq (const std::string &str)
creates a Gmpq initialized with str, which can be an integer like "41" or a fraction like "41/152". More...

Gmpq (const std::string &str, int base)
creates a Gmpq initialized with str in base base, which is an integer between 2 and 62. More...

## Operations

There are two access functions, namely to the numerator and the denominator of a rational.

Note that these values are not uniquely defined. It is guaranteed that q.numerator() and q.denominator() return values nt_num and nt_den such that q = nt_num/nt_den, only if q.numerator() and q.denominator() are called consecutively wrt. q, i.e. q is not involved in any other operation between these calls.

Gmpz numerator () const
returns the numerator of q.

Gmpz denominator () const
returns the denominator of q.

## ◆ Gmpq() [1/2]

 CGAL::Gmpq::Gmpq ( const std::string & str )

creates a Gmpq initialized with str, which can be an integer like "41" or a fraction like "41/152".

White space is allowed in the string, and ignored.

## ◆ Gmpq() [2/2]

 CGAL::Gmpq::Gmpq ( const std::string & str, int base )

creates a Gmpq initialized with str in base base, which is an integer between 2 and 62.

White space in the string is ignored.

## ◆ operator>>()

 std::istream & operator>> ( std::istream & in, Gmpq & q )
related

reads a number from in, then converts it to a Gmpq.

The number may be an integer, a rational number in the form n/d, or a floating-point number.