$PROROOT/library/data/arithmのディレクトリには、数値を扱う述語が格納されています。arith.proファイルには、組み込み述語のsum/3、times/3、divide/4と類似した整数演算用の述語が設けられています。between.proの中では、整数を生成する述語があります。long.proは大きなファイルですが、この中には有理数無限多倍長演算のための完全な述語群があります。このために、long_exa.proという例題ファイルが設けられています。乱数を生成するためには、random.proを参照して下さい。...
移動
次へ 前へ
上へ 最上
参考
イントロダクション
集合とバッグ
リスト操作
配列の実装法
高度な項の操作
様々なデータ構造
算術述語
特殊な入力述語
書式付出力述語
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > ライブラリマニュアル > 算術述語

算術述語

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

$PROROOT/library/data/arithmのディレクトリには、数値を扱う述語が格納されています。arith.proファイルには、組み込み述語のsum/3、times/3、divide/4と類似した整数演算用の述語が設けられています。between.proの中では、整数を生成する述語があります。long.proは大きなファイルですが、この中には有理数無限多倍長演算のための完全な述語群があります。このために、long_exa.proという例題ファイルが設けられています。乱数を生成するためには、random.proを参照して下さい。

arith.proファイル ----------------- times(?整数1,?整数2,?整数3) 整数3 = 整数1 * 整数2

divide(?A,?B,?Q,?R) A = B*Q + R,

between.proファイル ------------------- between(+小さい数,+大きい数,?N) 小さい数と大きい数との間にあるすべての数Nを順に生成する。

gen_arg(?N,+項,?引数) 項の第N番目の引数を順に生成する。

gen_nat(?整数) 自然数かどうかのチェック、または0,1,2,...を生成する。

gen_nat(+L,?自然数) 自然数 = L,L+1,L+2,...

gen_int(-整数) 整数 = 0,1,-1,2,-2,...

long.proファイル ---------------- 本ファイル内の述語の引数として現れるRは、多倍長演算の基数を表す。なお、eval/2では基数として100を使用している。

ratnum(+項) 項が有理数であれば真。

eval(+項) 色々な機能を持つ簡単な評価インタプリタ。

eval(+式,-結果) 有理数の式を評価して結果に返す。

portray_ratnum(+数) 数を整形して表示する。

ratnum(+数,+演算子,?サイン,?多倍長自然数,?多倍長自然数) あらゆる形態の数を、本質的な部分に変換する。

standardise(+数,?結果) 数を正規化する。

add(+A,+B,?C) = eval(C is A + B)

multiply(+A,+B,?C) = eval(C is A * B)

power(+A,+B,?C) = eval(C is A ^ B)

intq(+有理数,+ルート,-整数) 有理数の整数部分を取り出す。

gcdq(+N,+M,+R,-Gcd) 最大公約数

mulq(+N,+M,+R,-Mult) N, Mの積

divq(+N,+M,+R,-商) 有理数の商

divo(+N,+M,+R, -商, -あまり) 有理数の商およびあまり

powq(+N,+M,+R,-Pow) 有理数の冪乗

negq(+A,+R,-負数) 有理数Aの符号反転

addq(+A,+B,+R,-和) 有理数の和。

subq(+A,+B,+R,-差) 有理数の差。

comq(+A,+B,+R,?S) 有理数の比較

nthq(+N,+A,+R,-Root) AのN乗根を見つけようとする。有理数にならなければ、失敗する。

logq(+B,+X,+R,-L) 有理数Xの有理数Bを底とする対数をLとする。(B^L = X)

absq(+A,-S,-B) |A| = B 及び S は A の 符号にしたがって +,-,0 のいずれかになる。ただし、Aが未定義のとき S=*。

oneq(+A,-S,-B) |log A | = log B, 及び S = sign(log A)

ratlog(+B,+X,+R,-L) B, X > 0 及び B^L = Xならば、真。

lograt(+B,+X,+R,-N,-D) B(>1)とX(>1)が有理数で、B^N = X^D、かつ gcd(N,D) = 1であるとき真。

logn(+B,+N,+P,-X,+R,-L) X >= B > 1, P = B^N, X = B^Lであれば真。

random.proファイル ------------------ random(+N,-整数) 整数 N >= 1 を与えると、0からN-1までの間に整数乱数を生成する。

randomise 乱数列を初期化する。

randomise(+種) 好きな値を乱数の種として与える。

random(+リスト,-要素,-あまり) 要素をリストの中からランダムに選んだ要素とし、残りのリストを「あまり」に返す。

rand_perm(+リスト,-順列) リストの順列をランダムに生成する。

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/library/predari/home_jp.html
published 2008/10/6 update 1995/10/30 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS