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

Diff for /OpenXM/src/asir-doc/parts/type.texi between version 1.5 and 1.14

version 1.5, 2000/01/26 01:37:33 version 1.14, 2016/03/22 07:25:14
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/type.texi,v 1.4 2000/01/20 03:00:34 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/type.texi,v 1.13 2007/02/15 02:41:38 noro Exp $
 \BJP  \BJP
 @node $B7?(B,,, Top  @node $B7?(B,,, Top
 @chapter $B7?(B  @chapter $B7?(B
Line 83  x  afo  (2.3*x+y)^10
Line 83  x  afo  (2.3*x+y)^10
   
 \BJP  \BJP
 $BB?9`<0$O(B, $BA4$FE83+$5$l(B, $B$=$N;~E@$K$*$1$kJQ?t=g=x$K=>$C$F(B, $B:F5"E*$K(B  $BB?9`<0$O(B, $BA4$FE83+$5$l(B, $B$=$N;~E@$K$*$1$kJQ?t=g=x$K=>$C$F(B, $B:F5"E*$K(B
 1 $BJQ?tB?9`<0$H$7$F9_QQ$N=g$K@0M}$5$l$k(B (@xref{$BJ,;6I=8=B?9`<0(B}).  1 $BJQ?tB?9`<0$H$7$F9_QQ$N=g$K@0M}$5$l$k(B. (@xref{$BJ,;6I=8=B?9`<0(B}.)
 $B$3$N;~(B, $B$=$NB?9`<0$K8=$l$k=g=x:GBg$NJQ?t$r(B @b{$B<gJQ?t(B} $B$H8F$V(B.  $B$3$N;~(B, $B$=$NB?9`<0$K8=$l$k=g=x:GBg$NJQ?t$r(B @b{$B<gJQ?t(B} $B$H8F$V(B.
 \E  \E
 \BEG  \BEG
 Every polynomial is maintained internally in its full expanded form,  Every polynomial is maintained internally in its full expanded form,
 represented as a nested univariate polynomial, according to the current  represented as a nested univariate polynomial, according to the current
 variable ordering, arranged by the descending order of exponents.  variable ordering, arranged by the descending order of exponents.
 (@xref{Distributed polynomial}).  (@xref{Distributed polynomial}.)
 In the representation, the indeterminate (or variable), appearing in  In the representation, the indeterminate (or variable), appearing in
 the polynomial, with maximum ordering is called the @b{main variable}.  the polynomial, with maximum ordering is called the @b{main variable}.
 Moreover, we call the coefficient of the maximum degree term of  Moreover, we call the coefficient of the maximum degree term of
Line 207  on the whole value of that vector.
Line 207  on the whole value of that vector.
 [1] for (I=0;I<3;I++)A3[I] = newvect(3);  [1] for (I=0;I<3;I++)A3[I] = newvect(3);
 [2] for (I=0;I<3;I++)for(J=0;J<3;J++)A3[I][J]=newvect(3);  [2] for (I=0;I<3;I++)for(J=0;J<3;J++)A3[I][J]=newvect(3);
 [3] A3;  [3] A3;
 [ [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ] [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ]  [ [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ]
   [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ]
 [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ] ]  [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ] ]
 [4] A3[0];  [4] A3[0];
 [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ]  [ [ 0 0 0 ] [ 0 0 0 ] [ 0 0 0 ] ]
Line 289  afotake
Line 290  afotake
 newstruct(afo)  newstruct(afo)
 @end example  @end example
   
 \JP $B9=B$BN$K4X$7$F$O(B, $B>O$r2~$a$F2r@b$9$kM=Dj$G$"$k(B.  \BJP
 \EG For type @b{structure}, we shall describe it in a later chapter.  Asir $B$K$*$1$k9=B$BN$O(B, C $B$K$*$1$k9=B$BN$r4J0W2=$7$?$b$N$G$"$k(B.
 (Not written yet.)  $B8GDjD9G[Ns$N3F@.J,$rL>A0$G%"%/%;%9$G$-$k%*%V%8%'%/%H$G(B,
   $B9=B$BNDj5AKh$KL>A0$r$D$1$k(B.
   \E
   
   \BEG
   The type @b{structure} is a simplified version of that in C language.
   It is defined as a fixed length array and each entry of the array
   is accessed by its name. A name is associated with each structure.
   \E
   
 \JP @item 9 @b{$BJ,;6I=8=B?9`<0(B}  \JP @item 9 @b{$BJ,;6I=8=B?9`<0(B}
 \EG @item 9 @b{distributed polynomial}  \EG @item 9 @b{distributed polynomial}
   
Line 347  This is used for basis conversion in finite fields of 
Line 356  This is used for basis conversion in finite fields of 
 \JP quantifier elimination $B$GMQ$$$i$l$k0l3,=R8lO@M}<0(B.  \JP quantifier elimination $B$GMQ$$$i$l$k0l3,=R8lO@M}<0(B.
 \EG This expresses a first order formula used in quantifier elimination.  \EG This expresses a first order formula used in quantifier elimination.
   
   @item 15 @b{matrix over GF(@var{p})}
   @*
   \JP $B>.I8?tM-8BBN>e$N9TNs(B.
   \EG A matrix over a small finite field.
   
   @item 16 @b{byte array}
   @*
   \JP $BId9f$J$7(B byte $B$NG[Ns(B
   \EG An array of unsigned bytes.
   
 \JP @item -1 @b{VOID $B%*%V%8%'%/%H(B}  \JP @item -1 @b{VOID $B%*%V%8%'%/%H(B}
 \EG @item -1 @b{VOID object}  \EG @item -1 @b{VOID object}
 @*  @*
Line 432  result shall be computed as a double float number.
Line 451  result shall be computed as a double float number.
 @b{bigfloat}  @b{bigfloat}
 @*  @*
 \BJP  \BJP
 @b{bigfloat} $B$O(B, @b{Asir} $B$G$O(B @b{PARI} $B%i%$%V%i%j$K$h$j(B  @b{bigfloat} $B$O(B, @b{Asir} $B$G$O(B @b{MPFR} $B%i%$%V%i%j$K$h$j(B
 $B<B8=$5$l$F$$$k(B. @b{PARI} $B$K$*$$$F$O(B, @b{bigfloat} $B$O(B, $B2>?tIt(B  $B<B8=$5$l$F$$$k(B. @b{MPFR} $B$K$*$$$F$O(B, @b{bigfloat} $B$O(B, $B2>?tIt(B
 $B$N$_G$0UB?G\D9$G(B, $B;X?tIt$O(B 1 $B%o!<%I0JFb$N@0?t$K8B$i$l$F$$$k(B.  $B$N$_G$0UB?G\D9$G(B, $B;X?tIt$O(B 64bit $B@0?t$G$"$k(B.
 @code{ctrl()} $B$G(B @b{bigfloat} $B$rA*Br$9$k$3$H$K$h$j(B, $B0J8e$NIbF0>.?t(B  @code{ctrl()} $B$G(B @b{bigfloat} $B$rA*Br$9$k$3$H$K$h$j(B, $B0J8e$NIbF0>.?t(B
 $B$NF~NO$O(B @b{bigfloat} $B$H$7$F07$o$l$k(B. $B@:EY$O%G%U%)%k%H$G$O(B  $B$NF~NO$O(B @b{bigfloat} $B$H$7$F07$o$l$k(B. $B@:EY$O%G%U%)%k%H$G$O(B
 10 $B?J(B 9 $B7eDxEY$G$"$k$,(B, @code{setprec()} $B$K$h$j;XDj2DG=$G$"$k(B.  10 $B?J(B 9 $B7eDxEY$G$"$k$,(B, @code{setprec()}, @code{setbprec()} $B$K$h$j;XDj2DG=$G$"$k(B.
 \E  \E
 \BEG  \BEG
 The @b{bigfloat} numbers of @b{Asir} is realized by @b{PARI} library.  The @b{bigfloat} numbers of @b{Asir} is realized by @b{MPFR} library.
 A @b{bigfloat} number of @b{PARI} has an arbitrary precision mantissa  A @b{bigfloat} number of @b{MPFR} has an arbitrary precision mantissa
 part.  However, its exponent part admits only an integer with a single  part.  However, its exponent part admits only a 64bit integer.
 word precision.  
 Floating point operations will be performed all in @b{bigfloat} after  Floating point operations will be performed all in @b{bigfloat} after
 activating the @b{bigfloat} switch by @code{ctrl()} command.  activating the @b{bigfloat} switch by @code{ctrl()} command.
 The default precision is about 9 digits, which can be specified by  The default precision is 53 bits (about 15 digits), which can be specified by
 @code{setprec()} command.  @code{setbprec()} and @code{setprec()} command.
 \E  \E
   
 @example  @example
 [0] ctrl("bigfloat",1);  [0] ctrl("bigfloat",1);
 1  1
 [1] eval(2^(1/2));  [1] eval(2^(1/2));
 1.414213562373095048763788073031  1.4142135623731
 [2] setprec(100);  [2] setprec(100);
 9  15
 [3] eval(2^(1/2));  [3] eval(2^(1/2));
 1.41421356237309504880168872420969807856967187537694807317654396116148  1.41421356237309504880168872420969807856967187537694...764157
   [4] setbprec(100);
   332
   [5] 1.41421356237309504880168872421
 @end example  @end example
   
 \BJP  \BJP
 @code{eval()} $B$O(B, $B0z?t$K4^$^$l$kH!?tCM$r2DG=$J8B$j?tCM2=$9$kH!?t$G$"$k(B.  @code{eval()} $B$O(B, $B0z?t$K4^$^$l$kH!?tCM$r2DG=$J8B$j?tCM2=$9$kH!?t$G$"$k(B.
 @code{setprec()} $B$G;XDj$5$l$?7e?t$O(B, $B7k2L$N@:EY$rJ]>Z$9$k$b$N$G$O$J$/(B,  @code{setbprec()} $B$G;XDj$5$l$?(B2 $B?J7e?t$O(B, $B4]$a%b!<%I$K1~$8$?7k2L$N@:EY$rJ]>Z$9$k(B. @code{setprec()} $B$G;XDj$5$l$k(B10$B?J7e?t$O(B 2 $B?J7e?t$KJQ49$5$l$F@_Dj$5$l$k(B.
 @b{PARI} $BFbIt$GMQ$$$i$l$kI=8=$N%5%$%:$r<($9$3$H$KCm0U$9$Y$-$G$"$k(B.  
 \E  \E
 \BEG  \BEG
 Function @code{eval()} evaluates numerically its argument as far as  Function @code{eval()} evaluates numerically its argument as far as
 possible.  possible.
 Notice that the integer given for the argument of @code{setprec()} does  Notice that the integer given for the argument of @code{setbprec()}
 not guarantee the accuracy of the result,  guarantees the accuracy of the result according to the current rounding mode.
 but it indicates the representation size of numbers with which internal  The argument of @code{setbprec()} is converted to the corresonding bit length
 operations of @b{PARI} are performed.  and set.
 \E  \E
 (@ref{eval}, @xref{pari})  (@xref{eval deval}.)
   
 @item 4  @item 4
 \JP @b{$BJ#AG?t(B}  \JP @b{$BJ#AG?t(B}
Line 545  g mod f $B$O(B, g, f  $B$r$"$i$o$9(B 2 $B$D$N%S%C
Line 566  g mod f $B$O(B, g, f  $B$r$"$i$o$9(B 2 $B$D$N%S%C
 \E  \E
 \BEG  \BEG
 This type expresses an element of a finite field of characteristic 2.  This type expresses an element of a finite field of characteristic 2.
 Let @var{F} be a finite field of characteristic 2. If @var{[F:GF(2)]}  Let @var{F} be a finite field of characteristic 2. If [F:GF(2)]
 is equal to @var{n}, then @var{F} is expressed as @var{F=GF(2)[t]/(f(t))},  is equal to @var{n}, then @var{F} is expressed as F=GF(2)[t]/(f(t)),
 where @var{f(t)} is an irreducible polynomial over @var{GF(2)}  where f(t) is an irreducible polynomial over GF(2)
 of degree @var{n}.  of degree @var{n}.
 As an element @var{g} of @var{GF(2)[t]} can be expressed by a bit string,  As an element @var{g} of GF(2)[t] can be expressed by a bit string,
 An element @var{g mod f} in @var{F} can be expressed by two bit strings  An element @var{g mod f} in @var{F} can be expressed by two bit strings
 representing @var{g} and @var{f} respectively.  representing @var{g} and @var{f} respectively.
 \E  \E
Line 567  representing @var{g} and @var{f} respectively.
Line 588  representing @var{g} and @var{f} respectively.
 $B$h$C$F(B, @@ $B$NB?9`<0$H$7$F(B F $B$N85$rF~NO$G$-$k(B. (@@^10+@@+1 $B$J$I(B)  $B$h$C$F(B, @@ $B$NB?9`<0$H$7$F(B F $B$N85$rF~NO$G$-$k(B. (@@^10+@@+1 $B$J$I(B)
 \E  \E
 \BEG  \BEG
 @code{@@} represents @var{t mod f} in @var{F=GF(2)[t](f(t))}.  @code{@@} represents @var{t mod f} in F=GF(2)[t](f(t)).
 By using @code{@@} one can input an element of @var{F}. For example  By using @code{@@} one can input an element of @var{F}. For example
 @code{@@^10+@@+1} represents an element of @var{F}.  @code{@@^10+@@+1} represents an element of @var{F}.
 \E  \E
Line 607  coefficients of a polynomial.
Line 628  coefficients of a polynomial.
 \E  \E
   
 @end itemize  @end itemize
   
   
   @item 8
   \JP @b{$B0L?t(B @var{p^n} $B$NM-8BBN$N85(B}
   \EG @b{element of a finite field of characteristic @var{p^n}}
   
   \BJP
   $B0L?t$,(B @var{p^n} (@var{p} $B$OG$0U$NAG?t(B, @var{n} $B$O@5@0?t(B) $B$O(B,
   $BI8?t(B @var{p} $B$*$h$S(B GF(@var{p}) $B>e4{Ls$J(B @var{n} $B<!B?9`<0(B m(x)
   $B$r(B @code{setmod_ff} $B$K$h$j;XDj$9$k$3$H$K$h$j@_Dj$9$k(B.
   $B$3$NBN$N85$O(B m(x) $B$rK!$H$9$k(B GF(@var{p}) $B>e$NB?9`<0$H$7$F(B
   $BI=8=$5$l$k(B.
   \E
   \BEG
   A finite field of order @var{p^n}, where @var{p} is an arbitrary prime
   and @var{n} is a positive integer, is set by @code{setmod_ff}
   by specifying its characteristic @var{p} and an irreducible polynomial
   of degree @var{n} over GF(@var{p}). An element of this field
   is represented by a polynomial over GF(@var{p}) modulo m(x).
   \E
   
   @item 9
   \JP @b{$B0L?t(B @var{p^n} $B$NM-8BBN$N85(B ($B>.0L?t(B)}
   \EG @b{element of a finite field of characteristic @var{p^n} (small order)}
   
   \BJP
   $B0L?t$,(B @var{p^n} $B$NM-8BBN(B (@var{p^n} $B$,(B @var{2^29} $B0J2<(B, @var{p} $B$,(B @var{2^14} $B0J>e(B
   $B$J$i(B @var{n} $B$O(B 1) $B$O(B,
   $BI8?t(B @var{p} $B$*$h$S3HBg<!?t(B @var{n}
   $B$r(B @code{setmod_ff} $B$K$h$j;XDj$9$k$3$H$K$h$j@_Dj$9$k(B.
   $B$3$NBN$N(B 0 $B$G$J$$85$O(B, @var{p} $B$,(B @var{2^14} $BL$K~$N>l9g(B,
   GF(@var{p^n}) $B$N>hK!72$N@8@.85$r8GDj$9$k$3$H(B
   $B$K$h$j(B, $B$3$N85$N$Y$-$H$7$FI=$5$l$k(B. $B$3$l$K$h$j(B, $B$3$NBN$N(B 0 $B$G$J$$85(B
   $B$O(B, $B$3$N$Y$-;X?t$H$7$FI=8=$5$l$k(B. @var{p} $B$,(B @var{2^14} $B0J>e(B
   $B$N>l9g$ODL>o$N>jM>$K$h$kI=8=$H$J$k$,(B, $B6&DL$N%W%m%0%i%`$G(B
   $BAPJ}$N>l9g$r07$($k$h$&$K$3$N$h$&$J;EMM$H$J$C$F$$$k(B.
   
   \E
   \BEG
   A finite field of order @var{p^n}, where @var{p^n} must be less than
   @var{2^29} and @var{n} must be equal to 1 if @var{p} is greater or
   equal to @var{2^14},
   is set by @code{setmod_ff}
   by specifying its characteristic @var{p} the extension degree
   @var{n}. If @var{p} is less than @var{2^14}, each non-zero element
   of this field
   is a power of a fixed element, which is a generator of the multiplicative
   group of the field, and it is represented by its exponent.
   Otherwise, each element is represented by the redue modulo @var{p}.
   This specification is useful for treating both cases in a single
   program.
   \E
   
   @item 10
   \JP @b{$B0L?t(B @var{p^n} $B$N>.0L?tM-8BBN$NBe?t3HBg$N85(B}
   \EG @b{element of a finite field which is an algebraic extension of a small finite field of characteristic @var{p^n}}
   
   \BJP
   $BA09`$N(B, $B0L?t$,(B @var{p^n} $B$N>.0L?tM-8BBN$N(B @var{m} $B<!3HBg$N85$G$"$k(B.
   $BI8?t(B @var{p} $B$*$h$S3HBg<!?t(B @var{n}, @var{m}
   $B$r(B @code{setmod_ff} $B$K$h$j;XDj$9$k$3$H$K$h$j@_Dj$9$k(B. $B4pACBN>e$N(B @var{m}
   $B<!4{LsB?9`<0$,<+F0@8@.$5$l(B, $B$=$NBe?t3HBg$N@8@.85$NDj5AB?9`<0$H$7$FMQ$$$i$l$k(B.
   $B@8@.85$O(B @code{@@s} $B$G$"$k(B.
   
   \E
   \BEG
   An extension field @var{K} of the small finite field @var{F} of order @var{p^n}
   is set by @code{setmod_ff}
   by specifying its characteristic @var{p} the extension degree
   @var{n} and @var{m}=[@var{K}:@var{F}]. An irreducible polynomial of degree @var{m}
   over @var{K} is automatically generated and used as the defining polynomial of
   the generator of the extension @var{K/F}. The generator is denoted by @code{@@s}.
   \E
   
   @item 11
   \JP @b{$BJ,;6I=8=$NBe?tE*?t(B}
   \EG @b{algebraic number represented by a distributed polynomial}
   @*
   \JP @xref{$BBe?tE*?t$K4X$9$k1i;;(B}.
   \EG @xref{Algebraic numbers}.
   
   \BJP
   
   \E
   \BEG
   \E
 @end table  @end table
   
 \BJP  \BJP
 $BBgI8?tAGBN$NI8?t(B, $BI8?t(B 2 $B$NM-8BBN$NDj5AB?9`<0$O(B, @code{setmod_ff}  $B>.I8?tM-8BAGBN0J30$NM-8BBN$O(B @code{setmod_ff} $B$G@_Dj$9$k(B.
 $B$G@_Dj$9$k(B.  $BM-8BBN$N85$I$&$7$N1i;;$G$O(B,
 $BM-8BBN$N85$I$&$7$N1i;;$G$O(B, @code{setmod_ff} $B$K$h$j@_Dj$5$l$F$$$k(B  
 modulus $B$G(B, $BB0$9$kBN$,J,$+$j(B, $B$=$NCf$G1i;;$,9T$o$l$k(B.  
 $B0lJ}$,M-M}?t$N>l9g$K$O(B, $B$=$NM-M}?t$O<+F0E*$K8=:_@_Dj$5$l$F$$$k(B  $B0lJ}$,M-M}?t$N>l9g$K$O(B, $B$=$NM-M}?t$O<+F0E*$K8=:_@_Dj$5$l$F$$$k(B
 $BM-8BBN$N85$KJQ49$5$l(B, $B1i;;$,9T$o$l$k(B.  $BM-8BBN$N85$KJQ49$5$l(B, $B1i;;$,9T$o$l$k(B.
 \E  \E
 \BEG  \BEG
 The characteristic of a large finite prime field and the defining  Finite fields other than small finite prime fields are
 polynomial of a finite field of characteristic 2 are set by @code{setmod_ff}.  set by @code{setmod_ff}.
 Elements of finite fields do not have informations about the modulus.  Elements of finite fields do not have informations about the modulus.
 Upon an arithmetic operation, the modulus set by @code{setmod_ff} is  Upon an arithmetic operation, i
 used. If one of the operands is a rational number, it is automatically  f one of the operands is a rational number, it is automatically
 converted into an element of the finite field currently set and  converted into an element of the finite field currently set and
 the operation is done in the finite field.  the operation is done in the finite field.
 \E  \E
Line 739  sin(x)
Line 844  sin(x)
 \EG @b{functor}  \EG @b{functor}
 @*  @*
 \BJP  \BJP
 $BH!?t8F$S=P$7$O(B, @var{fname(args)} $B$H$$$&7A$G9T$J$o$l$k$,(B, @var{fname} $B$N(B  $BH!?t8F$S=P$7$O(B, @var{fname}(@var{args}) $B$H$$$&7A$G9T$J$o$l$k$,(B, @var{fname} $B$N(B
 $BItJ,$rH!?t;R$H8F$V(B. $BH!?t;R$K$O(B, $BH!?t$N<oN`$K$h$jAH$_9~$_H!?t;R(B,  $BItJ,$rH!?t;R$H8F$V(B. $BH!?t;R$K$O(B, $BH!?t$N<oN`$K$h$jAH$_9~$_H!?t;R(B,
 $B%f!<%6Dj5AH!?t;R(B, $B=iEyH!?t;R$J$I$,$"$k$,(B, $BH!?t;R$OC1FH$GITDj85$H$7$F(B  $B%f!<%6Dj5AH!?t;R(B, $B=iEyH!?t;R$J$I$,$"$k$,(B, $BH!?t;R$OC1FH$GITDj85$H$7$F(B
 $B5!G=$9$k(B.  $B5!G=$9$k(B.
 \E  \E
 \BEG  \BEG
 A function call (or a function form) has a form @var{fname(args)}.  A function call (or a function form) has a form @var{fname}(@var{args}).
 Here, @var{fname} alone is called a @b{functor}.  Here, @var{fname} alone is called a @b{functor}.
 There are several kinds of @b{functor}s: built-in functor, user defined  There are several kinds of @b{functor}s: built-in functor, user defined
 functor and functor for the elementary functions.  A functor alone is  functor and functor for the elementary functions.  A functor alone is

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.14

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