reps)nが素数かどうかを決定します。返り値が2の場合はnは確実に素数,1の場合はnは確率的に素数(確定的ではない),0の時は確実に非素数であることを意味します。この関数は複数の除算を伴う,Miller-Rabin確率的素数テストを行います。4^(-reps)以下です。適当なrepsは大体15~50です。op)opより次に大きい素数をropに格納します。この関数は素数判定に確率的アルゴリズムを使用します。実用的には十分で,合成数を選んでしまう可能性は非常に小さいと思われます。最大公約数)を求めてropに格納します。入力値に負の値が入っていても,結果は常に正数になります。op2のGCDを計算します。ropがNULLでなければ,結果はここに格納されます。intの範囲に収まるものであれば,これが返り値になります。op1に格納されます。intに収まる筈です。gを満足する係数sとtを求めて格納します。gは常に正数で,aとbが負数であっても関係ありません(両方ゼロならばゼロになります)。g)を満足するように定まり,結果としてsとtは一意になります。下記の例外があります。sgn(b)となります。sgn(b)となります。tがNULLの時はtの計算を行いません。Multiple,最小公倍数)を計算し,ropに格納します。op1とop2の符号とは無関係に,ropは常に正の値になります。op1かop2のどちらかがゼロの場合は,ropもゼロになります。op2)op1のモジュロop2演算の逆数を求め,ropに格納します。0となる,つまりゼロ環に退化)を満たすように決まります。逆数が存在していない時にはゼロを返し,ropは不定になります。op2がゼロの時のことはこの関数では考慮していません。b)Jacobi記号(a/b)の計算を行います。これはbが奇数の時のみ定義された値です。(a/p)の計算を行います。pが正の素数である時のみ定義されており,Jacobi記号と同じ値になります。b)Kronecker拡大付きのJacobi記号(a/b)の計算を行います。aが奇数の時は(a/2)=(2/a),偶数の時は(a/2)=0になります。bが奇数の時は,Jacobi記号とKronecker記号は同じものになります。mpz_kronecker_ui以下の関数はJacobi記号の混合精度計算に利用できます。References)か,数論のテキストをご覧ください。mpz_kronecker_ui関数を使ったサンプルプログラムdemos/qcn.cも参照して下さい。f)opから因数fを全て抜き取り,その結果をropに格納します。返り値は,取り除かれた回数です。m)nの階数を求め,ropに格納します。m重階数n!^(m)を計算します。n)nの素数階乗,即ちn以下の全ての正の素数の積を求め,ropに格納します。kを求め,ropに格納します。bin(n+k-1,k)を計算します。n)mpz_fib_ui関数はfnにF[n],即ち,n項目のFibonacci数を計算して格納します。F[n-1]を計算して格納します。これらの関数は,単独のFibonacci数列の値を計算するためのものです。数列全体を欲しい時には,mpz_fib2_ui関数から出発し,それ以降はF[n+1]=F[n]+F[n-1]を繰り返し実行すると高速に数列全体が得られます。n)mpz_lucnum_ui関数はlnにL[n],即ち,Lucas数のn番目の値を求めて格納します。L[n-1]を求めて格納します。これらの関数は単独のLucus数を計算するためのものです。数列全体を欲しい時には,mpz_lucnum2_ui関数から出発し,それ以降はL[n+1]=L[n]+L[n-1]を繰り返し実行すると高速に数列全体が得られます。Fibonacci数やLucas数は漸化式で定義されていますので,mpz_fib2_ui関数とmpz_lucnum2_ui関数を一度に呼び出す必要はありません。Algorithmに書いておきました。その逆の変換は自明です。