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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
#
# jruby examples for jas.
# $Id$
#
require "examples/jas"
# multiple algebraic field extensions
puts "------- multiple algebraic field extensions QQ(alpha)(beta)(gamma)(delta) ---------";
r = PolyRing.new(QQ(),"alpha",PolyRing.lex);
puts "r = " + str(r);
e,a = r.gens();
puts "e = " + str(e);
puts "a = " + str(a);
ap = a**5 - a + 1;
puts "ap = " + str(ap);
x = r.factors(ap);
puts "x = " + str( x.map{ |p,e| str(p)+"**"+str(e)+"," });
qs2 = AN(ap,x.size==1); # and e==1
puts "qs2 = " + str(qs2.factory());
one,alpha = qs2.gens();
puts "one = " + str(one);
puts "alpha = " + str(alpha);
b = alpha**2 - 1;
puts "b = " + str(b);
c = 1 / b;
puts "c = " + str(c);
puts "b*c = " + str(b*c);
puts
ar = PolyRing.new(qs2,"beta",PolyRing.lex);
puts "ar = " + str(ar);
e,a,b = ar.gens();
puts "e = " + str(e);
puts "a = " + str(a);
puts "b = " + str(b);
bp = b**2 - a;
puts "bp = " + str(bp);
x = ar.factors(bp);
puts "x = " + str( x.map{ |p,e| str(p)+"**"+str(e)+"," });
qs3 = AN(bp,x.size==1); # and e==1
puts "qs3 = " + str(qs3.factory());
one,alpha,beta = qs3.gens();
puts "one = " + str(one);
puts "alpha = " + str(alpha);
puts "beta = " + str(beta);
c = -alpha + beta**3;
puts "c = " + str(c);
d = 1 / c;
puts "d = " + str(d);
e = c * d;
puts "e = " + str(e);
puts
br = PolyRing.new(qs3,"gamma",PolyRing.lex);
puts "br = " + str(br);
e,a,b,c = br.gens();
puts "e = " + str(e);
puts "a = " + str(a);
puts "b = " + str(b);
puts "c = " + str(c);
cp = c**2 - b*c - a;
puts "cp = " + str(cp);
x = br.factors(cp);
puts "x = " + str( x.map{ |p,e| str(p)+"**"+str(e)+"," });
qs4 = AN(cp,x.size==1); # and e==1
puts "qs4 = " + str(qs4.factory());
one,alpha,beta,gamma = qs4.gens();
puts "one = " + str(one);
puts "alpha = " + str(alpha);
puts "beta = " + str(beta);
puts "gamma = " + str(gamma);
d = -alpha*gamma + beta;
puts "d = " + str(d);
e = 1 / d;
puts "e = " + str(e);
f = e * d;
puts "f = " + str(f);
puts
cr = PolyRing.new(qs4,"delta",PolyRing.lex);
puts "cr = " + str(cr);
e,a,b,c,d = cr.gens();
puts "e = " + str(e);
puts "a = " + str(a);
puts "b = " + str(b);
puts "c = " + str(c);
puts "d = " + str(d);
dp = d**2 + c*d - b + a; # irreducible
#dp = (d**2 + b) * ( c**2 - a ); # = b * c * ( d**2 + b )
#dp = (d + b * c) * ( d + c - a**2 );
puts "dp = " + str(dp);
x = cr.factors(dp);
puts "x = " + str( x.map{ |p,e| str(p)+"**"+str(e)+", " });
qs5 = AN(dp,x.size==1); # and e==1
puts "qs5 = " + str(qs5.factory());
one,alpha,beta,gamma,delta = qs5.gens();
puts "one = " + str(one);
puts "alpha = " + str(alpha);
puts "beta = " + str(beta);
puts "gamma = " + str(gamma);
puts "delta = " + str(delta);
#e = -alpha*gamma + beta*delta; # ok
#e = alpha**3 - gamma; # 1/e does fail not because it is a unit
e = delta**2 + beta; # 1/e fails
e = delta + beta*gamma; # 1/e fails
puts "e = " + str(e);
f = 1 / e;
puts "f = " + str(f);
g = e * f;
puts "g = " + str(g);
puts
f = ( ( ( ( 3/82 * alpha**4 - 12/41 * alpha**3 - 13/82 * alpha**2 - 19/82 * alpha - 15/82 ) * beta + ( 3/82 * alpha**4 - 12/41 * alpha**3 - 13/82 * alpha**2 - 19/82 * alpha - 15/82 ) ) * gamma - ( ( 21/82 * alpha**4 - 45/82 * alpha**3 - 25/41 * alpha**2 - 51/82 * alpha - 32/41 ) * beta - ( 45/82 * alpha**4 + 25/41 * alpha**3 + 51/82 * alpha**2 + 43/82 * alpha + 21/82 ) ) ) * delta - ( ( 39/82 * alpha**4 + 8/41 * alpha**3 - 5/82 * alpha**2 - 1/82 * alpha - 31/82 ) * beta * gamma + ( 11/82 * alpha**4 - 3/41 * alpha**3 + 7/82 * alpha**2 - 15/82 * alpha + 27/82 ) ) );
puts "f = " + str(f);
e = 1 / f;
puts "e = " + str(e);
g = e * f;
puts "g = " + str(g);
puts
terminate();
|