# RR' -- the parent class of all rings of real numbers

## Description

Floating point real numbers are treated in a special way. Recall first to create a polynomial, one must first create a polynomial ring to contain it. And then, the polynomial ring is the class of the polynomial.

 i1 : R = QQ[x,y,z] o1 = R o1 : PolynomialRing i2 : x^2 2 o2 = x o2 : R i3 : class x^2 o3 = R o3 : PolynomialRing

Floating point real numbers, however, can be created directly, as follows, without creating a ring.

 i4 : r = 4.5 o4 = 4.5 o4 : RR (of precision 53) i5 : s = 4.3p300 o5 = 4.3 o5 : RR (of precision 300)

The floating point numbers created above have different precisions, and thus are regarded as being elements of different rings, whose elements all have the same precision.

 i6 : precision r o6 = 53 i7 : precision s o7 = 300 i8 : ring r o8 = RR 53 o8 : RealField i9 : ring s o9 = RR 300 o9 : RealField

In order to make it convenient to define methods that apply to all such rings, those rings have a common parent, namely RR'. Notice that RR' is printed in a special way.

 i10 : RR' o10 = RR * o10 : Type i11 : parent ring r o11 = RR * o11 : Type i12 : parent ring s o12 = RR * o12 : Type i13 : parent ring s === RR' o13 = true

## Methods that use an object of class RR_* :

• "lift(CC,type of RR_*)" -- see lift -- lift to another ring
• "lift(Matrix,type of CC_*,type of RR_*)" -- see lift -- lift to another ring
• "lift(Matrix,type of RR_*,type of QQ)" -- see lift -- lift to another ring
• "lift(Matrix,type of RR_*,type of ZZ)" -- see lift -- lift to another ring
• "lift(Matrix,type of RRi_*,type of RR_*)" -- see lift -- lift to another ring
• "lift(RRi,type of RR_*)" -- see lift -- lift to another ring
• lift(Matrix,type of RR_*,type of RR_*) (missing documentation)
• liftable(CC,type of RR_*) (missing documentation)

## For the programmer

The object RR' is a type, with ancestor classes InexactNumber' < Nothing < Thing.