Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 Bib Ind

The *rationals* form a very important field. On the one hand it is the quotient field of the integers (see chapter 14). On the other hand it is the prime field of the fields of characteristic zero (see chapter 60).

The former comment suggests the representation actually used. A rational is represented as a pair of integers, called *numerator* and *denominator*. Numerator and denominator are *reduced*, i.e., their greatest common divisor is 1. If the denominator is 1, the rational is in fact an integer and is represented as such. The numerator holds the sign of the rational, thus the denominator is always positive.

Because the underlying integer arithmetic can compute with arbitrary size integers, the rational arithmetic is always exact, even for rationals whose numerators and denominators have thousands of digits.

gap> 2/3; 2/3 gap> 66/123; # numerator and denominator are made relatively prime 22/41 gap> 17/-13; # the numerator carries the sign; -17/13 gap> 121/11; # rationals with denominator 1 (when canceled) are integers 11

`‣ Rationals` | ( global variable ) |

`‣ IsRationals` ( obj ) | ( filter ) |

`Rationals`

is the field ℚ of rational integers, as a set of cyclotomic numbers, see Chapter 18 for basic operations, Functions for the field `Rationals`

can be found in the chapters 58 and 60.

`IsRationals`

returns `true`

for a prime field that consists of cyclotomic numbers –for example the **GAP** object `Rationals`

– and `false`

for all other **GAP** objects.

gap> Size( Rationals ); 2/3 in Rationals; infinity true

`‣ IsRat` ( obj ) | ( category ) |

Every rational number lies in the category `IsRat`

, which is a subcategory of `IsCyc`

(18.1-3).

gap> IsRat( 2/3 ); true gap> IsRat( 17/-13 ); true gap> IsRat( 11 ); true gap> IsRat( IsRat ); # `IsRat' is a function, not a rational false

`‣ IsPosRat` ( obj ) | ( category ) |

Every positive rational number lies in the category `IsPosRat`

.

`‣ IsNegRat` ( obj ) | ( category ) |

Every negative rational number lies in the category `IsNegRat`

.

`‣ NumeratorRat` ( rat ) | ( function ) |

`NumeratorRat`

returns the numerator of the rational `rat`. Because the numerator holds the sign of the rational it may be any integer. Integers are rationals with denominator 1, thus `NumeratorRat`

is the identity function for integers.

gap> NumeratorRat( 2/3 ); 2 gap> # numerator and denominator are made relatively prime: gap> NumeratorRat( 66/123 ); 22 gap> NumeratorRat( 17/-13 ); # numerator holds the sign of the rational -17 gap> NumeratorRat( 11 ); # integers are rationals with denominator 1 11

`‣ DenominatorRat` ( rat ) | ( function ) |

`DenominatorRat`

returns the denominator of the rational `rat`. Because the numerator holds the sign of the rational the denominator is always a positive integer. Integers are rationals with the denominator 1, thus `DenominatorRat`

returns 1 for integers.

gap> DenominatorRat( 2/3 ); 3 gap> # numerator and denominator are made relatively prime: gap> DenominatorRat( 66/123 ); 41 gap> # the denominator holds the sign of the rational: gap> DenominatorRat( 17/-13 ); 13 gap> DenominatorRat( 11 ); # integers are rationals with denominator 1 1

`‣ Rat` ( elm ) | ( attribute ) |

`Rat`

returns a rational number `rat` whose meaning depends on the type of `elm`.

If `elm` is a string consisting of digits `'0'`

, `'1'`

, ..., `'9'`

and `'-'`

(at the first position), `'/'`

and the decimal dot `'.'`

then `rat` is the rational described by this string. If `elm` is a rational number, then `Rat`

returns `elm`. The operation `String`

(27.7-6) can be used to compute a string for rational numbers, in fact for all cyclotomics.

gap> Rat( "1/2" ); Rat( "35/14" ); Rat( "35/-27" ); Rat( "3.14159" ); 1/2 5/2 -35/27 314159/100000

`‣ Random` ( Rationals ) | ( operation ) |

`Random`

for rationals returns pseudo random rationals which are the quotient of two random integers. See the description of `Random`

(14.2-12) for details. (Also see `Random`

(30.7-1).)

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 Bib Ind

generated by GAPDoc2HTML