多倍長演算ライブラリ 使用法

index 目次

  1. コーディング上の注意
  2. ライブラリ一覧

1.コーディング上の注意

#include "longint.h" を指定すること。
注:内部で,標準ヘッダファイル <stdio.h>, <ctype.h>, <sys/types.h>,
<math.h>, <string.h>, <stdlib.h> をインクルードしている。

2.ライブラリ一覧

(1) 構造体

"longint.h" 内で、多倍長整数の1要素を、下記構造体( LINT 型 )として定義している。


(有効桁長、符号、要素配列)
typedef     struct{
            int len;
            int sign;
            int num [501]; }  LINT;

(2) 要素関数                    index (目次に戻る)

関数名及び型 引数及び型 機能
LINT ladd(a, b) LINT a, b; 加算 通常( a + b )
LINT aux1(a, b) LINT a, b; 絶対値( |a| + |b| )
LINT lsub(a, b) LINT a, b; 減算 通常( a − b )
LINT alsub(a, b) LINT a, b; 絶対値( |a| + |b| 、 |a| ≧ |b| )
void linc(a, n) LINT *a;
int n;
インクリメント 通常(単位 n )
void alinc(a, n) LINT *a;
int n;
絶対値(単位 n )インクリメント(n≧0)
void ldec(a, n) LINT *a;
int n;
デクリメント 通常(単位 n )
void aldec(a, n) LINT *a;
int n;
絶対値(単位 n )デクリメント(n≧0)
LINT lmul(a, b) LINT a, b; 乗算関係 通常( a × b )
LINT lmulp(a, b) LINT a, b; 符号無視
void lmul1(a, b) LINT *a, b; a × b → a
LINT lsqr(a) LINT a; 平方
LINT lpwr(a, n) LINT a;
int n;
ベキ乗
LINT lkaijo(n) int n; 階乗
LINT ldivide(a, b, r) LINT a, b, *r; 除算関係 戻り値:除算値、r : 剰余
LINT lmod(a, b) LINT a, b; 剰余
LINT lpwrmod(a, b, n) LINT a, b, n; 法 n における剰余
LINT linv(s, n) LINT s, n; 法 n における逆数
LINT sadd(a, n) LINT a;
int n;
対 int 四則演算 加算
LINT ssub(a, n) LINT a;
int n;
減算
LINT smul(a, n) LINT a;
int n;
乗算
void smul1(a, n) LINT *a;
int n;
乗算( a × n → a )
LINT sdiv(a, n, r) LINT a;
int n, *r;
戻り値:除算、r :剰余
void sdiv1(a, n, r) LINT *a;
int n, *r;
a ÷ n → a、r :剰余
int smod(a, n) LINT a;
int n;
剰余
LINT lread(s) char *s; LINT 型定数設定 文字列 → LINT 型
LINT lset(n) int n; int → LINT 型
void larrayread(a, s, n) LINT *a;
char *s[ ];
int n;
文字列配列 → LINT 型配列
void larrayset(a, x, n) LINT *a;
int *x;
int n;
int 配列 → LINT 型配列
void lwrite(s, a) char *s;
LINT a;
LINT 型数値表示 標準出力
void ldisp(s, a) char *s:
LINT a;
stderr 出力
void lup(a, n) LINT *a;
int n;
シフト 桁上げ
void ldown(a, n) LINT *a;
int n;
桁下げ
LINT lgcd(a, b) LINT a, b; 最大公約数 2数 間
LINT llgcd(a, n) LINT a[ ];
int n;
配列( n :要素数)
LINT llcm(a, b) LINT a, b; 最小公倍数 2数 間
LINT lllcm(a, n) LINT a[ ];
int n;
配列( n :要素数)
void lfactor(x) LINT x; 素因数分解
int lprime_chk(x) LINT x; 素数判定
(戻り値=1:素数,=0:合成数)
LINT det(a, n) LINT *a; int n; 行列式の値(n×n)
int iset(a) LINT a; LINT → int 変換
int lcmp(a, b) LINT a, b; 比較関数
LINT lsqrt(a) LINT a; 平方根
void lswap(a, b) LINT *a, *b; 入替え
LINT lrnd(n) int n; 乱数 n 桁の乱数(*1)
LINT lrnd1(a) LINT a; 0 < x < a の乱数

(*1) 乱数ライブラリの urnd1( ) を使用。init_urnd1(seed)により初期化を行うこと。