<算術 関数/述語/演算子>...
移動
次へ 前へ
上へ 最上
参考
バージョン3から4への移行
イントロダクション
abolish
abort
# append
arg
計算式(arithmetic)
アリティ(arity)
ASCII文字
assert
asserta_term, asserto_term, assertz_term
atom, atomic_length
\(バックスラッシュ)
#bagof, #setof
block, exit_block, cut_block
break
bye
call, execute
文字セット, char_code
#clause, #clause_term
clear_eol, clear_eos, clear_screen
close
コメント
compare
項の比較
値の比較
compiles
concat
連言(conjunction)
consult
コントロールスタック(control stack)
データの型変換(conversion)
copy_term
correct
cpu時間
#current_predicate, #current_atom, current_language
!(カット)
データベース(database)
debug, nodebug, debug_goal
debug_mode
decompcons
指令(directives)
選言(disjunction)
display
編集(edit)
終了(end)
end_of_file文字
equiv_char, image_length, byte_length
例外処理(exceptions)
error_protect, exception, exception_handler
exists
exit
expand_term, phrase(+ゴール,?リスト)
?- export, ?- common, ?- import, ?-hidden
事実(fact)
fail
filepos, files, flush, reset_streams
findall
float_format
# for
functor
gc
get, get0, get_until
getchar
getenv, get_home, get_last, move_cursor
get_global, # global_variable
ゴール(goal)
文法規則(grammar rules)
リストの先頭(head of list)
節のヘッド(head of clause)
help
ifprolog
ifsem
include
index
入力ストリーム(input stream)
インタプリタレベル(interpreter level)
is
length, #reverse
list_mode, listing
リスト(lists)
load, loaded
localtime
ループ(loops)
lower_upper, national_letters
make_atom, make_number
match, # match
# member
modify_mode
?- module, ?- module_body
name
nl
:- nonotify, nonotify
not
number
once
オペレータ(operator)
op, # current_op
outpos, outtab
出力ストリーム(output stream)
program_parameters, system_parameters, user_parameters
parse_atom
parse_position
predicate, predicate_mode
predicate_type
print
手続き(procedure)
program
# prolog_flag
prolog_library
prolog_system, prolog_version, proroot
put
put_byte, get_byte
raise_error
read, read_term
read_error, report_read_error
reconsult(+ファイル名)
# repeat
#retract
retractop
save_system, save_module
see, seeing, seen
set_global
set_home, setoutpos, setupterm
signal, signal_handler, alarm
skip
sort, keysort
spy
dbsize, ssize, gused, dbused, tused, lused
statistics
open, close, stream_control, #current_stream, link_stream
文字列(strings)
複合項(structures)
subatomic
sum, inc
symbol
計算式の構文(syntax of arithmetic expression)
構文チェッカー(syntax checker)
syntax_error
項の構文 (Syntax of terms)
system
system_date, system_time
system_predicate
tab
tell, telling, told
項(term)
X is time
trace, notrace, trace_mode, trace_goal
trace, tracing, traced
トレイル(trail)
true
tty_size
type_of, atom, nonvar, atomic, numeric, digit, realn, integer, struct, letter, var
未定義の述語(undefined_predicate)
?項1 = ?項2, +項1 \= +項2
?複合項 =.. -Univリスト, -複合項 =.. ?Univリスト
unload
unset_global
user
変数(variables)
write
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog V4.1 レファレンスマニュアル > 計算式(arithmetic)

計算式(arithmetic)

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.

<算術 関数/述語/演算子>

IF/Prologでは、整数演算および浮動小数点演算ができます。組み込み関数や述語によって計算式の値が求められます。その結果は、整数あるいは浮動小数のいずれかになります。 計算式表現(計算式)としては、以下のものを書くことができます。 - 数 - 計算式と以下に示す算術演算子のいくつかを組み合わせたもの - 値が計算式になる変数

<評価:is/2>

is/2は、その右側の引数つまり計算式の値を求め、それをまだ値を持っていない左側の引数に単一化します。ほとんどの算術関数および述語は、それらの引数を評価 (計算して値を求めること) します。以下に示す組み込み関数・述語において、計算式は、評価結果が整数あるいは実数にならなければならない計算式表現です。整数_式は整数表現で、必ず整数にならなければなりません。式の評価の結果が要求されたデ−タ型と異なる場合には、例外処理が行われます。

-結果 is +計算式: 計算式は数値が求められ、その結果は結果と単一化されます

注意:is/2は、右側の引数にくる計算式しか評価しません。他の算術関数は、左右両方の引数を評価します。

<範囲>

IF/Prologでは整数を4バイトで表現するので、完全な32ビット演算に使用できます。以下に示す関数は、ロ−カルな最大/最小整数を返します。ユ−ザは、これらの制限を越えないように注意して下さい。オ−バ−/アンダ−フロ−した場合でも、例外処理は行われません。このような場合には、下位の桁だけが残るか、あるいは符号が変えられます。

