kprolog K-Prolog Compiler Version 6.0

算術演算

算術演算は、算術演算を行う述語の引数として、算術式が現れたときに行わ れます。算術演算の結果は、必ず整数または浮動小数点数になりますが、その 値を算術式の値と呼ぶことにします。

算術演算が行われる述語は、以下で述べる2引数述語、
is=:==\==/=<=<>>=
と、前述の入出力関係の述語の一部で引 数として値が整数になる算術式が書ける場合の2種類です。

算術式の評価の途中でエラーが発生した場合は、次のエラーをシグナルします。

2
不正算術式
3
ゼロ除算

算術式

次の形の項が算術式です。以下、X、Y等は算術式とします。[]の中は、 評価した結果の値の型を表します。[-]は、その式のX、Y等がすべて整数 ならば、値も整数であり、そうでなければ、値は浮動小数点数であることを表 します。 また、小整数とは、32ビットで表せる整数を意味するものとします。

整数
その整数自身の値。[整数]
浮動小数点数
その浮動小数点数自身の値。[浮動小数点数]
X + Y
XとYの値の和。[-]
X - Y
XとYの値の差。[-] -X
Xの値の符号を反転した値。[-]
X * Y
XとYの値の積。[-]
X / Y
Xの値をYの値で割った商。[-]
X // Y
Xの値をYの値で割った商。[整数]
X rem Y
X mod Y
Xの値をYの値で割った剰余(切捨て)。[-]
X ** Y
XのY乗。[-]
X / Y
X and Y
X,Yの値のビットごとの論理積。 X,Yは小整数でなければなりません。[小整数]
X / Y
X or Y
X,Yの値のビットごとの論理和。 X,Yは小整数でなければなりません。[小整数]
X >< Y
X,Yの値のビットごとの排他論理和。 X,Yは小整数でなければなりません。[小整数]
X
~X
Xの値のビットごとの反転。 X,Yは小整数でなければなりません。[小整数]
X << Y
XをYビット左シフトした値。 X,Yは小整数でなければなりません。[小整数]
X >> Y
XをYビット右シフトした値。 X,Yは小整数でなければなりません。[小整数]
[X]
Xの値。[-]
("A"は、[1333]ですから値は1333です)
(X)
Xの値。[-]
toascii(X)
Xの値が漢字コードならば、ASCIIコードに変換した値です。Xは小整数でなければなりません。[小整数]
tokanji(X)
Xの値が ASCIIコードならば、漢字コードに変換した値です。Xは小整数でなければなりません。[小整数]
maxint
最大の小整数。[小整数]
minint
最小の小整数。[小整数]
max(X,…,Z)
X,…,Zの値の最大値。[-]
min(X,…,Z)
X,…,Zの値の最小値。[-]
gcd(X,Y)
X,Yの最大公約数。[-]
int(X)
Xの値を整数化した値。[整数]
float(X)
Xの値を浮動小数点数化した値。[浮動小数点数]
ceiling(X)
Xの値より小さくない最小の整数。[整数]
round(X)
Xの値を丸めた整数。[整数]
truncate(X)
Xの値を切捨てた整数。[整数]
floor(X)
Xの値より大きくない最大の整数。[整数]
ceil(X)
Xの値より小さくない最小の整数。[整数]
abs(X)
Xの絶対値。[-]
rand
乱数。[小整数]
time
現在の時刻。[浮動小数点数]
pi
円周率。[浮動小数点数]
e
自然対数の底。[浮動小数点数]
exp(X)
Xの指数。[浮動小数点数]
log(X)
Xの自然対数。[浮動小数点数]
sqrt(X)
Xの平方根。[浮動小数点数]
sin(X)
Xの正弦。[浮動小数点数]
cos(X)
Xの余弦。[浮動小数点数]
tan(X)
Xの正接。[浮動小数点数]
asin(X)
Xの逆正弦。[浮動小数点数]
acos(X)
Xの逆余弦。[浮動小数点数]
atan(X)
Xの逆正接。[浮動小数点数]
atan2(X,Y)
Y/Xの逆正接。[浮動小数点数]
sinh(X)
Xの双曲線正弦。[浮動小数点数]
cosh(X)
Xの双曲線余弦。[浮動小数点数]
tanh(X)
Xの双曲線正接。[浮動小数点数]
epsilon
1.0より大きい最小の数と1.0の差。[浮動小数点数]
[注意]
いずれの場合も、引数の値が変域を外れたり、関数の値が計算できな いときは、エラー2番をシグナルするか、または意味のない値を返します。 エラーをシグナルできるケースは、matherr()関数をそのOSがサポートしているか どうかによって違いますので、機種に依存します。


算術演算述語

算術計算と算術式の値の比較を行なう機能が用意されています。 算術計算を行なうにはis/2を使用します。また、値の比較には =:=、=/=、==、<、=<、>、>=が使用できます。


?Value is @X
Value
X算術式

算術式Xを評価し、その値を Value と単一化します。この述語は、 算術式の値を計算するために用います。

エラー
instantiation_error
type_error


@X=:= @Y
X算術式
Y算術式

算術式Xの値がYの値と等しければ成功し、等しくなければ失敗します。

エラー
instantiation_error
type_error


@X=\= @Y
X算術式
Y算術式
@X=/= @Y
X算術式
Y算術式

算術式Xの値がYの値と等しくなければ成功し、等しければ失敗します。

エラー
instantiation_error
type_error


@X< @Y
X算術式
Y算術式

算術式Xの値がYの値とより小さければ成功し、小さくなければ失敗します。

エラー
instantiation_error
type_error


@X=< @Y
X算術式
Y算術式

算術式Xの値がYの値以下であれば成功し、より大きければ失敗します。

エラー
instantiation_error
type_error


@X> @Y
X算術式
Y算術式

算術式Xの値がYの値より大きければ成功し、大きくなければ失敗します。

エラー
instantiation_error
type_error


@X>= @Y
X算術式
Y算術式

算術式Xの値がYの値以上ならば成功し、より小さければ失敗します。

エラー
instantiation_error
type_error



一つ上に戻る 目次に戻る