Übersetzen mittels ghc --make -Wall -O2 Main.hs
, dann
./Main demos
oder ./Main tests
.
Getestet mit GHC 6.12.1, 7.0.3 und 7.2.1.
>> SimpleExtension Ganzheitsgleichungen über Q(sqrt2): ` sqrt2: [(-1) % 1*X] + X ` goldenRatio: [(-1) % 1] + [(-1) % 1]*X + X^2 ` sqrt2 + goldenRatio: [1 + X] + [(-1) % 1 + (-2) % 1*X]*X + X^2 ` (sqrt2 + goldenRatio)^2: [(-7) % 1 + (-5) % 1*X] + [14 % 1 + 11 % 1*X]*X + [(-8) % 1 + (-3) % 1*X]*X^2 + X^3 >> Smith Die Smithsche Normalform (also die Liste der Elementarteiler) von A = ... 5 0 0 4 3 0 -2 1 3 ...ist: [1,1,45] Die Elementarteiler von X 1 - A sind: [1,1,(-45) % 1 + 39 % 1*X + (-11) % 1*X^2 + X^3] Die Smithsche Normalform (also die Liste der Elementarteiler) von A = ... 18 12 24 42 7 9 7 3 10 12 7 10 4 -6 9 10 ...ist: [1,1,2,3630] Die Elementarteiler von X 1 - A sind: [1,1,1,7260 % 1 + 2484 % 1*X + 43 % 1*X^2 + (-44) % 1*X^3 + X^4] >> Complex Approximationen von sqrt2: ` auf Genauigkeit < 1/1: 1 % 1 ~~ 1.0 :+ 0.0 ` auf Genauigkeit < 1/10: 7 % 5 ~~ 1.4 :+ 0.0 ` auf Genauigkeit < 1/100: 41 % 29 ~~ 1.4137931034482758 :+ 0.0 ` auf Genauigkeit < 1/1000: 99 % 70 ~~ 1.4142857142857144 :+ 0.0 ` auf Genauigkeit < 1/10000: 577 % 408 ~~ 1.4142156862745099 :+ 0.0 Approximationen von goldenRatio: ` auf Genauigkeit < 1/1: 1 % 1 ~~ 1.0 :+ 0.0 ` auf Genauigkeit < 1/10: 8 % 5 ~~ 1.6 :+ 0.0 ` auf Genauigkeit < 1/100: 34 % 21 ~~ 1.619047619047619 :+ 0.0 ` auf Genauigkeit < 1/1000: 144 % 89 ~~ 1.6179775280898876 :+ 0.0 ` auf Genauigkeit < 1/10000: 987 % 610 ~~ 1.618032786885246 :+ 0.0 Approximationen von sqrt2^2 + 3*goldenRatio: ` auf Genauigkeit < 1/1: 174 % 25 ~~ 6.96 :+ 0.0 ` auf Genauigkeit < 1/10: 74836 % 10933 ~~ 6.8449647855117535 :+ 0.0 ` auf Genauigkeit < 1/100: 2989089 % 436100 ~~ 6.854136665902316 :+ 0.0 ` auf Genauigkeit < 1/1000: 430143353 % 62756928 ~~ 6.854117413140426 :+ 0.0 ` auf Genauigkeit < 1/10000: 61898361861 % 9030849748 ~~ 6.854101617038663 :+ 0.0 Approximationen von (sqrt2 * goldenRatio)^3: ` auf Genauigkeit < 1/1: 10907217 % 910000 ~~ 11.985952747252748 :+ 0.0 ` auf Genauigkeit < 1/10: 613220260455 % 51179800126 ~~ 11.981685331816609 :+ 0.0 ` auf Genauigkeit < 1/100: 6706315591216976 % 559725243392055 ~~ 11.981442092150902 :+ 0.0 ` auf Genauigkeit < 1/1000: 28428869909407645935712 % 2372749236042787045125 ~~ 11.981405147060807 :+ 0.0 ` auf Genauigkeit < 1/10000: 78802069665924033400189375 % 6577028353892392832636928 ~~ 11.981409449039045 :+ 0.0 Bei diesen Berechnungen maximal benötigte Approximation von sqrt2: 1/4400000 >> Algebraic Zur Zahl z = 41: ` ungefährer Wert von z: 41.0 :+ 0.0 ` Ganzheitsgleichung von z: (-41) % 1 + X ` ungefährer Wert von 1/z: 2.4390243902439025e-2 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 41 + X ` ist rational? Just (41 % 1) Zur Zahl z = zero: ` ungefährer Wert von z: 0.0 :+ 0.0 ` Ganzheitsgleichung von z: X ` ist nicht invertierbar. ` ist rational? Just (0 % 1) Zur Zahl z = sqrt2 - sqrt2: ` ungefährer Wert von z: 0.0 :+ 0.0 ` Ganzheitsgleichung von z: (-8) % 1*X + X^3 ` ist nicht invertierbar. ` ist rational? Just (0 % 1) Zur Zahl z = goldenRatio * (sqrt2 - sqrt2): ` ungefährer Wert von z: 0.0 :+ 0.0 ` Ganzheitsgleichung von z: 64 % 1*X + (-24) % 1*X^3 + X^5 ` ist nicht invertierbar. ` ist rational? Just (0 % 1) Zur Zahl z = goldenRatio: ` ungefährer Wert von z: 1.619047619047619 :+ 0.0 ` Ganzheitsgleichung von z: (-1) % 1 + (-1) % 1*X + X^2 ` ungefährer Wert von 1/z: 0.6181818181818182 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 1 + X + X^2 ` ist rational? Nothing Zur Zahl z = sqrt2: ` ungefährer Wert von z: 1.4137931034482758 :+ 0.0 ` Ganzheitsgleichung von z: (-2) % 1 + X^2 ` ungefährer Wert von 1/z: 0.7073170731707317 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 2 + X^2 ` ist rational? Nothing Zur Zahl z = sqrt2^2: ` ungefährer Wert von z: 2.000204081632653 :+ 0.0 ` Ganzheitsgleichung von z: (-4) % 1 + X^2 ` ungefährer Wert von 1/z: 0.49994898479746963 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 4 + X^2 ` ist rational? Just (2 % 1) Zur Zahl z = sqrt2^5: ` ungefährer Wert von z: 5.657137026390815 :+ 0.0 ` Ganzheitsgleichung von z: (-32) % 1 + X^2 ` ungefährer Wert von 1/z: 0.17676661487513334 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 32 + X^2 ` ist rational? Nothing Zur Zahl z = goldenRatio + sqrt2: ` ungefährer Wert von z: 3.0314401622718052 :+ 0.0 ` Ganzheitsgleichung von z: (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4 ` ungefährer Wert von 1/z: 0.32972387655657825 :+ 0.0 ` Ganzheitsgleichung von 1/z: (-1) % 1 + 2 % 1*X + 5 % 1*X^2 + (-6) % 1*X^3 + X^4 ` ist rational? Nothing Nach Größe sortiert: ["zero","sqrt2 - sqrt2","goldenRatio * (sqrt2 - sqrt2)","sqrt2","goldenRatio","sqrt2^2","goldenRatio + sqrt2","sqrt2^5","41"] >> RootFinding Nullstellen von 1 + X + X^2 + X^3 + X^4 (aus Q[X]): ` auf Genauigkeit < 1/1: ` ((-1) % 2+i(-1) % 2) ~~ (-0.5) :+ (-0.5) ` (1 % 2+i(-1) % 2) ~~ 0.5 :+ (-0.5) ` ((-1) % 2+i1 % 2) ~~ (-0.5) :+ 0.5 ` (1 % 2+i1 % 2) ~~ 0.5 :+ 0.5 ` auf Genauigkeit < 1/10: ` ((-25) % 32+i(-19) % 32) ~~ (-0.78125) :+ (-0.59375) ` (9 % 32+i(-31) % 32) ~~ 0.28125 :+ (-0.96875) ` ((-25) % 32+i19 % 32) ~~ (-0.78125) :+ 0.59375 ` (9 % 32+i31 % 32) ~~ 0.28125 :+ 0.96875 ` auf Genauigkeit < 1/100: ` ((-207) % 256+i(-151) % 256) ~~ (-0.80859375) :+ (-0.58984375) ` (79 % 256+i(-243) % 256) ~~ 0.30859375 :+ (-0.94921875) ` ((-207) % 256+i151 % 256) ~~ (-0.80859375) :+ 0.58984375 ` (79 % 256+i243 % 256) ~~ 0.30859375 :+ 0.94921875 ` auf Genauigkeit < 1/1000: ` ((-1657) % 2048+i(-1203) % 2048) ~~ (-0.80908203125) :+ (-0.58740234375) ` (633 % 2048+i(-1947) % 2048) ~~ 0.30908203125 :+ (-0.95068359375) ` ((-1657) % 2048+i1203 % 2048) ~~ (-0.80908203125) :+ 0.58740234375 ` (633 % 2048+i1947 % 2048) ~~ 0.30908203125 :+ 0.95068359375 ` auf Genauigkeit < 1/10000: ` ((-26509) % 32768+i(-19261) % 32768) ~~ (-0.808990478515625) :+ (-0.587799072265625) ` (10125 % 32768+i(-31165) % 32768) ~~ 0.308990478515625 :+ (-0.951080322265625) ` ((-26509) % 32768+i19261 % 32768) ~~ (-0.808990478515625) :+ 0.587799072265625 ` (10125 % 32768+i31165 % 32768) ~~ 0.308990478515625 :+ 0.951080322265625 Anzahl Nullstellen im Einheitsquadrat: 2/2 Nullstellen von 2 % 1 + (3 % 1+i5 % 1)*X + X^3 (aus Q(i)[X]): ` auf Genauigkeit < 1/1: ` (21 % 16+i(-35) % 16) ~~ 1.3125 :+ (-2.1875) ` ((-7) % 16+i7 % 16) ~~ (-0.4375) :+ 0.4375 ` ((-21) % 16+i35 % 16) ~~ (-1.3125) :+ 2.1875 ` auf Genauigkeit < 1/10: ` (329 % 256+i(-567) % 256) ~~ 1.28515625 :+ (-2.21484375) ` ((-49) % 256+i77 % 256) ~~ (-0.19140625) :+ 0.30078125 ` ((-273) % 256+i497 % 256) ~~ (-1.06640625) :+ 1.94140625 ` auf Genauigkeit < 1/100: ` (2597 % 2048+i(-4571) % 2048) ~~ 1.26806640625 :+ (-2.23193359375) ` ((-371) % 2048+i609 % 2048) ~~ (-0.18115234375) :+ 0.29736328125 ` ((-2233) % 2048+i3969 % 2048) ~~ (-1.09033203125) :+ 1.93798828125 ` auf Genauigkeit < 1/1000: ` (20797 % 16384+i(-36617) % 16384) ~~ 1.26934814453125 :+ (-2.23492431640625) ` ((-2961) % 16384+i4921 % 16384) ~~ (-0.18072509765625) :+ 0.30035400390625 ` ((-17843) % 16384+i31703 % 16384) ~~ (-1.08905029296875) :+ 1.93499755859375 ` auf Genauigkeit < 1/10000: ` (332857 % 262144+i(-585963) % 262144) ~~ 1.2697486877441406 :+ (-2.235271453857422) ` ((-47341) % 262144+i78701 % 262144) ~~ (-0.18059158325195313) :+ 0.3002204895019531 ` ((-285509) % 262144+i507269 % 262144) ~~ (-1.0891304016113281) :+ 1.9350776672363281 Anzahl Nullstellen im Einheitsquadrat: 0/2 >> Factoring Irreduzible Faktoren von 1 + X^2: ` 1 + X^2 Irreduzible Faktoren von (-1) % 1 + X^2: ` (-1) % 1 + X ` 1 + X Irreduzible Faktoren von (-1) % 1 + X^3: ` (-1) % 1 + X ` 1 + X + X^2 Irreduzible Faktoren von (-1) % 1 + X^4: ` (-1) % 1 + X ` 1 + X ` 1 + X^2 Irreduzible Faktoren von (-1) % 1 + X^5: ` (-1) % 1 + X ` 1 + X + X^2 + X^3 + X^4 Irreduzible Faktoren von (-1) % 1 + X^6: ` (-1) % 1 + X ` 1 + X ` 1 + X + X^2 ` 1 + (-1) % 1*X + X^2 Zur Zahl Ext "sqrt2" <<nondet>>: ` Ganzheitsgleichung: (-2) % 1 + X^2 ` Minimalpolynom: (-2) % 1 + X^2 Zur Zahl Mult (Ext "sqrt2" <<nondet>>) (Ext "sqrt2" <<nondet>>): ` Ganzheitsgleichung: (-4) % 1 + X^2 ` Minimalpolynom: (-2) % 1 + X Zur Zahl Mult (Mult (Ext "sqrt2" <<nondet>>) (Ext "sqrt2" <<nondet>>)) (Ext "sqrt2" <<nondet>>): ` Ganzheitsgleichung: (-8) % 1 + X^2 ` Minimalpolynom: (-8) % 1 + X^2 Zur Zahl Add [Ext "sqrt2" <<nondet>>,Ext "goldenRatio" <<nondet>>]: ` Ganzheitsgleichung: (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4 ` Minimalpolynom: (-1) % 1 + 6 % 1*X + (-5) % 1*X^2 + (-2) % 1*X^3 + X^4 >> IdealExtension Rechnungen im ideellen Oberkörper Q(sqrt(2)), wobei wir von sqrt(2) nur wissen wollen, dass es Nullstelle von f = 6 % 1 + (-2) % 1*X + (-3) % 1*X^2 + X^3 ist: ` Inverses von S (-2) % 1 + X: Just (S (-2) % 1 + (-1) % 2*X + 1 % 2*X^2) ` Inverses von S (-3) % 1 + X: Just (S (-3) % 7 + (-1) % 7*X) Für die zweite Rechnung wurde dabei ein Neustart benötigt, denn 3 ist eine Nullstelle von f. >> Galois Zur Galoisgruppe von (-1) % 1 + X^4: ` Nullstellen: [0.0 :+ (-1.0),1.0 :+ 0.0,0.0 :+ 1.0,(-1.0) :+ 0.0] ` Prim. Element t: [0,1,1,0] * xs ~~ 1.0 :+ 1.0 ` Min.Polynom: 2 % 1 + (-2) % 1*X + X^2 ` Gal. Konjugierte: [0.9990234375 :+ (-0.9990234375),0.9990234375 :+ 0.9990234375] ` Nst. #0 in t: 1 + (-1) % 1*X ` Nst. #1 in t: 1 ` Nst. #2 in t: (-1) % 1 + X ` Nst. #3 in t: (-1) % 1 ` Galoisgruppe: [[2,1,0,3],[0,1,2,3]] Zur Galoisgruppe von (-1) % 1 + X^6: ` Nullstellen: [(-0.5) :+ (-0.86328125),0.5 :+ (-0.86328125),(-0.5) :+ 0.86328125,0.5 :+ 0.86328125,1.0 :+ 0.0,(-1.0) :+ 0.0] ` Prim. Element t: [0,1,-1,1,0,0] * xs ~~ 1.5 :+ (-0.8662109375) ` Min.Polynom: 3 % 1 + (-3) % 1*X + X^2 ` Gal. Konjugierte: [1.5 :+ (-0.86328125),1.5 :+ 0.86328125] ` Nst. #0 in t: (-2) % 1 + X ` Nst. #1 in t: (-1) % 1 + X ` Nst. #2 in t: 1 + (-1) % 1*X ` Nst. #3 in t: 2 % 1 + (-1) % 1*X ` Nst. #4 in t: 1 ` Nst. #5 in t: (-1) % 1 ` Galoisgruppe: [[0,1,2,3,4,5],[2,3,0,1,4,5]]