-結果 is maxint 最大整数(機種による) -結果 is minint 最小整数(機種による)

浮動小数は、通常は8バイトの倍精度浮動小数によって表現されますが、これはロ−カルな"C"の実装に依存します。実数のオ−バ−/アンダ−フロ−が起こると、例外処理out_of_rangeが引き起こされます。

<項の型チェックを行う述語>

digit(+項) 項がアラビア数字の場合は成功する integer(+項) 項が整数の場合は成功する numeric(+項) 項が整数または実数の場合は成功する real(+項) 項が実数の場合は成功する

これらの述語は、項が指定された数値デ−タ型、あるいは指定された型の値を持つ場合に成功します。

<算術演算子: -結果 is ..>

+ +計算式1 単項プラス - +計算式1 単項マイナス +計算式1 + +計算式2 加算、注意を参照して下さい +計算式1 - +計算式2 減算、注意を参照して下さい +計算式1 * +計算式2 乗算、注意を参照して下さい +計算式1 / +計算式2 実数除算、結果は実数 +整数_式1 div +整数_式2 整数除算、結果は整数 +整数_式1 // +整数_式2 整数除算、結果は整数 +計算式1 ^ +計算式2 累乗、結果は実数 +整数_式1 mod +整数_式2 剰余、結果は整数

注意:+,-,*による整数同士の演算結果は、整数になります。実数の引数がある場合には、結果は実数になります。

<シフト演算子: -結果 is ..>

+整数_式1 << +整数_式2 左へシフトする +整数_式1 >> +整数_式2 右へシフトする

<論理演算子: -結果 is ..>

+整数_式1 \/ +整数_式2 ビットごとの or +整数_式1 /\ +整数_式2 ビットごとの and \ +整数_式 1の補数

<対称算術述語>

sum(?計算式1,?計算式2,?計算式3) 計算式1は、計算式2と計算式3の和

inc(+Successor,-IncNumber) IncNumber := Successor - 1 inc(-Successor,+IncNumber) Successor := IncNumber + 1

<算術関数: -結果 is ..>

abs(+計算式) 絶対値 exp(+計算式) 指数関数 ln(+計算式) 自然対数 log10(+計算式) 10を底とする対数 sign(+計算式) 符号:1(正),-1(負),または0 sqrt(+計算式) 平方根

<三角関数: -結果 is ..>

acos(+計算式) 逆余弦 asin(+計算式) 逆正弦 atan(+計算式) 逆正接 cos(+計算式) 余弦 cosh(+計算式) 双曲線余弦 sin(+計算式) 正弦 sinh(+計算式) 双曲線正弦 tan(+計算式) 正接 tanh(+計算式) 双曲線正接

<比較を行う述語>

+計算式1 < +計算式2 値がより小さい +計算式1 =< +計算式2 値がより小さいか等しい +計算式1 =:= +計算式2 値が等しい +計算式1 =\= +計算式2 値が等しくない +計算式1 >= +計算式2 値がより大きいか等しい +計算式1 > +計算式2 値がより大きい +計算式1 = +計算式2 単一化できる +計算式1 \= +計算式2 単一化できない compare(-比較,+項1,+項2) 項1、項2の標準順序に関する比較。 <, >, = のいずれかに比較結果がセットされる。

注意: = および \= は、引数を評価しません。

<変換関数: -結果 is ..>

ceil(+計算式) 切り上げ(結果は実数) float(+計算式) 実数を返す floor(+計算式) 切り下げ(結果は実数) round(+計算式) 四捨五入して整数に変換 trunc(+計算式) 切り捨てによって整数に変換

<変換を行う述語>

make_number(+項,-数) 数またはアトムを数に変換 number(+数,-文字コ−ドリスト) 数を文字コ−ドのリストに変換 number(-数,+文字コ−ドリスト) 文字コ−ドのリストを数に変換

例題を参照して下さい。

注意:算術演算子とオペランドの間には、常にスペ−スがなければなりません。

?- M is maxint, numeric(M), X is M//2, Y is M/2.

M = 2147483647 X = 1073741823 Y = 1.07374e+09

yes ?- M is 999^200. E X C E P T I O N:out_of_range:_640 is 999 '^' 200 ?- X is 4.2 / 2, Y is 3^2, 5 is 16 // 3.

X = 2.1 Y = 9.0

yes ?- Z is cos(2.5) * sin(2*2.5) / tan(2.5/2), W is atan(tan(Z)). Z = 0.255264 W = 0.255264

yes ?- X is 168/3, Y is 168//3, X >= Y.

X = 56.0 Y = 56

yes ?- 124 mod 17 - 3 > 124 mod (17 - 3). no ?- _

too_large_constant 構文エラ−:定数が大きすぎる arith_expr_expected 引数が計算式の表現になっていない divide_by_zero 0で除算しようとしている out_of_range 結果の実数が大きすぎるか、または小さすぎる

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/reference/arithm/home_jp.html
published 2008/9/1 update 1995/11/7 (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