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

Diff for /OpenXM/src/asir-doc/parts/ff.texi between version 1.1 and 1.7

version 1.1, 1999/12/08 05:47:44 version 1.7, 2003/04/21 03:07:32
Line 1 
Line 1 
   @comment $OpenXM: OpenXM/src/asir-doc/parts/ff.texi,v 1.6 2003/04/20 08:01:25 noro Exp $
   \BJP
 @node $BM-8BBN$K4X$9$k1i;;(B,,, Top  @node $BM-8BBN$K4X$9$k1i;;(B,,, Top
 @chapter $BM-8BBN$K4X$9$k1i;;(B  @chapter $BM-8BBN$K4X$9$k1i;;(B
   \E
   \BEG
   @node Finite fields,,, Top
   @chapter Finite fields
   \E
   
 @menu  @menu
   \BJP
 * $BM-8BBN$NI=8=$*$h$S1i;;(B::  * $BM-8BBN$NI=8=$*$h$S1i;;(B::
 * $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B::  * $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B::
   * $B>.I8?tM-8BBN>e$G$NB?9`<0$N1i;;(B::
 * $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B::  * $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B::
 * $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B::  * $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B::
   \E
   \BEG
   * Representation of finite fields::
   * Univariate polynomials on finite fields::
   * Polynomials on small finite fields::
   * Elliptic curves on finite fields::
   * Functions for Finite fields::
   \E
 @end menu  @end menu
   
   \BJP
 @node $BM-8BBN$NI=8=$*$h$S1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B  @node $BM-8BBN$NI=8=$*$h$S1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B
 @section $BM-8BBN$NI=8=$*$h$S1i;;(B  @section $BM-8BBN$NI=8=$*$h$S1i;;(B
   \E
   \BEG
   @node Representation of finite fields,,, Finite fields
   @section Representation of finite fields
   \E
   
 @noindent  @noindent
 @b{Asir} $B$K$*$$$F$O(B, $BM-8BBN$O(B, $B@5I8?tAGBN(B GF(p), $BI8?t(B 2 $B$NM-8BBN(B GF(2^n)  \BJP
   @b{Asir} $B$K$*$$$F$O(B, $BM-8BBN$O(B, $B@5I8?tAGBN(B GF(@var{p}), $BI8?t(B 2 $B$NM-8BBN(B GF(2^@var{n}),
   GF(@var{p}) $B$N(B @var{n} $B<!3HBg(B GF(@var{p^n})
 $B$,Dj5A$G$-$k(B. $B$3$l$i$OA4$F(B, @code{setmod_ff()} $B$K$h$jDj5A$5$l$k(B.  $B$,Dj5A$G$-$k(B. $B$3$l$i$OA4$F(B, @code{setmod_ff()} $B$K$h$jDj5A$5$l$k(B.
   \E
   \BEG
   On @b{Asir} GF(@var{p}), GF(2^@var{n}), GF(@var{p^n}) can be defined, where
   GF(@var{p}) is a finite prime field of charateristic @var{p},
   GF(2^@var{n}) is a finite field of characteristic 2 and
   GF(@var{p^n}) is a finite extension of GF(@var{p}). These are
   all defined by @code{setmod_ff()}.
   \E
   
 @example  @example
 [0] P=pari(nextprime,2^50);  [0] P=pari(nextprime,2^50);
Line 30  x^50+x^4+x^3+x^2+1
Line 63  x^50+x^4+x^3+x^2+1
 x^50+x^4+x^3+x^2+1  x^50+x^4+x^3+x^2+1
 [6] field_type_ff();  [6] field_type_ff();
 2  2
   [7] setmod_ff(x^3+x+1,1125899906842679);
   [1*x^3+1*x+1,1125899906842679]
   [8] field_type_ff();
   3
   [9] setmod_ff(3,5);
   [3,x^5+2*x+1,x]
   [10] field_type_ff();
   4
 @end example  @end example
 @code{setmod_ff()} $B$O(B, $B0z?t$,@5@0?t(B p $B$N>l9g(B GF(p), n $B<!B?9`<0(B f(x) $B$N>l(B  \BJP
 $B9g(B, f(x) mod 2 $B$rDj5AB?9`<0$H$9$k(B GF(2^n) $B$r$=$l$>$l4pACBN$H$7$F%;%C%H$9(B  @code{setmod_ff()} $B$O(B, $B$5$^$6$^$J%?%$%W$NM-8BBN$r4pACBN$H$7$F%;%C%H$9$k(B.
 $B$k(B. @code{setmod_ff()} $B$K$*$$$F$O0z?t$N4{Ls%A%'%C%/$O9T$o$:(B, $B8F$S=P$7B&(B  $B0z?t$,@5@0?t(B @var{p} $B$N>l9g(B GF(@var{p}), @var{n} $B<!B?9`<0(B f(x) $B$N>l(B
   $B9g(B, f(x) mod 2 $B$rDj5AB?9`<0$H$9$k(B GF(2^@var{n}) $B$r$=$l$>$l4pACBN$H$7$F%;%C%H$9(B
   $B$k(B. $B$^$?(B, $BM-8BAGBN$NM-8B<!3HBg$bDj5A$G$-$k(B. $B>\$7$/$O(B @xref{$B?t$N7?(B}.
   @code{setmod_ff()} $B$K$*$$$F$O0z?t$N4{Ls%A%'%C%/$O9T$o$:(B, $B8F$S=P$7B&(B
 $B$,@UG$$r;}$D(B.  $B$,@UG$$r;}$D(B.
   
 $B4pACBN$H$O(B, $B$"$/$^$GM-8BBN$N85$H$7$F@k8@$"$k$$$ODj5A$5$l$?%*%V%8%'%/%H$,(B,  $B4pACBN$H$O(B, $B$"$/$^$GM-8BBN$N85$H$7$F@k8@$"$k$$$ODj5A$5$l$?%*%V%8%'%/%H$,(B,
Line 43  x^50+x^4+x^3+x^2+1
Line 87  x^50+x^4+x^3+x^2+1
 $B$k(B.  $B$k(B.
   
 0 $B$G$J$$M-8BBN$N85$O(B, $B?t%*%V%8%'%/%H$G$"$j(B, $B<1JL;R$NCM$O(B 1 $B$G$"$k(B.  0 $B$G$J$$M-8BBN$N85$O(B, $B?t%*%V%8%'%/%H$G$"$j(B, $B<1JL;R$NCM$O(B 1 $B$G$"$k(B.
 $B$5$i$K(B, 0 $B$G$J$$M-8BBN$N85$N?t<1JL;R$O(B, GF(p) $B$N>l9g(B 6, GF(2^n) $B$N>l9g(B 7  $B$5$i$K(B, 0 $B$G$J$$M-8BBN$N85$N?t<1JL;R$O(B, GF(@var{p}) $B$N>l9g(B 6, GF(2^@var{n}) $B$N>l9g(B 7
 $B$H$J$k(B.  $B$H$J$k(B.
   
 $BM-8BBN$N85$NF~NOJ}K!$O(B, $BM-8BBN$N<oN`$K$h$jMM!9$G$"$k(B. GF(p) $B$N>l9g(B,  $BM-8BBN$N85$NF~NOJ}K!$O(B, $BM-8BBN$N<oN`$K$h$jMM!9$G$"$k(B. GF(@var{p}) $B$N>l9g(B,
 @code{simp_ff()} $B$K$h$k(B.  @code{simp_ff()} $B$K$h$k(B.
   \E
   
   \BEG
   If @var{p} is a positive integer, @code{setmod_ff(@var{p})} sets
   GF(@var{p}) as the current base field.
   If @var{f} is a univariate polynomial of degree @var{n},
   @code{setmod_ff(@var{f})} sets GF(2^@var{n}) as the current
   base field.  GF(2^@var{n}) is represented
   as an algebraic extension of GF(2) with the defining polynomial
   @var{f mod 2}. Furthermore, finite extensions of prime finite fields
   can be defined. @xref{Types of numbers}.
   In all cases the primality check of the argument is
   not done and the caller is responsible for it.
   
   Correctly speaking there is no actual object corresponding to a 'base field'.
   Setting a base field means that operations on elements of finite fields
   are done according to the arithmetics of the base field. Thus, if
   operands of an arithmetic operation are both rational numbers, then the result
   is also a rational number. However, if one of the operands is in
   a finite field, then the other is automatically regarded as in the
   same finite field and the operation is done in the finite field.
   
   A non zero element of a finite field belongs to the number and has object
   identifier 1. Its number identifier is 6 if the finite field is GF(@var{p}),
   7 if it is GF(2^@var{n}).
   
   There are several methods to input an element of a finite field.
   An element of GF(@var{p}) can be input by @code{simp_ff()}.
   \E
   
 @example  @example
 [0] P=pari(nextprime,2^50);  [0] P=pari(nextprime,2^50);
 1125899906842679  1125899906842679
Line 60  x^50+x^4+x^3+x^2+1
Line 133  x^50+x^4+x^3+x^2+1
 6  6
 @end example  @end example
   
 $B$^$?(B, GF(2^n) $B$N>l9g$$$/$D$+$NJ}K!$,$"$k(B.  \JP $B$^$?(B, GF(2^@var{n}) $B$N>l9g$$$/$D$+$NJ}K!$,$"$k(B.
   \EG In the case of GF(2^@var{n}) the following methods are available.
   
 @example  @example
 [0] setmod_ff(x^50+x^4+x^3+x^2+1);  [0] setmod_ff(x^50+x^4+x^3+x^2+1);
 x^50+x^4+x^3+x^2+1  x^50+x^4+x^3+x^2+1
Line 74  x^50+x^4+x^3+x^2+1
Line 149  x^50+x^4+x^3+x^2+1
 (@@^9+@@^8+@@^7+@@^6+@@^5+@@^4+@@^3+@@^2+@@+1)  (@@^9+@@^8+@@^7+@@^6+@@^5+@@^4+@@^3+@@^2+@@+1)
 @end example  @end example
   
   \BJP
 $BM-8BBN$N85$O?t$G$"$j(B, $BBN1i;;$,2DG=$G$"$k(B. @code{@@} $B$O(B  $BM-8BBN$N85$O?t$G$"$j(B, $BBN1i;;$,2DG=$G$"$k(B. @code{@@} $B$O(B
 GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7$/$O(B @xref{$B?t$N7?(B}.  GF(2^@var{n}) $B$N(B, GF(2) $B>e$N@8@.85$G$"$k(B. $B>\$7$/$O(B @xref{$B?t$N7?(B}.
   \E
   \BEG
   Elements of finite fields are numbers and one can apply field arithmetics
   to them. @code{@@} is a generator of GF(2^@var{n}) over GF(2).
   @xref{Types of numbers}.
   \E
   
 @noindent  @noindent
   
   \BJP
 @node $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B  @node $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B
 @section $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B  @section $BM-8BBN>e$G$N(B 1 $BJQ?tB?9`<0$N1i;;(B
   \E
   \BEG
   @node Univariate polynomials on finite fields,,, Finite fields
   @section Univariate polynomials on finite fields
   \E
   
 @noindent  @noindent
   \BJP
 @samp{fff} $B$G$O(B, $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0$KBP$7(B, $BL5J?J}J,2r(B, DDF, $B0x?tJ,2r(B,  @samp{fff} $B$G$O(B, $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0$KBP$7(B, $BL5J?J}J,2r(B, DDF, $B0x?tJ,2r(B,
 $BB?9`<0$N4{LsH=Dj$J$I$N4X?t$,Dj5A$5$l$F$$$k(B.  $BB?9`<0$N4{LsH=Dj$J$I$N4X?t$,Dj5A$5$l$F$$$k(B.
   
 $B$$$:$l$b(B, $B7k2L$O(B [@b{$B0x;R(B}, @b{$B=EJ#EY(B}] $B$N%j%9%H$H$J$k$,(B, $B0x;R$O(B monic  $B$$$:$l$b(B, $B7k2L$O(B [@b{$B0x;R(B}, @b{$B=EJ#EY(B}] $B$N%j%9%H$H$J$k$,(B, $B0x;R$O(B monic
 $B$H$J$j(B, $BF~NOB?9`<0$N<g78?t$O<N$F$i$l$k(B.  $B$H$J$j(B, $BF~NOB?9`<0$N<g78?t$O<N$F$i$l$k(B.
   
 @noindent  
 $BL5J?J}J,2r$O(B, $BB?9`<0$H$=$NHyJ,$H$N(B GCD $B$N7W;;$+$i;O$^$k$b$C$H$b0lHLE*$J(B  $BL5J?J}J,2r$O(B, $BB?9`<0$H$=$NHyJ,$H$N(B GCD $B$N7W;;$+$i;O$^$k$b$C$H$b0lHLE*$J(B
 $B%"%k%4%j%:%`$r:NMQ$7$F$$$k(B.  $B%"%k%4%j%:%`$r:NMQ$7$F$$$k(B.
   
 @example  
 @end example  
   
 @noindent  
 $BM-8BBN>e$G$N0x?tJ,2r$O(B, DDF $B$N8e(B, $B<!?tJL0x;R$NJ,2r$N:]$K(B, Berlekamp  $BM-8BBN>e$G$N0x?tJ,2r$O(B, DDF $B$N8e(B, $B<!?tJL0x;R$NJ,2r$N:]$K(B, Berlekamp
 $B%"%k%4%j%:%`$GNm6u4V$r5a$a(B, $B4pDl%Y%/%H%k$N:G>.B?9`<0$r5a$a(B, $B$=$N:,(B  $B%"%k%4%j%:%`$GNm6u4V$r5a$a(B, $B4pDl%Y%/%H%k$N:G>.B?9`<0$r5a$a(B, $B$=$N:,(B
 $B$r(B Cantor-Zassenhaus $B%"%k%4%j%:%`$K$h$j5a$a$k(B, $B$H$$$&J}K!$r<BAu$7$F$$$k(B.  $B$r(B Cantor-Zassenhaus $B%"%k%4%j%:%`$K$h$j5a$a$k(B, $B$H$$$&J}K!$r<BAu$7$F$$$k(B.
   \E
   \BEG
   In @samp{fff} square-free factorization, DDF (distinct degree factorization),
   irreducible factorization and primality check are implemented for
   univariate polynomials over finite fields.
   
 @example  Factorizers return lists of [@b{factor},@b{multiplicity}]. The factor
 @end example  part is monic and the information on the leading coefficient of the
   input polynomial is abandoned.
   
   The algorithm used in square-free factorization is the most primitive one.
   
   The irreducible factorization proceeds as follows.
   
   @enumerate
   @item DDF
   @item Nullspace computation by Berlekamp algorithm
   @item Root finding of minimal polynomials of bases of the nullspace
   @item Separation of irreducible factors by the roots
   @end enumerate
   \E
   
   @noindent
   
   \BJP
   @node $B>.I8?tM-8BBN>e$G$NB?9`<0$N1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B
   @section $B>.I8?tM-8BBN>e$G$NB?9`<0$N1i;;(B
   \E
   \BEG
   @node Polynomials on small finite fields,,, Finite fields
   @section Polynomials on small finite fields
   \E
   
   \BJP
   $B>.I8?tM-8BBN78?t$NB?9`<0$K8B$j(B, $BB?JQ?tB?9`<0$N0x?tJ,2r$,(B
   $BAH$_9~$_4X?t$H$7$F<BAu$5$l$F$$$k(B. $B4X?t$O(B @code{sffctr()}
   $B$G$"$k(B. $B$^$?(B, @code{modfctr()} $B$b(B, $BM-8BAGBN>e$GB?JQ?t(B
   $BB?9`<0$N0x?tJ,2r$r9T$&$,(B, $B<B:]$K$O(B, $BFbIt$G==J,Bg$-$J(B
   $B3HBgBN$r@_Dj$7(B, @code{sffctr()} $B$r8F$S=P$7$F(B,
   $B:G=*E*$KAGBN>e$N0x;R$r9=@.$9$k(B, $B$H$$$&J}K!$G7W;;$7$F$$$k(B.
   \E
   
   \BEG
   A multivariate polynomial over small finite field
   set by @code{setmod_ff(p,n)} can be factorized by
   using a builtin function @code{sffctr()}. @code{modfctr()}
   also factorizes a polynomial over a finite prime field.
   Internally, @code{modfctr()} creates a sufficiently large
   field extension of the specified ground field, and
   it calls @code{sffctr()}, then it constructs irreducible
   factors over the ground field from the factors returned by
   @code{sffctr()}.
   \E
   
   \BJP
 @node $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B  @node $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B,,, $BM-8BBN$K4X$9$k1i;;(B
 @section $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B  @section $BM-8BBN>e$NBJ1_6J@~$K4X$9$k1i;;(B
   \E
   \BEG
   @node Elliptic curves on finite fields,,, Finite fields
   @section Elliptic curves on finite fields
   \E
   
   \BJP
 $BM-8BBN>e$NBJ1_6J@~$K4X$9$k$$$/$D$+$N4pK\E*$J1i;;$,(B, $BAH$_9~$_4X?t$H$7$F(B  $BM-8BBN>e$NBJ1_6J@~$K4X$9$k$$$/$D$+$N4pK\E*$J1i;;$,(B, $BAH$_9~$_4X?t$H$7$F(B
 $BDs6!$5$l$F$$$k(B.  $BDs6!$5$l$F$$$k(B.
   
 $BBJ1_6J@~$N;XDj$O(B, $BD9$5(B 2 $B$N%Y%/%H%k(B @var{[a b]} $B$G9T$&(B. @var{a}, @var{b}  $BBJ1_6J@~$N;XDj$O(B, $BD9$5(B 2 $B$N%Y%/%H%k(B [@var{a b}] $B$G9T$&(B. @var{a}, @var{b}
 $B$OM-8BBN$N85$G(B,  $B$OM-8BBN$N85$G(B,
 @code{setmod_ff} $B$GDj5A$5$l$F$$$kM-8BBN$,AGBN$N>l9g(B, @var{y^2=x^3+ax+b},  @code{setmod_ff} $B$GDj5A$5$l$F$$$kM-8BBN$,AGBN$N>l9g(B, @var{y^2=x^3+ax+b},
 $BI8?t(B 2 $B$NBN$N>l9g(B @var{y^2+xy=x^3+ax^2+b} $B$rI=$9(B.  $BI8?t(B 2 $B$NBN$N>l9g(B @var{y^2+xy=x^3+ax^2+b} $B$rI=$9(B.
Line 122  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
Line 263  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
   
 @itemize @bullet  @itemize @bullet
 @item $BL58B1sE@$O(B 0.  @item $BL58B1sE@$O(B 0.
 @item $B$=$l0J30$NE@$O(B, $BD9$5(B 3 $B$N%Y%/%H%k(B @var{[x y z]}. $B$?$@$7(B, @var{z} $B$O(B  @item $B$=$l0J30$NE@$O(B, $BD9$5(B 3 $B$N%Y%/%H%k(B [@var{x y z}]. $B$?$@$7(B, @var{z} $B$O(B
 0 $B$G$J$$(B.  0 $B$G$J$$(B.
 @end itemize  @end itemize
   
 $B$H$$$&E@$G$"$k(B. @var{[x y z]} $B$O@F<!:BI8$K$h$kI=8=$G$"$j(B, $B%"%U%#%s:BI8(B  $B$H$$$&E@$G$"$k(B. [@var{x y z}] $B$O@F<!:BI8$K$h$kI=8=$G$"$j(B, $B%"%U%#%s:BI8(B
 $B$G$O(B @var{[x/z y/z]} $B$J$kE@$rI=$9(B. $B$h$C$F(B, $B%"%U%#%s:BI8(B @var{[x y]} $B$G(B  $B$G$O(B [@var{x/z y/z}] $B$J$kE@$rI=$9(B. $B$h$C$F(B, $B%"%U%#%s:BI8(B [@var{x y}] $B$G(B
 $BI=8=$5$l$?E@$r1i;;BP>]$H$9$k$K$O(B, @var{[x y 1]} $B$J$k%Y%/%H%k$r(B  $BI=8=$5$l$?E@$r1i;;BP>]$H$9$k$K$O(B, [@var{x y 1}] $B$J$k%Y%/%H%k$r(B
 $B@8@.$9$kI,MW$,$"$k(B.  $B@8@.$9$kI,MW$,$"$k(B.
 $B1i;;7k2L$b@F<!:BI8$GF@$i$l$k$,(B, @var{z} $B:BI8$,(B 1 $B$H$O8B$i$J$$$?$a(B,  $B1i;;7k2L$b@F<!:BI8$GF@$i$l$k$,(B, @var{z} $B:BI8$,(B 1 $B$H$O8B$i$J$$$?$a(B,
 $B%"%U%#%s:BI8$r5a$a$k$?$a$K$O(B @var{x}, @var{y} $B:BI8$r(B @var{z} $B:BI8$G(B  $B%"%U%#%s:BI8$r5a$a$k$?$a$K$O(B @var{x}, @var{y} $B:BI8$r(B @var{z} $B:BI8$G(B
 $B3d$kI,MW$,$"$k(B.  $B3d$kI,MW$,$"$k(B.
   \E
   
   \BEG
   Several fundamental operations on elliptic curves over finite fields
   are provided as built-in functions.
   
   An elliptic curve is specified by a vector [@var{a b}] of length 2,
   where @var{a}, @var{b} are elements of finite fields.
   If the current base field is a prime field, then [@var{a b}] represents
   @var{y^2=x^3+ax+b}. If the current base field is a finite field of
   characteristic 2, then [@var{a b}] represents @var{y^2+xy=x^3+ax^2+b}.
   
   Points on an elliptic curve together with the point at infinity
   forms an additive group. The addition, the subtraction and the
   additive inverse operation are provided as @code{ecm_add_ff()},
   @code{ecm_sub_ff()} and @code{ecm_chsgn_ff()} respectively.
   Here the representation of points are as follows.
   
   @itemize @bullet
   @item 0 denotes the point at infinity.
   @item The other points are represented by vectors [@var{x y z}] of
   length 3 with non-zero @var{z}.
   @end itemize
   
   [@var{x y z}] represents a projective coordinate and
   it corresponds to [@var{x/z y/z}] in the affine coordinate.
   To apply the above operations to a point [@var{x y}],
   [@var{x y 1}] should be used instead as an argument.
   The result of an operation is also represented by the projective
   coordinate. As the third coordinate is not always equal to 1,
   one has to divide the first and the scond coordinate by the third
   one to obtain the affine coordinate.
   \E
   
   \BJP
 @node $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B,,, $BM-8BBN$K4X$9$k1i;;(B  @node $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B,,, $BM-8BBN$K4X$9$k1i;;(B
 @section $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  @section $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \E
   \BEG
   @node Functions for Finite fields,,, Finite fields
   @section Functions for Finite fields
   \E
   
 @menu  @menu
 * setmod_ff::  * setmod_ff::
Line 150  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
Line 330  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
 * gf2nton::  * gf2nton::
 * ptogf2n::  * ptogf2n::
 * gf2ntop::  * gf2ntop::
   * ptosfp sfptop::
 * defpoly_mod2::  * defpoly_mod2::
   * sffctr::
 * fctr_ff::  * fctr_ff::
 * irredcheck_ff::  * irredcheck_ff::
 * randpoly_ff::  * randpoly_ff::
Line 158  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
Line 340  GF(2^n) $B$N(B, GF(2)$B>e$N@8@.85$G$"$k(B. $B>\$7
 * extdeg_ff::  * extdeg_ff::
 @end menu  @end menu
   
 @node setmod_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node setmod_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node setmod_ff,,, Functions for Finite fields
 @subsection @code{setmod_ff}  @subsection @code{setmod_ff}
 @findex setmod_ff  @findex setmod_ff
   
 @table @t  @table @t
 @item setmod_ff([@var{prime}|@var{poly}])  @item setmod_ff([@var{prime}|@var{poly}])
 :: $BM-8BBN$N@_Dj(B, $B@_Dj$5$l$F$$$kM-8BBN$NK!(B, $BDj5AB?9`<0$NI=<((B  @itemx setmod_ff(@var{prime},@var{n}])
   \JP :: $BM-8BBN$N@_Dj(B, $B@_Dj$5$l$F$$$kM-8BBN$NK!(B, $BDj5AB?9`<0$NI=<((B
   \EG :: Sets/Gets the current base fields.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t$^$?$OB?9`<0(B  \JP $B?t$^$?$OB?9`<0(B
   \EG number or polynomial
 @item prime  @item prime
 $BAG?t(B  \JP $BAG?t(B
   \EG prime
 @item poly  @item poly
 GF(2) $B>e4{Ls$J(B 1 $BJQ?tB?9`<0(B  \JP GF(2) $B>e4{Ls$J(B 1 $BJQ?tB?9`<0(B
   \EG univariate polynomial irreducible over GF(2)
   @item n
   \JP $B3HBg<!?t(B
   \EG the extension degree
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B0z?t$,@5@0?t(B @var{prime} $B$N;~(B, GF(@var{prime}) $B$r4pACBN$H$7$F@_Dj$9$k(B.  $B0z?t$,@5@0?t(B @var{prime} $B$N;~(B, GF(@var{prime}) $B$r4pACBN$H$7$F@_Dj$9$k(B.
 @item  @item
 $B0z?t$,B?9`<0(B @var{poly} $B$N;~(B,  $B0z?t$,B?9`<0(B @var{poly} $B$N;~(B,
 GF(2^deg(@var{poly} mod 2)) = GF(2)[t]/(@var{poly}(t) mod2)  GF(2^deg(@var{poly} mod 2)) = GF(2)[t]/(@var{poly}(t) mod 2)
 $B$r4pACBN$H$7$F@_Dj$9$k(B.  $B$r4pACBN$H$7$F@_Dj$9$k(B.
 @item  @item
 $BL50z?t$N;~(B, $B@_Dj$5$l$F$$$k4pACBN$,(B GF(@var{prime}) $B$N>l9g(B @var{prime},  $B0z?t$,(B @var{p} $B$H(B @var{n} $B$N;~(B,
 GF(2^n) $B$N>l9gDj5AB?9`<0$rJV$9(B.  GF(@var{p^n}) $B$r4pACBN$H$7$F@_Dj$9$k(B. @var{p^n} $B$O(B @var{2^29} $BL$K~$G(B
   $B$J$1$l$P$J$i$J$$(B. $B$^$?(B, @var{p} $B$,(B @var{2^14} $B0J>e$N$H$-(B,
   @var{n} $B$O(B 1 $B$G$J$1$l$P$J$i$J$$(B.
 @item  @item
 GF(2^n) $B$NDj5AB?9`<0$O(B, GF(2) $B>e(B n $B<!4{Ls$J$i$J$s$G$bNI$$$,(B, $B8zN($K(B  $BL50z?t$N;~(B, $B@_Dj$5$l$F$$$k4pACBN$,(B GF(@var{prime})$B$N>l9g(B @var{prime},
   GF(2^@var{n}) $B$N>l9gDj5AB?9`<0$rJV$9(B.
   $B4pACBN$,(B GF(p^@var{n})
   (@var{p^n} $B$,(B @var{2^14} $BL$K~(B) $B$N>l9g(B,
   [@var{p},@var{defpoly},@var{prim_elem}] $B$rJV$9(B. $B$3$3$G(B, @var{defpoly}
   $B$O(B, @var{n} $B<!3HBg$NDj5AB?9`<0(B, @var{prim_elem} $B$O(B, GF(@var{p^n})
   $B>hK!72$N@8@.85$r0UL#$9$k(B.
   @item
   GF(2^@var{n}) $B$NDj5AB?9`<0$O(B, GF(2) $B>e(B n $B<!4{Ls$J$i$J$s$G$bNI$$$,(B, $B8zN($K(B
 $B1F6A$9$k$?$a(B, @code{defpoly_mod2()} $B$G@8@.$9$k$N$,$h$$(B.  $B1F6A$9$k$?$a(B, @code{defpoly_mod2()} $B$G@8@.$9$k$N$,$h$$(B.
   \E
   \BEG
   @item
   If the argument is a non-negative integer @var{prime}, GF(@var{prime})
   is set as the current base field.
   @item
   If the argument is a polynomial @var{poly},
   GF(2^deg(@var{poly} mod 2)) = GF(2)[t]/(@var{poly}(t) mod2)
   is set as the current base field.
   @item
   If the arguments are a prime @var{p} and an extension degree @var{n},
   GF(@var{p^n}) is set as the current base field. @var{p^n} must be
   less than @var{2^29} and if @var{p} is greater than or equal to @var{2^14},
   then @var{n} must be equal to 1.
   @item
   If no argument is specified, the modulus indicating the current base field
   is returned. If the current base field is GF(@var{prime}), @var{prime} is
   returned. If it is GF(2^@var{n}), the defining polynomial is returned.
   If it is GF(@var{p^n}), where @var{p^n} is less than @var{2^14},
   [@var{p},@var{defpoly},@var{prim_elem}] is returned. Here, @var{defpoly}
   is the defining polynomial of the @var{n}-th extension,
   and @var{prim_elem} is the generator of the multiplicative group
   of GF(@var{p^n}).
   @item
   Any irreducible univariate polynomial over GF(2) is available to
   set GF(2^@var{n}). However the use of @code{defpoly_mod2()} is recommended
   for efficiency.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 198  x^100+x^15+1
Line 428  x^100+x^15+1
 x^100+x^15+1  x^100+x^15+1
 [176] setmod_ff();  [176] setmod_ff();
 x^100+x^15+1  x^100+x^15+1
   [177] setmod_ff(2,5);
   [2,x^5+x^2+1,x]
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{defpoly_mod2}  @fref{defpoly_mod2}
 @end table  @end table
   
 @node field_type_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node field_type_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node field_type_ff,,, Functions for Finite fields
 @subsection @code{field_type_ff}  @subsection @code{field_type_ff}
 @findex field_type_ff  @findex field_type_ff
   
 @table @t  @table @t
 @item field_type_ff()  @item field_type_ff()
 :: $B@_Dj$5$l$F$$$k4pACBN$N<oN`(B  \JP :: $B@_Dj$5$l$F$$$k4pACBN$N<oN`(B
   \EG :: Type of the current base field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t(B  \JP $B@0?t(B
   \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B@_Dj$5$l$F$$$k4pACBN$N<oN`$rJV$9(B.  $B@_Dj$5$l$F$$$k4pACBN$N<oN`$rJV$9(B.
 @item  @item
 $B@_Dj$J$7$J$i(B 0, GF(p) $B$J$i(B 1, GF(2^n) $B$J$i(B 2 $B$rJV$9(B.  $B@_Dj$J$7$J$i(B 0, GF(@var{p}) $B$J$i(B 1, GF(2^@var{n}) $B$J$i(B 2 $B$rJV$9(B.
   \E
   \BEG
   @item
   Returns the type of the current base field.
   @item
   If no field is set, 0 is returned. If GF(@var{p}) is set, 1 is returned.
   If GF(2^@var{n}) is set, 2 is returned.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 240  x^2+x+1
Line 485  x^2+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node field_order_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node field_order_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node field_order_ff,,, Functions for Finite fields
 @subsection @code{field_order_ff}  @subsection @code{field_order_ff}
 @findex field_order_ff  @findex field_order_ff
   
 @table @t  @table @t
 @item field_order_ff()  @item field_order_ff()
 :: $B@_Dj$5$l$F$$$k4pACBN$N0L?t(B  \JP :: $B@_Dj$5$l$F$$$k4pACBN$N0L?t(B
   \EG :: Order of the current base field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t(B  \JP $B@0?t(B
   \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B@_Dj$5$l$F$$$k4pACBN$N0L?t(B ($B85$N8D?t(B) $B$rJV$9(B.  $B@_Dj$5$l$F$$$k4pACBN$N0L?t(B ($B85$N8D?t(B) $B$rJV$9(B.
 @item  @item
 $B@_Dj$5$l$F$$$kBN$,(B GF(q) $B$J$i$P(B q $B$rJV$9(B.  $B@_Dj$5$l$F$$$kBN$,(B GF(@var{q}) $B$J$i$P(B q $B$rJV$9(B.
   \E
   \BEG
   @item
   Returns the order of the current base field.
   @item
   @var{q} is returned if the current base field is GF(@var{q}).
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 280  x^2+x+1
Line 537  x^2+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node characteristic_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node characteristic_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node characteristic_ff,,, Functions for Finite fields
 @subsection @code{characteristic_ff}  @subsection @code{characteristic_ff}
 @findex characteristic_ff  @findex characteristic_ff
   
 @table @t  @table @t
 @item characteristic_ff()  @item characteristic_ff()
 :: $B@_Dj$5$l$F$$$kBN$NI8?t(B  \JP :: $B@_Dj$5$l$F$$$kBN$NI8?t(B
   \EG :: Characteristic of the current base field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t(B  \JP $B@0?t(B
   \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B@_Dj$5$l$F$$$kBN$NI8?t$rJV$9(B.  $B@_Dj$5$l$F$$$kBN$NI8?t$rJV$9(B.
 @item  @item
 GF(p) $B$N>l9g(B p, GF(2^n) $B$N>l9g(B 2 $B$rJV$9(B.  GF(@var{p}) $B$N>l9g(B @var{p}, GF(2^@var{n}) $B$N>l9g(B 2 $B$rJV$9(B.
   \E
   \BEG
   @item
   Returns the characteristic of the current base field.
   @item
   @var{p} is returned if GF(@var{p}), where @var{p} is a prime, is set.
   @var{2} is returned if GF(2^@var{n}) is set.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 320  x^2+x+1
Line 590  x^2+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node extdeg_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node extdeg_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node extdeg_ff,,, Functions for Finite fields
 @subsection @code{extdeg_ff}  @subsection @code{extdeg_ff}
 @findex extdeg_ff  @findex extdeg_ff
   
 @table @t  @table @t
 @item extdeg_ff()  @item extdeg_ff()
 :: $B@_Dj$5$l$F$$$k4pACBN$N(B, $BAGBN$KBP$9$k3HBg<!?t(B  \JP :: $B@_Dj$5$l$F$$$k4pACBN$N(B, $BAGBN$KBP$9$k3HBg<!?t(B
   \EG :: Extension degree of the current base field over the prime field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t(B  \JP $B@0?t(B
   \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B@_Dj$5$l$F$$$k4pACBN$N(B, $BAGBN$KBP$9$k3HBg<!?t$rJV$9(B.  $B@_Dj$5$l$F$$$k4pACBN$N(B, $BAGBN$KBP$9$k3HBg<!?t$rJV$9(B.
 @item  @item
 GF(p) $B$N>l9g(B 1, GF(2^n) $B$N>l9g(B n $B$rJV$9(B.  GF(@var{p}) $B$N>l9g(B 1, GF(2^@var{n}) $B$N>l9g(B @var{n} $B$rJV$9(B.
   \E
   \BEG
   @item
   Returns the extension degree of the current base field over the prime field.
   @item
   1 is returned if GF(@var{p}), where @var{p} is a prime, is set.
   @var{n} is returned if GF(2^@var{n}) is set.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 360  x^2+x+1
Line 643  x^2+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node simp_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node simp_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node simp_ff,,, Functions for Finite fields
 @subsection @code{simp_ff}  @subsection @code{simp_ff}
 @findex simp_ff  @findex simp_ff
   
 @table @t  @table @t
 @item simp_ff(@var{obj})  @item simp_ff(@var{obj})
 :: $B?t(B, $B$"$k$$$OB?9`<0$N78?t$rM-8BBN$N85$KJQ49(B  \JP :: $B?t(B, $B$"$k$$$OB?9`<0$N78?t$rM-8BBN$N85$KJQ49(B
   \BEG
   :: Converts numbers or coefficients of polynomials into elements
   in finite fields.
   \E
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B?t$^$?$OB?9`<0(B  \JP $B?t$^$?$OB?9`<0(B
   \EG number or polynomial
 @item obj  @item obj
 $B?t$^$?$OB?9`<0(B  \JP $B?t$^$?$OB?9`<0(B
   \EG number or polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B?t(B, $B$"$k$$$OB?9`<0$N78?t$rM-8BBN$N85$KJQ49$9$k(B.  $B?t(B, $B$"$k$$$OB?9`<0$N78?t$rM-8BBN$N85$KJQ49$9$k(B.
 @item  @item
Line 389  x^2+x+1
Line 681  x^2+x+1
 @item  @item
 $BM-8BBN$N85$KBP$7(B, $BK!$"$k$$$ODj5AB?9`<0$K$h$k(B reduction $B$r9T$&>l9g$K$b(B  $BM-8BBN$N85$KBP$7(B, $BK!$"$k$$$ODj5AB?9`<0$K$h$k(B reduction $B$r9T$&>l9g$K$b(B
 $BMQ$$$k(B.  $BMQ$$$k(B.
   @item
   $B>.I8?tM-8BBN$N85$KJQ49$9$k>l9g(B, $B0lC6AGBN>e$K<M1F$7$F$+$i(B, $B3HBgBN$N(B
   $B85$KJQ49$5$l$k(B. $B3HBgBN$N85$KD>@\JQ49$9$k$K$O(B @code{ptosfp()} $B$r(B
   $BMQ$$$k(B.
   \E
   \BEG
   @item
   Converts numbers or coefficients of polynomials into elements in finite
   fields.
   @item
   It is used to convert integers or intrgral polynomials int
   elements of finite fields or polynomials over finite fields.
   @item
   An element of a finite field may not have the reduced representation.
   In such case an application of @code{simp_ff} ensures that the output has
   the reduced representation.
   If a small finite field is set as a ground field,
   an integer is projected the finite prime field, then
   it is embedded into the ground field. @code{ptosfp()}
   can be used for direct projection to the ground field.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 400  x^10+10*x^9+45*x^8+120*x^7+210*x^6+252*x^5+210*x^4+120
Line 713  x^10+10*x^9+45*x^8+120*x^7+210*x^6+252*x^5+210*x^4+120
 1*x^10+1*x^9+1*x+1  1*x^10+1*x^9+1*x+1
 [3] ntype(coef(@@@@,10));  [3] ntype(coef(@@@@,10));
 6  6
   [4] setmod_ff(2,3);
   [2,x^3+x+1,x]
   [5] simp_ff(1);
   @@_0
   [6] simp_ff(2);
   0
   [7] ptosfp(2);
   @@_1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
 @fref{setmod_ff}, @fref{lmptop}, @fref{gf2nton}  \EG @item References
   @fref{setmod_ff}, @fref{lmptop}, @fref{gf2nton}, @fref{ptosfp sfptop}
 @end table  @end table
   
 @node random_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node random_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node random_ff,,, Functions for Finite fields
 @subsection @code{random_ff}  @subsection @code{random_ff}
 @findex random_ff  @findex random_ff
   
 @table @t  @table @t
 @item random_ff()  @item random_ff()
 :: $BM-8BBN$N85$NMp?t@8@.(B  \JP :: $BM-8BBN$N85$NMp?t@8@.(B
   \EG :: Random generation of an element of a finite field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $BM-8BBN$N85(B  \JP $BM-8BBN$N85(B
   \EG element of a finite field
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $BM-8BBN$N85$rMp?t@8@.$9$k(B.  $BM-8BBN$N85$rMp?t@8@.$9$k(B.
 @item  @item
 GF(p) $B$N>l9g(B, 0 $B0J>e(B p $BL$K~$N@0?t$G$"$i$o$5$l$k(B GF(p) $B$N85(B,  
 GF(2^n) $B$N>l9g(B, n $B<!L$K~$N(B GF(2) $B>e$NB?9`<0$GI=$5$l$k(B GF(2^n) $B$r(B  
 $BJV$9(B.  
 @item  
 @code{random()}, @code{lrandom()} $B$HF1$8(B 32bit $BMp?tH/@84o$r;HMQ$7$F$$$k(B.  @code{random()}, @code{lrandom()} $B$HF1$8(B 32bit $BMp?tH/@84o$r;HMQ$7$F$$$k(B.
   \E
   \BEG
   @item
   Generates an element of the current base field randomly.
   @item
   The same random generator as in @code{random()}, @code{lrandom()}
   is used.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 445  return to toplevel
Line 775  return to toplevel
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}, @fref{random}, @fref{lrandom}  @fref{setmod_ff}, @fref{random}, @fref{lrandom}
 @end table  @end table
   
 @node lmptop,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node lmptop,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node lmptop,,, Functions for Finite fields
 @subsection @code{lmptop}  @subsection @code{lmptop}
 @findex lmptop  @findex lmptop
   
 @table @t  @table @t
 @item lmptop(@var{obj})  @item lmptop(@var{obj})
 :: GF(p) $B78?tB?9`<0$N78?t$r@0?t$KJQ49(B  \JP :: GF(@var{p}) $B78?tB?9`<0$N78?t$r@0?t$KJQ49(B
   \EG :: Converts the coefficients of a polynomial over GF(@var{p}) into integers.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B@0?t78?tB?9`<0(B  \JP $B@0?t78?tB?9`<0(B
   \EG integral polynomial
 @item obj  @item obj
 GF(p)$B78?tB?9`<0(B  \JP GF(@var{p}) $B78?tB?9`<0(B
   \EG polynomial over GF(@var{p})
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 GF(p) $B78?tB?9`<0$N78?t$r@0?t$KJQ49$9$k(B.  GF(@var{p}) $B78?tB?9`<0$N78?t$r@0?t$KJQ49$9$k(B.
 @item  @item
 GF(p) $B$N85$O(B, 0 $B0J>e(B p $BL$K~$N@0?t$GI=8=$5$l$F$$$k(B.  GF(@var{p}) $B$N85$O(B, 0 $B0J>e(B p $BL$K~$N@0?t$GI=8=$5$l$F$$$k(B.
 $BB?9`<0$N3F78?t$O(B, $B$=$NCM$r@0?t%*%V%8%'%/%H(B($B?t<1JL;R(B 0)$B$H$7$?$b$N$K(B  $BB?9`<0$N3F78?t$O(B, $B$=$NCM$r@0?t%*%V%8%'%/%H(B($B?t<1JL;R(B 0)$B$H$7$?$b$N$K(B
 $BJQ49$5$l$k(B.  $BJQ49$5$l$k(B.
   \E
   \BEG
 @item  @item
 GF(p) $B$N85$O(B, $B@0?t$KJQ49$5$l$k(B.  Converts the coefficients of a polynomial over GF(@var{p}) into integers.
   @item
   An element of GF(@var{p}) is represented by a non-negative integer @var{r} less than
   @var{p}.
   Each coefficient of a polynomial is converted into an integer object
   whose value is @var{r}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 485  GF(p) $B$N85$O(B, $B@0?t$KJQ49$5$l$k(B. 
Line 829  GF(p) $B$N85$O(B, $B@0?t$KJQ49$5$l$k(B. 
 [2] setmod_ff(547);  [2] setmod_ff(547);
 547  547
 [3] F=simp_ff((x-1)^10);  [3] F=simp_ff((x-1)^10);
 1*x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+427*x^3+45*x^2+537*x+1  1*x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+427*x^3
   +45*x^2+537*x+1
 [4] lmptop(F);  [4] lmptop(F);
 x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+427*x^3+45*x^2+537*x+1  x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+427*x^3
   +45*x^2+537*x+1
 [5] lmptop(coef(F,1));  [5] lmptop(coef(F,1));
 537  537
 [6] ntype(@@@@);  [6] ntype(@@@@);
Line 495  x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+42
Line 841  x^10+537*x^9+45*x^8+427*x^7+210*x^6+295*x^5+210*x^4+42
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{simp_ff}  @fref{simp_ff}
 @end table  @end table
   
 @node ntogf2n,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node ntogf2n,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node ntogf2n,,, Functions for Finite fields
 @subsection @code{ntogf2n}  @subsection @code{ntogf2n}
 @findex ntogf2n  @findex ntogf2n
   
 @table @t  @table @t
 @item ntogf2n(@var{m})  @item ntogf2n(@var{m})
 :: $B<+A3?t$r(B GF(2^n) $B$N85$KJQ49(B  \JP :: $B<+A3?t$r(B GF(2^@var{n}) $B$N85$KJQ49(B
   \EG :: Converts a non-negative integer into an element of GF(2^@var{n}).
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 GF(2^n) $B$N85(B  \JP GF(2^@var{n}) $B$N85(B
   \EG element of GF(2^@var{n})
 @item m  @item m
 $BHsIi@0?t(B  \JP $BHsIi@0?t(B
   \EG non-negative integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B<+A3?t(B @var{m} $B$N(B 2 $B?JI=8=(B @var{m}=@var{m0}+@var{m1}*2+...+@var{mk}*2^k  $B<+A3?t(B @var{m} $B$N(B 2 $B?JI=8=(B @var{m}=@var{m0}+@var{m1}*2+...+@var{mk}*2^k
 $B$KBP$7(B, GF(2^n)=GF(2)[t]/(g(t)) $B$N85(B  $B$KBP$7(B, GF(2^@var{n})=GF(2)[t]/(g(t)) $B$N85(B
 @var{m0}+@var{m1}*t+...+@var{mk}*t^k mod g(t) $B$rJV$9(B.  @var{m0}+@var{m1}*t+...+@var{mk}*t^k mod g(t) $B$rJV$9(B.
 @item  @item
 $BDj5AB?9`<0$K$h$k>jM>$O<+F0E*$K$O7W;;$5$l$J$$$?$a(B, @code{simp_ff()} $B$r(B  $BDj5AB?9`<0$K$h$k>jM>$O<+F0E*$K$O7W;;$5$l$J$$$?$a(B, @code{simp_ff()} $B$r(B
 $BE,MQ$9$kI,MW$,$"$k(B.  $BE,MQ$9$kI,MW$,$"$k(B.
   \E
   \BEG
   @item
   Let @var{m} be a non-negative integer.
   @var{m} has the binary representation
   @var{m}=@var{m0}+@var{m1}*2+...+@var{mk}*2^k.
   This function returns an element of  GF(2^@var{n}) = GF(2)[t]/(g(t)),
   @var{m0}+@var{m1}*t+...+@var{mk}*t^k mod g(t).
   @item
   Apply @code{simp_ff()} to reduce the result.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 535  x^30+x+1
Line 898  x^30+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{gf2nton}  @fref{gf2nton}
 @end table  @end table
   
 @node gf2nton,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node gf2nton,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node gf2nton,,, Functions for Finite fields
 @subsection @code{gf2nton}  @subsection @code{gf2nton}
 @findex gf2nton  @findex gf2nton
   
 @table @t  @table @t
 @item gf2nton(@var{m})  @item gf2nton(@var{m})
 :: GF(2^n) $B$N85$r<+A3?t$KJQ49(B  \JP :: GF(2^@var{n}) $B$N85$r<+A3?t$KJQ49(B
   \EG :: Converts an element of GF(2^@var{n}) into a non-negative integer.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $BHsIi@0?t(B  \JP $BHsIi@0?t(B
   \EG non-negative integer
 @item m  @item m
 GF(2^n) $B$N85(B  \JP GF(2^@var{n}) $B$N85(B
   \EG element of GF(2^@var{n})
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 @item  @item
 @code{gf2nton} $B$N5UJQ49$G$"$k(B.  \JP @code{gf2nton} $B$N5UJQ49$G$"$k(B.
   \EG The inverse of @code{gf2nton}.
 @end itemize  @end itemize
   
 @example  @example
Line 574  x^30+x+1
Line 943  x^30+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{gf2nton}  @fref{gf2nton}
 @end table  @end table
   
 @node ptogf2n,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node ptogf2n,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node ptogf2n,,, Functions for Finite fields
 @subsection @code{ptogf2n}  @subsection @code{ptogf2n}
 @findex ptogf2n  @findex ptogf2n
   
 @table @t  @table @t
 @item ptogf2n(@var{poly})  @item ptogf2n(@var{poly})
 :: $B0lJQ?tB?9`<0$r(B GF(2^n) $B$N85$KJQ49(B  \JP :: $B0lJQ?tB?9`<0$r(B GF(2^@var{n}) $B$N85$KJQ49(B
   \EG :: Converts a univariate polynomial into an element of GF(2^@var{n}).
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 GF(2^n) $B$N85(B  \JP GF(2^@var{n}) $B$N85(B
   \EG element of GF(2^@var{n})
 @item poly  @item poly
 $B0lJQ?tB?9`<0(B  \JP $B0lJQ?tB?9`<0(B
   \EG univariate polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 @item  @item
 @var{poly} $B$NI=$9(B GF(2^n) $B$N85$r@8@.$9$k(B. $B78?t$O(B, 2 $B$G3d$C$?M>$j$K(B  \BJP
   @var{poly} $B$NI=$9(B GF(2^@var{n}) $B$N85$r@8@.$9$k(B. $B78?t$O(B, 2 $B$G3d$C$?M>$j$K(B
 $BJQ49$5$l$k(B.  $BJQ49$5$l$k(B.
 @var{poly} $B$NJQ?t$K(B @code{@@} $B$rBeF~$7$?7k2L$HEy$7$$(B.  @var{poly} $B$NJQ?t$K(B @code{@@} $B$rBeF~$7$?7k2L$HEy$7$$(B.
   \E
   \BEG
   Generates an element of GF(2^@var{n}) represented by @var{poly}.
   The coefficients are reduced modulo 2.
   The output is equal to the result by substituting @code{@@} for
   the variable of @var{poly}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 609  x^30+x+1
Line 991  x^30+x+1
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{gf2ntop}  @fref{gf2ntop}
 @end table  @end table
   
 @node gf2ntop,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node gf2ntop,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node gf2ntop,,, Functions for Finite fields
 @subsection @code{gf2ntop}  @subsection @code{gf2ntop}
 @findex gf2ntop  @findex gf2ntop
   
 @table @t  @table @t
 @item gf2ntop(@var{m}[,@var{v}])  @item gf2ntop(@var{m}[,@var{v}])
 :: GF(2^n) $B$N85$rB?9`<0$KJQ49(B  \JP :: GF(2^@var{n}) $B$N85$rB?9`<0$KJQ49(B
   \EG :: Converts an element of GF(2^@var{n}) into a polynomial.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B0lJQ?tB?9`<0(B  \JP $B0lJQ?tB?9`<0(B
   \EG univariate polynomial
 @item m  @item m
 GF(2^n) $B$N85(B  \JP GF(2^@var{n}) $B$N85(B
   \EG an element of GF(2^@var{n})
 @item v  @item v
 $BITDj85(B  \JP $BITDj85(B
   \EG indeterminate
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @var{m} $B$rI=$9B?9`<0$r(B, $B@0?t78?t$NB?9`<0%*%V%8%'%/%H$H$7$FJV$9(B.  @var{m} $B$rI=$9B?9`<0$r(B, $B@0?t78?t$NB?9`<0%*%V%8%'%/%H$H$7$FJV$9(B.
 @item @var{v} $B$N;XDj$,$J$$>l9g(B, $BD>A0$N(B @code{ptogf2n()} $B8F$S=P$7(B  @item
   @var{v} $B$N;XDj$,$J$$>l9g(B, $BD>A0$N(B @code{ptogf2n()} $B8F$S=P$7(B
 $B$K$*$1$k0z?t$NJQ?t(B ($B%G%U%)%k%H$O(B @code{x}), $B;XDj$,$"$k>l9g$K$O(B  $B$K$*$1$k0z?t$NJQ?t(B ($B%G%U%)%k%H$O(B @code{x}), $B;XDj$,$"$k>l9g$K$O(B
 $B;XDj$5$l$?ITDj85$rJQ?t$H$9$kB?9`<0$rJV$9(B.  $B;XDj$5$l$?ITDj85$rJQ?t$H$9$kB?9`<0$rJV$9(B.
   \E
   \BEG
   @item
   Returns a polynomial representing @var{m}.
   @item
   If @var{v} is used as the variable of the output.
   If @var{v} is not specified, the variable of the argument
   of the latest @code{ptogf2n()} call. The default variable is @code{x}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 652  t^13+t^12+t^11+t^10
Line 1051  t^13+t^12+t^11+t^10
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{ptogf2n}  @fref{ptogf2n}
 @end table  @end table
   
 @node defpoly_mod2,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node ptosfp sfptop,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node ptosfp sfptop,,, Functions for Finite fields
   @subsection @code{ptosfp}, @code{sfptop}
   @findex ptosfp
   @findex sfptop
   
   @table @t
   @item ptosfp(@var{p})
   @itemx sfptop(@var{p})
   \JP :: $B>.I8?tM-8BBN$X$NJQ49(B, $B5UJQ49(B
   \EG :: Transformation to/from a small finite field
   @end table
   
   @table @var
   @item return
   \JP $BB?9`<0(B
   \EG polynomial
   @item p
   \JP $BB?9`<0(B
   \EG polynomial
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @code{ptosfp()} $B$O(B, $BB?9`<0$N78?t$r(B, $B8=:_@_Dj$5$l$F$$$k>.I8?tM-8BBN(B
   GF(p^@var{n}) $B$N85$KD>@\JQ49$9$k(B. $B78?t$,4{$KM-8BBN$N85$N>l9g$OJQ2=$7$J$$(B.
   $B@5@0?t$N>l9g(B, $B$^$:0L?t$G>jM>$r7W;;$7$?$"$H(B, $BI8?t(B @var{p} $B$K$h$j(B @var{p}
   $B?JE83+$7(B, @var{p} $B$r(B x $B$KCV$-49$($?B?9`<0$r(B, $B86;O85I=8=$KJQ49$9$k(B.
   $BNc$($P(B, GF(3^5) $B$O(B GF(3)[x]/(x^5+2*x+1) $B$H$7$FI=8=$5$l(B, $B$=$N3F(B
   $B85$O86;O85(B x $B$K4X$9$k$Y$-;X?t(B @var{k} $B$K$h$j(B @var{@@_k} $B$H$7$F(B
   $BI=<($5$l$k(B. $B$3$N$H$-(B, $BNc$($P(B @var{23 = 2*3^2+3+2} $B$O(B, 2*x^2+x+2
   $B$HI=8=$5$l(B, $B$3$l$O7k6I(B x^17 $B$HK!(B x^5+2*x+1 $B$GEy$7$$$N$G(B,
   @var{@@_17} $B$HJQ49$5$l$k(B.
   @item
   @code{sfptop()} $B$O(B @code{ptosfp()} $B$N5UJQ49$G$"$k(B.
   \E
   \BEG
   @item
   @code{ptosfp()} converts coefficients of a polynomial to
   elements in a small finite field GF(@var{p^n}) set as a ground field.
   If a coefficient is already an element of the field,
   no conversion is done. If a coefficient is a positive integer,
   then its residue modulo @var{p^n} is expanded as @var{p}-adic integer,
   then @var{p} is substituted by @var{x}, finally the polynomial
   is converted to its correspoding logarithmic representation
   with respect to the primitive element.
   For example, GF(3^5) is represented as F(3)[@var{x}]/(@var{x^5+2*x+1}),
   and each element of the field is represented as @var{@@_k}
   by its exponent @var{k} with respect to the primitive element @var{x}.
   @var{23 = 2*3^2+3+2} is represented as @var{2*x^2+x+2} and
   it is equivalent to @var{x^17} modulo @var{x^5+2*x+1}.
   Therefore an integer @var{23} is conterted to @var{@@_17}.
   @item
   @code{sfptop()} is the inverse of @code{ptosfp()}.
   \E
   @end itemize
   
   @example
   [196] setmod_ff(3,5);
   [3,x^5+2*x+1,x]
   [197] A = ptosfp(23);
   @@_17
   [198] 9*2+3+2;
   23
   [199] x^17-(2*x^2+x+2);
   x^17-2*x^2-x-2
   [200] sremm(@@,x^5+2*x+1,3);
   0
   [201] sfptop(A);
   23
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{setmod_ff}, @fref{simp_ff}
   @end table
   \JP @node defpoly_mod2,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node defpoly_mod2,,, Functions for Finite fields
 @subsection @code{defpoly_mod2}  @subsection @code{defpoly_mod2}
 @findex defpoly_mod2  @findex defpoly_mod2
   
 @table @t  @table @t
 @item defpoly_mod2(@var{d})  @item defpoly_mod2(@var{d})
 :: GF(2) $B>e4{Ls$J0lJQ?tB?9`<0$N@8@.(B  \JP :: GF(2) $B>e4{Ls$J0lJQ?tB?9`<0$N@8@.(B
   \EG :: Generates an irreducible univariate polynomial over GF(2).
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $BB?9`<0(B  \JP $BB?9`<0(B
   \EG univariate polynomial
 @item d  @item d
 $B@5@0?t(B  \JP $B@5@0?t(B
   \EG positive integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @samp{fff} $B$GDj5A$5$l$F$$$k(B.  @samp{fff} $B$GDj5A$5$l$F$$$k(B.
 @item  @item
Line 682  t^13+t^12+t^11+t^10
Line 1165  t^13+t^12+t^11+t^10
 3 $B9`<0$,B8:_$7$J$1$l$P(B, $B4{Ls(B 5 $B9`<0$NCf$G(B, $BBh(B 2 $B9`$N<!?t$,$b$C$H$b>.$5$/(B,  3 $B9`<0$,B8:_$7$J$1$l$P(B, $B4{Ls(B 5 $B9`<0$NCf$G(B, $BBh(B 2 $B9`$N<!?t$,$b$C$H$b>.$5$/(B,
 $B$=$NCf$GBh(B 3 $B9`$N<!?t$,$b$C$H$b>.$5$/(B, $B$=$NCf$GBh(B 4 $B9`$N<!?t$,$b$C$H$b(B  $B$=$NCf$GBh(B 3 $B9`$N<!?t$,$b$C$H$b>.$5$/(B, $B$=$NCf$GBh(B 4 $B9`$N<!?t$,$b$C$H$b(B
 $B>.$5$$$b$N$rJV$9(B.  $B>.$5$$$b$N$rJV$9(B.
   \E
   \BEG
   @item
   Defined in @samp{fff}.
   @item
   An irreducible univariate polynomial of degree @var{d} is returned.
   @item
   If an irreducible trinomial @var{x^d+x^m+1} exists, then the one
   with the smallest @var{m} is returned.
   Otherwise, an irreducible pentanomial @var{x^d+x^m1+x^m2+x^m3+1}
   (@var{m1>m2>m3} is returned.
   @var{m1}, @var{m2} and @var{m3} are determined as follows:
   Fix @var{m1} as small as possible. Then fix @var{m2} as small as possible.
   Then fix @var{m3} as small as possible.
   \E
 @end itemize  @end itemize
   
 @example  @example
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node fctr_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node sffctr,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node sffctr,,, Functions for Finite fields
   @subsection @code{sffctr}
   @findex sffctr
   
   @table @t
   @item sffctr(@var{poly})
   \JP :: $BB?9`<0$N>.I8?tM-8BBN>e$G$N4{LsJ,2r(B
   \EG :: Irreducible factorization over a small finite field.
   @end table
   
   @table @var
   @item return
   \JP $B%j%9%H(B
   \EG list
   @item poly
   \JP $BM-8BBN>e$N(B $BB?9`<0(B
   \EG polynomial over a finite field
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $BB?9`<0$r(B, $B8=:_@_Dj$5$l$F$$$k>.I8?tM-8BBN>e$G4{LsJ,2r$9$k(B.
   @item
   $B7k2L$O(B, [[@var{f1},@var{m1}],[@var{f2},@var{m2}],...] $B$J$k(B
   $B%j%9%H$G$"$k(B. $B$3$3$G(B, @var{fi} $B$O(B monic $B$J4{Ls0x;R(B, @var{mi} $B$O$=$N(B
   $B=EJ#EY$G$"$k(B.
   \E
   \BEG
   @item
   Factorize @var{poly} into irreducible factors over
   a small finite field currently set.
   @item
   The result is a list [[@var{f1},@var{m1}],[@var{f2},@var{m2}],...],
   where @var{fi} is a monic irreducible factor and @var{mi} is its
   multiplicity.
   \E
   @end itemize
   
   @example
   [0] setmod_ff(2,10);
   [2,x^10+x^3+1,x]
   [1] sffctr((z*y^3+z*y)*x^3+(y^5+y^3+z*y^2+z)*x^2+z^11*y*x+z^10*y^3+z^11);
   [[@@_0,1],[@@_0*z*y*x+@@_0*y^3+@@_0*z,1],[(@@_0*y+@@_0)*x+@@_0*z^5,2]]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @fref{setmod_ff},
   @fref{modfctr}
   @end table
   
   \JP @node fctr_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node fctr_ff,,, Functions for Finite fields
 @subsection @code{fctr_ff}  @subsection @code{fctr_ff}
 @findex fctr_ff  @findex fctr_ff
   
 @table @t  @table @t
 @item fctr_ff(@var{poly})  @item fctr_ff(@var{poly})
 :: 1 $BJQ?tB?9`<0$NM-8BBN>e$G$N4{LsJ,2r(B  \JP :: 1 $BJQ?tB?9`<0$NM-8BBN>e$G$N4{LsJ,2r(B
   \EG :: Irreducible univariate factorization over a finite field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B%j%9%H(B  \JP $B%j%9%H(B
   \EG list
 @item poly  @item poly
 $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0(B  \JP $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0(B
   \EG univariate polynomial over a finite field
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @samp{fff} $B$GDj5A$5$l$F$$$k(B.  @samp{fff} $B$GDj5A$5$l$F$$$k(B.
 @item  @item
Line 719  t^13+t^12+t^11+t^10
Line 1277  t^13+t^12+t^11+t^10
 $B=EJ#EY$G$"$k(B.  $B=EJ#EY$G$"$k(B.
 @item  @item
 @var{poly} $B$N<g78?t$O<N$F$i$l$k(B.  @var{poly} $B$N<g78?t$O<N$F$i$l$k(B.
   \E
   \BEG
   @item
   Defined in @samp{fff}.
   @item
   Factorize @var{poly} into irreducible factors over the current base field.
   @item
   The result is a list [[@var{f1},@var{m1}],[@var{f2},@var{m2}],...],
   where @var{fi} is a monic irreducible factor and @var{mi} is its
   multiplicity.
   @item
   The leading coefficient of @var{poly} is abandoned.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 730  t^13+t^12+t^11+t^10
Line 1301  t^13+t^12+t^11+t^10
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node irredcheck_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node irredcheck_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node irredcheck_ff,,, Functions for Finite fields
 @subsection @code{irredcheck_ff}  @subsection @code{irredcheck_ff}
 @findex irredcheck_ff  @findex irredcheck_ff
   
 @table @t  @table @t
 @item irredcheck_ff(@var{poly})  @item irredcheck_ff(@var{poly})
 :: 1 $BJQ?tB?9`<0$NM-8BBN>e$G$N4{LsH=Dj(B  \JP :: 1 $BJQ?tB?9`<0$NM-8BBN>e$G$N4{LsH=Dj(B
   \EG :: Primality check of a univariate polynomial over a finite field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 0|1  0|1
 @item poly  @item poly
 $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0(B  \JP $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0(B
   \EG univariate polynomial over a finite field
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @samp{fff} $B$GDj5A$5$l$F$$$k(B.  @samp{fff} $B$GDj5A$5$l$F$$$k(B.
 @item  @item
 $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0$N4{LsH=Dj$r9T$$(B, $B4{Ls$N>l9g(B 1, $B$=$l0J30$O(B 0 $B$rJV$9(B.  $BM-8BBN>e$N(B 1 $BJQ?tB?9`<0$N4{LsH=Dj$r9T$$(B, $B4{Ls$N>l9g(B 1, $B$=$l0J30$O(B 0 $B$rJV$9(B.
   \E
   \BEG
   @item
   Defined in @samp{fff}.
   @item
   Returns 1 if @var{poly} is irreducible over the current base field.
   Returns 0 otherwise.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 767  x^10+14687973587364016969
Line 1351  x^10+14687973587364016969
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   
 @node randpoly_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node randpoly_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node randpoly_ff,,, Functions for Finite fields
 @subsection @code{randpoly_ff}  @subsection @code{randpoly_ff}
 @findex randpoly_ff  @findex randpoly_ff
   
 @table @t  @table @t
 @item randpoly_ff(@var{d},@var{v})  @item randpoly_ff(@var{d},@var{v})
 :: $BM-8BBN>e$N(B $BMp?t78?t(B 1 $BJQ?tB?9`<0$N@8@.(B  \JP :: $BM-8BBN>e$N(B $BMp?t78?t(B 1 $BJQ?tB?9`<0$N@8@.(B
   \EG :: Generation of a random univariate polynomial over a finite field.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $BB?9`<0(B  \JP $BB?9`<0(B
   \EG polynomial
 @item d  @item d
 $B@5@0?t(B  \JP $B@5@0?t(B
   \EG positive integer
 @item v  @item v
 $BITDj85(B  \JP $BITDj85(B
   \EG indeterminate
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 @samp{fff} $B$GDj5A$5$l$F$$$k(B.  @samp{fff} $B$GDj5A$5$l$F$$$k(B.
 @item  @item
 @var{d} $B<!L$K~(B, $BJQ?t$,(B @var{v}, $B78?t$,8=:_@_Dj$5$l$F$$$kM-8BBN$KB0$9$k(B  @var{d} $B<!L$K~(B, $BJQ?t$,(B @var{v}, $B78?t$,8=:_@_Dj$5$l$F$$$kM-8BBN$KB0$9$k(B
 1 $BJQ?tB?9`<0$r@8@.$9$k(B. $B78?t$O(B @code{random_ff()} $B$K$h$j@8@.$5$l$k(B.  1 $BJQ?tB?9`<0$r@8@.$9$k(B. $B78?t$O(B @code{random_ff()} $B$K$h$j@8@.$5$l$k(B.
   \E
   \BEG
   @item
   Defined in @samp{fff}.
   @item
   Generates a polynomial of @var{v} such that the degree is less than @var{d}
   and the coefficients are in the current base field.
   The coefficients are generated by @code{random_ff()}.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 810  x^10+14687973587364016969
Line 1410  x^10+14687973587364016969
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}, @fref{random_ff}  @fref{setmod_ff}, @fref{random_ff}
 @end table  @end table
   
 @node ecm_add_ff ecm_sub_ff ecm_chsgn_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B  \JP @node ecm_add_ff ecm_sub_ff ecm_chsgn_ff,,, $BM-8BBN$K4X$9$kH!?t$N$^$H$a(B
   \EG @node ecm_add_ff ecm_sub_ff ecm_chsgn_ff,,, Functions for Finite fields
 @subsection @code{ecm_add_ff}, @code{ecm_sub_ff}, @code{ecm_chsgn_ff}  @subsection @code{ecm_add_ff}, @code{ecm_sub_ff}, @code{ecm_chsgn_ff}
 @findex ecm_add_ff  @findex ecm_add_ff
 @findex ecm_sub_ff  @findex ecm_sub_ff
Line 823  x^10+14687973587364016969
Line 1425  x^10+14687973587364016969
 @table @t  @table @t
 @item ecm_add_ff(@var{p1},@var{p2},@var{ec})  @item ecm_add_ff(@var{p1},@var{p2},@var{ec})
 @itemx ecm_sub_ff(@var{p1},@var{p2},@var{ec})  @itemx ecm_sub_ff(@var{p1},@var{p2},@var{ec})
 @itemx ecm_chsgn_ff(@var{p1},@var{p2},@var{ec})  @itemx ecm_chsgn_ff(@var{p1})
 :: $BBJ1_6J@~>e$NE@$N2C;;(B, $B8:;;(B, $B5U85(B  \JP :: $BBJ1_6J@~>e$NE@$N2C;;(B, $B8:;;(B, $B5U85(B
   \EG :: Addition, Subtraction and additive inverse for points on an elliptic curve.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 $B%Y%/%H%k$^$?$O(B 0  \JP $B%Y%/%H%k$^$?$O(B 0
 @item p1,p2  \EG vector or 0
 $BD9$5(B 3 $B$N%Y%/%H%k$^$?$O(B 0  @item p1 p2
   \JP $BD9$5(B 3 $B$N%Y%/%H%k$^$?$O(B 0
   \EG vector of length 3 or 0
 @item ec  @item ec
 $BD9$5(B 2 $B$N%Y%/%H%k(B  \JP $BD9$5(B 2 $B$N%Y%/%H%k(B
   \EG vector of length 2
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
   \BJP
 @item  @item
 $B8=:_@_Dj$5$l$F$$$kM-8BBN>e$G(B,  @var{ec} $B$GDj5A$5$l$kBJ1_6J@~>e$N(B  $B8=:_@_Dj$5$l$F$$$kM-8BBN>e$G(B,  @var{ec} $B$GDj5A$5$l$kBJ1_6J@~>e$N(B
 $BE@(B @var{p1}, @var{p2} $B$NOB(B @var{p1+p2}, $B:9(B @var{p1-p2}, $B5U85(B @var{-p1} $B$rJV$9(B.  $BE@(B @var{p1}, @var{p2} $B$NOB(B @var{p1+p2}, $B:9(B @var{p1-p2}, $B5U85(B @var{-p1} $B$rJV$9(B.
 @item  @item
 @var{ec} $B$O(B, $B@_Dj$5$l$F$$$kM-8BBN$,4qI8?tAGBN$N>l9g(B,  @var{ec} $B$O(B, $B@_Dj$5$l$F$$$kM-8BBN$,4qI8?tAGBN$N>l9g(B,
 @var{y^2=x^3+ec[0]x+ec[1]}, $BI8?t(B 2 $B$N>l9g(B @var{y^2+xy=x^3+ec[0]x^2+ec[1]}  y^2=x^3+ec[0]x+ec[1], $BI8?t(B 2 $B$N>l9g(B y^2+xy=x^3+ec[0]x^2+ec[1]
 $B$rI=$9(B.  $B$rI=$9(B.
 @item  @item
 $B0z?t(B, $B7k2L$H$b$K(B, $BL58B1sE@$O(B 0 $B$GI=$5$l$k(B.  $B0z?t(B, $B7k2L$H$b$K(B, $BL58B1sE@$O(B 0 $B$GI=$5$l$k(B.
Line 855  x^10+14687973587364016969
Line 1462  x^10+14687973587364016969
 $B$G3d$kI,MW$,$"$k(B.  $B$G3d$kI,MW$,$"$k(B.
 @item  @item
 @var{p1}, @var{p2} $B$,BJ1_6J@~>e$NE@$+$I$&$+$N%A%'%C%/$O$7$J$$(B.  @var{p1}, @var{p2} $B$,BJ1_6J@~>e$NE@$+$I$&$+$N%A%'%C%/$O$7$J$$(B.
   \E
   \BEG
   @item
   Let @var{p1}, @var{p2} be points on the elliptic curve represented by
   @var{ec} over the current base field.
   ecm_add_ff(@var{p1},@var{p2},@var{ec}), ecm_sub_ff(@var{p1},@var{p2},@var{ec})
   and ecm_chsgn_ff(@var{p1}) returns
   @var{p1+p2}, @var{p1-p2} and @var{-p1} respectively.
   @item
   If the current base field is a prime field of odd order, then
   @var{ec} represents y^2=x^3+ec[0]x+ec[1].
   If the characteristic of the current base field is 2,
   then @var{ec} represents y^2+xy=x^3+ec[0]x^2+ec[1].
   @item
   The point at infinity is represented by 0.
   @item
   If an argument denoting a point is a vector of length 3,
   then it is the projective coordinate. In such a case
   the third coordinate must not be 0.
   @item
   If the result is a vector of length 3, then the third coordinate
   is not equal to 0 but not necessarily 1. To get the result by
   the affine coordinate, the first and the second coordinates should
   be divided by the third coordinate.
   @item
   The check whether the arguments are on the curve is omitted.
   \E
 @end itemize  @end itemize
   
 @example  @example
Line 878  x^10+14687973587364016969
Line 1512  x^10+14687973587364016969
 @end example  @end example
   
 @table @t  @table @t
 @item $B;2>H(B  \JP @item $B;2>H(B
   \EG @item References
 @fref{setmod_ff}  @fref{setmod_ff}
 @end table  @end table
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.7

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