[BACK]Return to algnum.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / parts

Diff for /OpenXM/src/asir-doc/parts/algnum.texi between version 1.6 and 1.8

version 1.6, 2003/04/19 15:44:55 version 1.8, 2007/02/15 02:41:38
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/algnum.texi,v 1.5 2000/09/23 07:53:24 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/algnum.texi,v 1.7 2003/04/20 08:01:24 noro Exp $
 \BJP  \BJP
 @node $BBe?tE*?t$K4X$9$k1i;;(B,,, Top  @node $BBe?tE*?t$K4X$9$k1i;;(B,,, Top
 @chapter $BBe?tE*?t$K4X$9$k1i;;(B  @chapter $BBe?tE*?t$K4X$9$k1i;;(B
Line 11 
Line 11 
 @menu  @menu
 \BJP  \BJP
 * $BBe?tE*?t$NI=8=(B::  * $BBe?tE*?t$NI=8=(B::
   * $BJ,;6B?9`<0$K$h$kBe?tE*?t$NI=8=(B::
 * $BBe?tE*?t$N1i;;(B::  * $BBe?tE*?t$N1i;;(B::
 * $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B::  * $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B::
 * $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B::  * $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B::
 \E  \E
 \BEG  \BEG
 * Representation of algebraic numbers::  * Representation of algebraic numbers::
   * Representation of algebraic numbers by distributed polynomials::
 * Operations over algebraic numbers::  * Operations over algebraic numbers::
 * Operations for uni-variate polynomials over an algebraic number field::  * Operations for uni-variate polynomials over an algebraic number field::
 * Summary of functions for algebraic numbers::  * Summary of functions for algebraic numbers::
Line 237  t#0
Line 239  t#0
 [100]  [100]
 @end example  @end example
   
   
   @example
   @end example
   
 \BJP  \BJP
 @node $BBe?tE*?t$N1i;;(B,,, $BBe?tE*?t$K4X$9$k1i;;(B  @node $BBe?tE*?t$N1i;;(B,,, $BBe?tE*?t$K4X$9$k1i;;(B
 @section $BBe?tE*?t$N1i;;(B  @section $BBe?tE*?t$N1i;;(B
Line 410  into the @b{root} by @code{rattoalgp()} function.
Line 416  into the @b{root} by @code{rattoalgp()} function.
   
 @example  @example
 [88] rattoalgp(S,[alg(0)]);  [88] rattoalgp(S,[alg(0)]);
 (((#0+2)/(#0+2))*t#1^2+((#0^2+2*#0)/(#0+2))*t#1+((2*#0^2+4*#0)/(#0+2)))*x  (((#0+2)/(#0+2))*t#1^2+((#0^2+2*#0)/(#0+2))*t#1
 +((1)/(#0+2))*t#1+((1)/(#0+2))  +((2*#0^2+4*#0)/(#0+2)))*x+((1)/(#0+2))*t#1+((1)/(#0+2))
 [89] rattoalgp(S,[alg(0),alg(1)]);  [89] rattoalgp(S,[alg(0),alg(1)]);
 (((#0^3+6*#0^2+12*#0+8)*#1^2+(#0^4+6*#0^3+12*#0^2+8*#0)*#1+2*#0^4+12*#0^3  (((#0^3+6*#0^2+12*#0+8)*#1^2+(#0^4+6*#0^3+12*#0^2+8*#0)*#1
 +24*#0^2+16*#0)/(#0^3+6*#0^2+12*#0+8))*x+(((#0+2)*#1+#0+2)/(#0^2+4*#0+4))  +2*#0^4+12*#0^3+24*#0^2+16*#0)/(#0^3+6*#0^2+12*#0+8))*x
   +(((#0+2)*#1+#0+2)/(#0^2+4*#0+4))
 [90] rattoalgp(S,[alg(1),alg(0)]);  [90] rattoalgp(S,[alg(1),alg(0)]);
 (((#0+2)*#1^2+(#0^2+2*#0)*#1+2*#0^2+4*#0)/(#0+2))*x+((#1+1)/(#0+2))  (((#0+2)*#1^2+(#0^2+2*#0)*#1+2*#0^2+4*#0)/(#0+2))*x
   +((#1+1)/(#0+2))
 [91] simpalg(@@89);  [91] simpalg(@@89);
 (#1^2+#0*#1+2*#0)*x+((-1/5*#0+2/5)*#1-1/5*#0+2/5)  (#1^2+#0*#1+2*#0)*x+((-1/5*#0+2/5)*#1-1/5*#0+2/5)
 [92] simpalg(@@90);  [92] simpalg(@@90);
Line 444  used for your own simplification.
Line 452  used for your own simplification.
 \E  \E
   
 \BJP  \BJP
   @node $BJ,;6B?9`<0$K$h$kBe?tE*?t$NI=8=(B,,, $BBe?tE*?t$K4X$9$k1i;;(B
   @section $BJ,;6B?9`<0$K$h$kBe?tE*?t$NI=8=(B
   \E
   \BEG
   @node Representation of algebraic numbers by distributed polynomials,,, Algebraic numbers
   @section Representation of algebraic numbers by distributed polynomials
   \E
   
   @noindent
   \BJP
   $BA0@a$G=R$Y$?$h$&$K(B, @code{root} $B$r4^$`Be?tE*?t$KBP$9$k4JC12=$O(B
   $B%f!<%6$NH=CG$G9T$&I,MW$,$"$k(B. $B$3$l$KBP$7(B, $B$3$3$G2r@b$9$k$b$&0l$D$NBe?tE*?t$N(B
   $BI=8=$K$D$$$F$O(B, $B2C8:>h=|(B, $B%Y%-$J$I$r9T$C$?$"$H<+F0E*$K4JC12=$,9T$o$l$k(B.
   $B$3$NI=8=$O(B, $BC`<!3HBg$N>l9g$KFC$K8zN($h$/7W;;$,9T$o$l$k$h$&@_7W$5$l$F$*$j(B,
   $B%0%l%V%J!<4pDl4X78$N4X?t$K$*$1$k78?tBN$H$7$FMQ$$$k$3$H$,$G$-$k(B. $B$3$NI=8=$O(B
   $BFbItE*$K$O(B, @code{DAlg} $B$H8F$P$l$k%*%V%8%'%/%H$H$7$FDj5A$5$l$F$$$k(B.
   @code{DAlg} $B$OJ,?t<0$N7A$GJ];}$5$l$k(B. $BJ,Jl$O@0?t(B, $BJ,;R$O@0?t78?t$NJ,;6B?9`<0$G$"$k(B.
   \E
   \BEG
   Simplification of algebraic numbers containing @code{root}
   is not done automatically and should be done by users.
   There is another representation of algebraic numbers, for which the
   results of fundamental operations are automatically simplified.
   This representations are designed so that operations are efficiently
   performed especially when the field is a successive extension and
   it can be used as a ground field for Groebner basis related functions.
   Internally an algebraic number of this type is defined as an object
   called @code{DAlg}. A @code{DAlg} is represented as a fraction. The
   denominator is an integer and the numerator is a distributed polynomial
   with integral coefficients.
   \E
   
   \BJP
   @code{DAlg} $B$O!$(B@code{set_field()} $B$K$h$j$"$i$+$8$a@_Dj$5$l$?Be?tBN$N(B
   $B85$H$7$F@8@.$5$l$k(B. $B@8@.J}K!$O(B, @code{newalg()} $B$G@8@.$5$l$?Be?tE*?t$r(B
   $B4^$`?t$+$i(B @code{algtodalg()} $B$GJQ49$9$k(B, $B$"$k$$$OJ,;6B?9`<0$+$iD>@\(B
   @code{dptodalg()} $B$GJQ49$9$k!$$N(B 2 $BDL$j$"$k(B.
   $B0lC6(B @code{DAlg} $B7A<0$KJQ49$5$l$l$P(B, $B1i;;8e$K<+F0E*$K4JC12=$5$l$k(B.
   \E
   \BEG
   @code{DAlg} is generated as an element of an algebraic number field
   set by @code{set_field()}. There are two methods to generate a @code{DAlg}.
   @code{algtodalg()} converts an algebraic number containing @code{root}
   to @code{DAlg}. @code{dptodalg()} directly converts a distributed polynomial to
   @code{DAlg}.
   \E
   @example
   [0] A=newalg(x^2+1);
   (#0)
   [1] B=newalg(x^3+A*x+A);
   (#1)
   [2] set_field([B,A]);
   0
   [3] C=algtodalg(A+B);
   ((1)*<<1,0>>+(1)*<<0,1>>)
   [4] C^5;
   ((-11)*<<2,1>>+(5)*<<2,0>>+(10)*<<1,1>>+(9)*<<1,0>>+(11)*<<0,1>>
   +(-1)*<<0,0>>)
   [5] 1/C;
   ((2)*<<2,1>>+(-1)*<<2,0>>+(1)*<<1,1>>+(2)*<<1,0>>+(-3)*<<0,1>>
   +(-1)*<<0,0>>)/5
   @end example
   \BJP
   $B$3$NNc$G$O(B, Q(a,b) (a^2+1=0, b^3+ab+b=0) $B$K$*$$$F(B, (a+b)^5 $B$*$h$S(B 1/(a+b) $B$r(B
   $B7W;;(B ($B4JC12=(B) $B$7$F$$$k(B. $BJ,;R$G$"$kJ,;6B?9`<0$NI=<($O(B, $BJ,;6B?9`<0$NI=<($r$=$N$^$^N.MQ$7$F$$$k(B.
   \E
   \BEG
   In this example Q(a,b) (a^2+1=0, b^3+ab+b=0) is set as the current ground field,
   and (a+b)^5 and 1/(a+b) are simplified in the field. The numerators of the results
   are printed as distributed polynomials.
   \E
   
   \BJP
 @node $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B,,, $BBe?tE*?t$K4X$9$k1i;;(B  @node $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B,,, $BBe?tE*?t$K4X$9$k1i;;(B
 @section $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B  @section $BBe?tBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B
 \E  \E
Line 499  where the ground field is a multiple extension.
Line 580  where the ground field is a multiple extension.
 (#0)  (#0)
 [64] B=newalg(75*s^2+(10*A^7-175*A^4-470*A)*s+3*A^8-45*A^5-261*A^2);  [64] B=newalg(75*s^2+(10*A^7-175*A^4-470*A)*s+3*A^8-45*A^5-261*A^2);
 (#1)  (#1)
 [65] P1=75*x^2+(150*B+10*A^7-175*A^4-395*A)*x+(75*B^2+(10*A^7-175*A^4-395*A)*B  [65] P1=75*x^2+(150*B+10*A^7-175*A^4-395*A)*x
 +13*A^8-220*A^5-581*A^2)$  +(75*B^2+(10*A^7-175*A^4-395*A)*B+13*A^8-220*A^5-581*A^2)$
 [66] P2=x^2+A*x+A^2$  [66] P2=x^2+A*x+A^2$
 [67] cr_gcda(P1,P2);  [67] cr_gcda(P1,P2);
 27*x+((#0^6-19*#0^3-65)*#1-#0^7+19*#0^4+38*#0)  27*x+((#0^6-19*#0^3-65)*#1-#0^7+19*#0^4+38*#0)
Line 531  The function to do this factorization is @code{asq()}.
Line 612  The function to do this factorization is @code{asq()}.
 [116] A=newalg(x^2+x+1);  [116] A=newalg(x^2+x+1);
 (#4)  (#4)
 [117] T=simpalg((x+A+1)*(x^2-2*A-3)^2*(x^3-x-A)^2);  [117] T=simpalg((x+A+1)*(x^2-2*A-3)^2*(x^3-x-A)^2);
 x^11+(#4+1)*x^10+(-4*#4-8)*x^9+(-10*#4-4)*x^8+(16*#4+20)*x^7+(24*#4-6)*x^6  x^11+(#4+1)*x^10+(-4*#4-8)*x^9+(-10*#4-4)*x^8+(16*#4+20)*x^7
 +(-29*#4-31)*x^5+(-15*#4+28)*x^4+(38*#4+29)*x^3+(#4-23)*x^2+(-21*#4-7)*x  +(24*#4-6)*x^6+(-29*#4-31)*x^5+(-15*#4+28)*x^4+(38*#4+29)*x^3
 +(3*#4+8)  +(#4-23)*x^2+(-21*#4-7)*x+(3*#4+8)
 [118] asq(T);  [118] asq(T);
 [[x^5+(-2*#4-4)*x^3+(-#4)*x^2+(2*#4+3)*x+(#4-2),2],[x+(#4+1),1]]  [[x^5+(-2*#4-4)*x^3+(-#4)*x^2+(2*#4+3)*x+(#4-2),2],[x+(#4+1),1]]
 @end example  @end example
Line 641  The function is @code{sp()}.
Line 722  The function is @code{sp()}.
   
 @example  @example
 [103] sp(x^5-2);  [103] sp(x^5-2);
 [[x+(-#1),2*x+(#0^3*#1^3+#0^4*#1^2+2*#1+2*#0),2*x+(-#0^4*#1^2),2*x  [[x+(-#1),2*x+(#0^3*#1^3+#0^4*#1^2+2*#1+2*#0),2*x+(-#0^4*#1^2),
 +(-#0^3*#1^3),x+(-#0)],[[(#1),t#1^4+t#0*t#1^3+t#0^2*t#1^2+t#0^3*t#1+t#0^4],  2*x+(-#0^3*#1^3),x+(-#0)],
 [(#0),t#0^5-2]]]  [[(#1),t#1^4+t#0*t#1^3+t#0^2*t#1^2+t#0^3*t#1+t#0^4],[(#0),t#0^5-2]]]
 @end example  @end example
   
 @noindent  @noindent
Line 708  may yield a polynomial which differs by a constant.
Line 789  may yield a polynomial which differs by a constant.
 * sp_norm::  * sp_norm::
 * asq af af_noalg::  * asq af af_noalg::
 * sp sp_noalg::  * sp sp_noalg::
   * set_field::
   * algtodalg dalgtoalg dptodalg dalgtodp::
 @end menu  @end menu
   
 \JP @node newalg,,, $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B  \JP @node newalg,,, $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B
Line 1405  is a list containing only integral polynomials.
Line 1488  is a list containing only integral polynomials.
 \E  \E
 \BEG  \BEG
 The splitting field is represented as a list of pairs of form  The splitting field is represented as a list of pairs of form
 @code{[root,algptorat(defpoly(root))]}.  @code{[root,} @code{algptorat(defpoly(root))]}.
 In more detail, the list is interpreted as a representation  In more detail, the list is interpreted as a representation
 of successive extension obtained by adjoining @b{root}'s  of successive extension obtained by adjoining @b{root}'s
 to the rational number field.  Adjoining is performed from the right  to the rational number field.  Adjoining is performed from the right
Line 1432  the builtin function @code{res()} is always used.
Line 1515  the builtin function @code{res()} is always used.
   
 @example  @example
 [101] L=sp(x^9-54);  [101] L=sp(x^9-54);
 [[x+(-#2),-54*x+(#1^6*#2^4),54*x+(#1^6*#2^4+54*#2),54*x+(-#1^8*#2^2),  [[x+(-#2),-54*x+(#1^6*#2^4),54*x+(#1^6*#2^4+54*#2),
 -54*x+(#1^5*#2^5),54*x+(#1^5*#2^5+#1^8*#2^2),-54*x+(-#1^7*#2^3-54*#1),  54*x+(-#1^8*#2^2),-54*x+(#1^5*#2^5),54*x+(#1^5*#2^5+#1^8*#2^2),
 54*x+(-#1^7*#2^3),x+(-#1)],[[(#2),t#2^6+t#1^3*t#2^3+t#1^6],[(#1),t#1^9-54]]]  -54*x+(-#1^7*#2^3-54*#1),54*x+(-#1^7*#2^3),x+(-#1)],
   [[(#2),t#2^6+t#1^3*t#2^3+t#1^6],[(#1),t#1^9-54]]]
 [102] for(I=0,M=1;I<9;I++)M*=L[0][I];  [102] for(I=0,M=1;I<9;I++)M*=L[0][I];
 [111] M=simpalg(M);  [111] M=simpalg(M);
 -1338925209984*x^9+72301961339136  -1338925209984*x^9+72301961339136
Line 1448  the builtin function @code{res()} is always used.
Line 1532  the builtin function @code{res()} is always used.
 @fref{asq af af_noalg}, @fref{defpoly}, @fref{algptorat}, @fref{sp_norm}.  @fref{asq af af_noalg}, @fref{defpoly}, @fref{algptorat}, @fref{sp_norm}.
 @end table  @end table
   
   \JP @node set_field,,, $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B
   \EG @node set_field,,, Summary of functions for algebraic numbers
   @subsection @code{set_field}
   @findex set_field
   
   @table @t
   @item set_field(@var{rootlist})
   \JP :: $BBe?tBN$r4pACBN$H$7$F@_Dj$9$k(B.
   \EG :: Set an algebraic number field as the currernt ground field.
   @end table
   
   @table @var
   @item return
   0
   @item rootlist
   \JP @code{root} $B$N%j%9%H(B
   \EG A list of @code{root}
   @end table
   
   @itemize @bullet
   @item
   \JP @code{root} $B$N%j%9%H(B @var{rootlist} $B$G@8@.$5$l$kBe?tBN$r4pACBN$H$7$F@_Dj$9$k(B.
   \BEG
   @code{set_field()} sets an algebraic number field generated by @code{root} in
   @var{rootlist} over Q.
   \E
   @item
   \BJP
   @code{root} $B$OFbItE*$K=g=x$E$1$i$l$F$$$k$N$G(B, @var{rootlist} $B$O=89g$H$7$F;XDj(B
   $B$9$l$P$h$$(B. ($B=g=x$O5$$K$7$J$/$F$h$$(B.)
   \E
   \BEG
   You don't care about the order of @code{root} in @var{rootlist}, because
   @code{root} are automatically ordered internally.
   \E
   @end itemize
   
   @example
   [0] A=newalg(x^2+1);
   (#0)
   [1] B=newalg(x^3+A);
   (#1)
   [2] C=newalg(x^4+B);
   (#1)
   [3] set_field([C,B,A]);
   0
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item Reference
   @fref{algtodalg dalgtoalg dptodalg dalgtodp}
   @end table
   
   \JP @node algtodalg dalgtoalg dptodalg dalgtodp,,, $BBe?tE*?t$K4X$9$kH!?t$N$^$H$a(B
   \EG @node algtodalg dalgtoalg dptodalg dalgtodp,,, Summary of functions for algebraic numbers
   @subsection @code{algtodalg}, @code{dalgtoalg}, @code{dptodalg}, @code{dalgtodp}
   @findex algtodalg
   @findex dalgtoalg
   @findex dpodalg
   @findex dalgtodp
   
   @table @t
   @item algtodalg(@var{alg})
   \JP :: $BBe?tE*?t(B @var{alg} $B$r(B @code{DAlg} $B$KJQ49$9$k(B.
   \EG :: Converts an algebraic number @var{alg} to a @code{DAlg}.
   @item dalgtoalg(@var{dalg})
   \JP :: @code{DAlg} @code{dalg} $B$rBe?tE*?t$KJQ49$9$k(B.
   \EG :: Converts a @code{DAlg} @code{dalg} to an algebraic number.
   @item dptodalg(@var{dp})
   \JP :: $BJ,;6B?9`<0(B @var{dp} $B$r(B @code{DAlg} $B$KJQ49$9$k(B.
   \EG :: Converts an algebraic number @var{alg} to a @code{DAlg}.
   @item dalgtodp(@var{dalg})
   \JP :: @code{DAlg} @code{dalg} $B$rJ,;6B?9`<0$KJQ49$9$k(B.
   \EG :: Converts a @code{DAlg} @code{dalg} to an algebraic number.
   @end table
   
   @table @var
   @item return
   \JP $BBe?tE*?t(B, @code{DAlg} $B$^$?$O(B [$BJ,;6B?9`<0(B,$BJ,Jl(B] $B$J$k%j%9%H(B
   \EG An algebraic number, a @code{DAlg} or a list [distributed polynomial,denominator]
   @item alg
   \JP  @code{root} $B$r4^$`Be?tE*?t(B
   \EG an algebraic number containing @code{root}
   @item dp
   \JP  $BM-M}?t78?tJ,;6B?9`<0(B
   \EG a distributed polynomial over Q
   @end table
   
   @itemize @bullet
   @item
   \JP @code{root} $B$r4^$`Be?tE*?t(B, @code{DAlg} $B$*$h$SJ,;6B?9`<04V$NJQ49$r9T$&(B.
   \BEG
   These functions are converters between @code{DAlg} and an algebraic number
   containing @code{root}, or a distributed polynomial.
   \E
   @item
   \BJP
   @code{DAlg} $B$,B0$9$Y$-Be?tBN$O(B, @code{set_field()} $B$K$h$j(B
   $B$"$i$+$8$a@_Dj$7$F$*$/I,MW$,$"$k(B.
   \E
   \BEG
   A ground field to which a @code{DAlg} belongs must be set by @code{set_field()}
   in advance.
   \E
   @item
   \BJP
   @code{dalgtodp()} $B$O(B, $BJ,;R$G$"$k@0?t78?tJ,;6B?9`<0$H(B, $BJ,Jl$G$"$k@0?t$rMWAG$K;}$D(B
   $B%j%9%H$rJV$9(B.
   \E
   \BEG
   @code{dalgtodp()} returns a list containing the numerator (a distributed polynomial)
   and the denominator (an integer).
   \E
   @item
   \BJP
   @code{algtodalg()}, @code{dptodalg()} $B$O4JC12=$5$l$?7k2L$rJV$9(B.
   \E
   \BEG
   @code{algtodalg()}, @code{dptodalg()} return the simplified result.
   \E
   @end itemize
   
   @example
   [0] A=newalg(x^2+1);
   (#0)
   [1] B=newalg(x^3+A*x+A);
   (#1)
   [2] set_field([B,A]);
   0
   [3] C=algtodalg((A+B)^10);
   ((408)*<<2,1>>+(103)*<<2,0>>+(-36)*<<1,1>>+(-446)*<<1,0>>
   +(-332)*<<0,1>>+(-218)*<<0,0>>)
   [4] dalgtoalg(C);
   ((408*#0+103)*#1^2+(-36*#0-446)*#1-332*#0-218)
   [5] D=dptodalg(<<10,10>>/10+2*<<5,5>>+1/3*<<0,0>>);
   ((-9)*<<2,1>>+(57)*<<2,0>>+(-63)*<<1,1>>+(-12)*<<1,0>>
   +(-60)*<<0,1>>+(1)*<<0,0>>)/30
   [6] dalgtodp(D);
   [(-9)*<<2,1>>+(57)*<<2,0>>+(-63)*<<1,1>>+(-12)*<<1,0>>
   +(-60)*<<0,1>>+(1)*<<0,0>>,30]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item Reference
   @fref{set_field}
   @end table

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>