=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/type.texi,v retrieving revision 1.7 retrieving revision 1.14 diff -u -p -r1.7 -r1.14 --- OpenXM/src/asir-doc/parts/type.texi 2000/11/13 00:16:35 1.7 +++ OpenXM/src/asir-doc/parts/type.texi 2016/03/22 07:25:14 1.14 @@ -1,4 +1,4 @@ -@comment $OpenXM: OpenXM/src/asir-doc/parts/type.texi,v 1.6 2000/09/23 07:53:25 noro Exp $ +@comment $OpenXM: OpenXM/src/asir-doc/parts/type.texi,v 1.13 2007/02/15 02:41:38 noro Exp $ \BJP @node $B7?(B,,, Top @chapter $B7?(B @@ -83,14 +83,14 @@ x afo (2.3*x+y)^10 \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 -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.I8?tM-8BBN>e$N9TNs(B. \EG A matrix over a small finite field. @@ -450,49 +451,51 @@ result shall be computed as a double float number. @b{bigfloat} @* \BJP -@b{bigfloat} $B$O(B, @b{Asir} $B$G$O(B @b{PARI} $B%i%$%V%i%j$K$h$j(B -$B?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{bigfloat} $B$O(B, @b{Asir} $B$G$O(B @b{MPFR} $B%i%$%V%i%j$K$h$j(B +$B?tIt(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 $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 \BEG -The @b{bigfloat} numbers of @b{Asir} is realized by @b{PARI} library. -A @b{bigfloat} number of @b{PARI} has an arbitrary precision mantissa -part. However, its exponent part admits only an integer with a single -word precision. +The @b{bigfloat} numbers of @b{Asir} is realized by @b{MPFR} library. +A @b{bigfloat} number of @b{MPFR} has an arbitrary precision mantissa +part. However, its exponent part admits only a 64bit integer. Floating point operations will be performed all in @b{bigfloat} after activating the @b{bigfloat} switch by @code{ctrl()} command. -The default precision is about 9 digits, which can be specified by -@code{setprec()} command. +The default precision is 53 bits (about 15 digits), which can be specified by +@code{setbprec()} and @code{setprec()} command. \E @example [0] ctrl("bigfloat",1); 1 [1] eval(2^(1/2)); -1.414213562373095048763788073031 +1.4142135623731 [2] setprec(100); -9 +15 [3] eval(2^(1/2)); -1.41421356237309504880168872420969807856967187537694807317654396116148 +1.41421356237309504880168872420969807856967187537694...764157 +[4] setbprec(100); +332 +[5] 1.41421356237309504880168872421 @end example \BJP @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, -@b{PARI} $BFbIt$GMQ$$$i$l$kI=8=$N%5%$%:$r<($9$3$H$KCm0U$9$Y$-$G$"$k(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. + \E \BEG Function @code{eval()} evaluates numerically its argument as far as possible. -Notice that the integer given for the argument of @code{setprec()} does -not guarantee the accuracy of the result, -but it indicates the representation size of numbers with which internal -operations of @b{PARI} are performed. +Notice that the integer given for the argument of @code{setbprec()} +guarantees the accuracy of the result according to the current rounding mode. +The argument of @code{setbprec()} is converted to the corresonding bit length +and set. \E -(@ref{eval}, @xref{pari}) +(@xref{eval deval}.) @item 4 \JP @b{$BJ#AG?t(B} @@ -563,11 +566,11 @@ g mod f $B$O(B, g, f $B$r$"$i$o$9(B 2 $B$D$N%S%C \E \BEG 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)]} -is equal to @var{n}, then @var{F} is expressed as @var{F=GF(2)[t]/(f(t))}, -where @var{f(t)} is an irreducible polynomial over @var{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 F=GF(2)[t]/(f(t)), +where f(t) is an irreducible polynomial over GF(2) 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 representing @var{g} and @var{f} respectively. \E @@ -585,7 +588,7 @@ 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) \E \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 @code{@@^10+@@+1} represents an element of @var{F}. \E @@ -625,22 +628,106 @@ coefficients of a polynomial. \E @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} $Be$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$S3HBgl9g(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} $Be$N(B @var{m} +$B.I8?tM-8BAGBN0J30$NM-8BBN$O(B @code{setmod_ff} $B$G@_Dj$9$k(B. +$BM-8BBN$N85$I$&$7$N1i;;$G$O(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. \E \BEG -The characteristic of a large finite prime field and the defining -polynomial of a finite field of characteristic 2 are set by @code{setmod_ff}. +Finite fields other than small finite prime fields are +set by @code{setmod_ff}. Elements of finite fields do not have informations about the modulus. -Upon an arithmetic operation, the modulus set by @code{setmod_ff} is -used. If one of the operands is a rational number, it is automatically +Upon an arithmetic operation, i +f one of the operands is a rational number, it is automatically converted into an element of the finite field currently set and the operation is done in the finite field. \E @@ -757,13 +844,13 @@ sin(x) \EG @b{functor} @* \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