## CGAL::Quotient<NT>

### Definition

An object of the class Quotient<NT> is an element of the field of quotients of the integral domain type NT. If NT behaves like an integer, Quotient<NT> behaves like a rational number. LEDA's class rational (see Section ) has been the basis for Quotient<NT>. A Quotient<NT> q is represented as a pair of NTs, representing numerator and denominator.

#include <CGAL/Quotient.h>

### Is Model for the Concept

FieldNumberType

### Creation

Quotient<NT> q;
| introduces an uninitialized variable q.
template <class T>
Quotient<NT> q ( T t);
| introduces the quotient t/1. NT needs to have a constructor from T.
Quotient<NT> q ( NT n, NT d);
| introduces the quotient n/d.

### Operations

There are two access functions, namely to the numerator and the denominator of a quotient. 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.

NT | q.numerator () | returns a numerator of q.
NT | q.denominator () | returns a denominator of q.

The stream operations are available as well. They assume that corresponding stream operators for type NT exist.

std::ostream& | std::ostream& out << q
|  | writes q to ostream out in format ```n/d`'', where `n`==q.numerator() and `d`==q.denominator().
std::istream& | std::istream& in >> & q
|  | reads q from istream in. Expected format is ```n/d`'', where `n` and `d` are of type NT. A single `n` which is not followed by a `/` is also accepted and interpreted as `n/1`.

The following functions are added to fulfill the CGAL requirements on number types.

double | to_double ( q) | returns some double approximation to q.
bool | is_valid ( q) | returns true, if numerator and denominator are valid.
bool | is_finite ( q) | returns true, if numerator and denominator are finite.
Quotient<NT> | sqrt ( q) | returns the square root of q. This is supported if and only if NT supports the square root as well.