version 1.8, 2001/03/12 05:01:18 |
version 1.14, 2016/03/22 07:25:14 |
|
|
@comment $OpenXM: OpenXM/src/asir-doc/parts/type.texi,v 1.7 2000/11/13 00:16:35 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 355 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(p)} |
@item 15 @b{matrix over GF(@var{p})} |
@* |
@* |
\JP $B>.I8?tM-8BBN>e$N9TNs(B. |
\JP $B>.I8?tM-8BBN>e$N9TNs(B. |
\EG A matrix over a small finite field. |
\EG A matrix over a small finite field. |
Line 450 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 deval}, @xref{pari}) |
(@xref{eval deval}.) |
|
|
@item 4 |
@item 4 |
\JP @b{$BJ#AG?t(B} |
\JP @b{$BJ#AG?t(B} |
Line 563 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 585 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 625 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 |
|
|
\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 |