数値演算

Topへ

述語名/引数  (:= *X s式)
要約 与えられたs式を計算し結果を変数に代入します。
互換性 Win Unix
解説 式の中に実数と整数が混在する場合は実数として計算されます。
ETIが扱える数値の範囲は、その他の仕様を参照。

使用可能な演算子

+    加算
-    減算
x    乗算
d    除算
mod  剰余
and 論理積
or 論理和
xor 排他的論理和
<< 左シフト
>> 右シフト
not 否定

notのみ単項演算子で、他は二項演算子です。

例:

(:= *X (+ 1 2))

(:= *X (- 1 2))

(:= *X (x 2 3));;アルファベットのx

(:= *X (d 4 2))

(:= *Y (d (+ 3.0 1.0) (- 3.0 5))) ;;Y= (3.0 + 1.0) / (3.0 -5) 入れ子も可能

(:= *M (mod 4 1)) ;;4を1で割った余り

(:= *A (and 1 2)) //論理積

(:= *O (or 1 2)) //論理和

(:= *X (xor 1 2)) //排他的論理和

(:= *L (<< 3 1)) //3を左に1ビットシフト

(:= *R (>> 3 2)) //3を右に2ビットシフト

(:= *N (not 0)) //0の否定


述語名/引数  (>  値1 値2)
 (<  値1 値2)
 (>= 値1 値2)
 (<= 値1 値2)
要約 与えられた値の大小関係を比較し、成り立てば成功します。
互換性 Win Unix
解説 値には、整数、実数、文字列を指定できます。
文字列が指定された場合は辞書順に大小関係が決定します。漢字の場合は文字コードによって大小関係が決定します。
文字列と数値の比較は出来ません。

例:

(> "山川" "川中")

(>= 1 2.3)

(< 1 2)

 


述語名/引数  (sqrt 数値 *X )
要約 与えられた数値の平方根を計算し結果を変数に代入します。
互換性 Win
解説 *Xには実数が返ります。

例:

(sqrt 3 *X)

 

 


述語名/引数  (rand *X )
要約 0から1までの乱数を発生します。
互換性 Win Unix
解説 述語srandの設定に基づいて生成される数は擬似乱数です。

例:

(as (main):(init)(random *r)(print *r))

(as (init):
 (time *t)(srand *t)) ;システム時間から乱数テーブルを生成

(as (random *r):
 (rand *w)(:= *r (x *w 100))) ;0から100までの乱数を生成

実行:

[D]>(main)

 

 


述語名/引数  (srand 整数 )
要約 与えられた整数から乱数テーブルを作成します。
互換性 Win Unix
解説 通常プロセスの寿命の中で一度だけ実行されます。

例:

randの例を参照