# Für Wolfram
## Docstring für `PolynomialRing`
Wir haben den docstring hinzugefügt, aber es wird noch ein paar Tage dauern bis er in Oscar auftaucht.
## Types of base fields
- The field of rational numbers $\mathbb{Q}$:
```julia
julia> QQ
Rational Field
```
- Finite fields $\mathbb{F_p}$, $p$ a prime:
```julia
julia> GF(3)
Galois field with characteristic 3
julia> GF(ZZ(2)^127 - 1)
Galois field with characteristic 170141183460469231731687303715884105727
```
- Finite fields $\mathbb{F}_{p^n}$ with $p^n$ elements, $p$ a prime.
```julia
julia> FiniteField(2, 70, "a")
(Finite field of degree 70 over F_2, a)
```
- Transcendental extension of $\mathbb{Q}$ or $\mathbb{F}_p$.
```julia
julia> Qx, x = PolynomialRing(QQ, 5, "x")
(Multivariate Polynomial Ring in x1, x2, x3, x4, x5 over Rational Field, fmpq_mpoly[x1, x2, x3, x4, x5])
julia> F = FractionField(Qx)
Fraction field of Multivariate Polynomial Ring in x1, x2, x3, x4, x5 over Rational Field
```
- Simple algebraic extensions of $\mathbb{Q}$ or $\mathbb{F}_p$:
```julia
julia> Qx, x = QQ["x"]
(Univariate Polynomial Ring in x over Rational Field, x)
julia> K, a = NumberField(x^2 + 1, "a")
(Number field over Rational Field with defining polynomial x^2 + 1, a)
julia> F = GF(3)
Galois field with characteristic 3
julia> Fx, x = F["x"]
(Univariate Polynomial Ring in x over Galois field with characteristic 3, x)
julia> K, a = FiniteField(x^2 + 1, "a")
(Finite field of degree 2 over F_3, a)
```
- The field of real numbers represented by floating point numbers of a user defined precision, the field of complex numbers represented by (pairs of) floating point numbers of a user defined precision.
*Wir haben Körper von reellen und komplexen Zahlen, die durch Intervallarithmetik implementiert sind. Wenn wir das andere auch wollen, müssten wir da noch was machen. Andererseits weiß ich nicht wie korrekt da die Gröbnerbasen überhaupt sind und ob das ganze Sinn ergibt.*
```julia
julia> RR = Nemo.RealField(64)
Real Field with 64 bits of precision and error bounds
julia> a = RR(2.1)
[2.1000000000000000888 +/- 1.79e-20]
julia> inv(a)
[0.4761904761904761703 +/- 5.78e-20]
julia> CC = Nemo.ComplexField(64)
Complex Field with 64 bits of precision and error bounds
julia> a = CC(-2.1)
-[2.1000000000000000888 +/- 1.79e-20]
julia> sqrt(a)
[1.449137674618943888 +/- 1.26e-19]*im
```
- The ring of integers $\mathbb{ZZ}$
```julia
julia> ZZ
Integer Ring
```
- Residue rings of $\mathbb{Z}$
```julia
julia> ResidueRing(ZZ, 20)
Integers modulo 20
```
## Hier noch der andere Konstruktor. Hoffe das ist was du im Sinn hattest:
```julia
julia> Qx, x = PolynomialRing(QQ, 2, "x");
julia> x
2-element Vector{fmpq_mpoly}:
x1
x2
```
*(Ich glaube die Funktion hat keinen docstring)*
## Hier noch ein paar Konstruktoren, auf die ich besonders stolz bin:
```julia
julia> Qx, x = @PolynomialRing(QQ, x[1:3]);
julia> x
3-element Vector{fmpq_mpoly}:
x[1]
x[2]
x[3]
julia> Qx, x = @PolynomialRing(QQ, x[1:3, 1:3]);
julia> x
3×3 Matrix{fmpq_mpoly}:
x[1,1] x[1,2] x[1,3]
x[2,1] x[2,2] x[2,3]
x[3,1] x[3,2] x[3,3]
julia> Qx, x, y = @PolynomialRing(QQ, x[1:3], y[1:2]);
julia> x, y
(fmpq_mpoly[x[1], x[2], x[3]], fmpq_mpoly[y[1], y[2]])
julia> I = [1, 3, 5];
julia> Qx, x = @PolynomialRing(QQ, x[I]);
julia> x
3-element Vector{fmpq_mpoly}:
x[1]
x[3]
x[5]
```