      ■■ 関数電卓関数/演算子など説明 ■■          1995/8/6 by T.Yamagishi

■ 取扱上の注意
 ･プログラム内部ではdouble精度でCのmathライブラリで計算します｡
  そのため､市販の関数電卓に比べ誤差が大きくなっています｡
  特に答えの絶対値が無限大かゼロに収束する関数ではその付近で
  正確な答えが得られません｡例えばtan(π/2)､sin π､cos(π/2)の
  付近｡

 ･関数はmathライブラリで計算していますので､引数が極端な値の場
  合､答えが異常になることがあります｡mathライブラリの精度を確認
  してませんので正確な値が必要な計算にはもちいないで下さい｡
  (誰か､mathライブラリの有効引数範囲を調べて〜〜)

 ･扱える実数の範囲｡
    ±1.79E+308〜±2.23E-308 , ±0.0

 ･三角関数は弧度法で計算されます｡

■ 数値の有効桁数
 ･入力時 実数   15桁｡16桁目で四捨五入｡
         ８進数 11桁 $o20000000000〜$o37777777777 (-2147483648〜2147483647)
         16進数  8桁 $h80000000〜$h7FFFFFFF (-2147483648〜2147483647)

 ･表示時 10進数のみ1〜15桁で変更可能｡

■ 計算の優先順位
 ･FCALC.DEFを変更しないかぎり以下の通り｡
	 0) 括弧(最優先です｡FCALC.DEFでも変更できません)
	 1) 関数
	 2) ^
	 3) +(正)  -(負)
	 4) * / \ % fmod
	 5) +(和) -(差)
	 6) >> (論理右シフト)  << (論理左シフト)
	    >: (算術右シフト)  <: (算術左シフト)
	 7) not
	 8) and nand
	 9)  or  nor
	10) xor
	11) eqv

	  同一優先順位の場合は基本的に先に出たものから計算します｡但し､括弧
	で優先順位が変更されている場合は括弧内の優先順位が高くなります｡
	また関数が連続する場合は右から計算します｡例えば sin cos _PI の場合
	はcos _PIが先に計算されその後､sinが計算されます｡


■ 使用可能な定数
 ･'_'で始まる5文字以下の半角英数字文字列｡
  既にFCALC.DEFで幾つか定義してあります｡FCALC.DEFをご覧下さい｡

■ 関数/演算の種類
○()        【括弧】
			計算の優先順位を変更します｡()内の計算を先に行います｡
○@         【ﾗｽﾄｱﾝｻｰ】
			正常に終了した前回の答えを表します｡計算式中で通常の
			数値と同等の使用が可能です｡
○$o        【8進数値】
			$oに続く文字を8進数として取り扱います｡
			入力可能範囲は$o20000000000〜$o37777777777です｡
			               (-2147483648〜+2147483647)
○$h        【16進数値】
			$hに続く文字を16進数として取り扱います｡
			入力可能範囲は$h80000000〜$h7FFFFFFFです｡
			            (-2147483648〜+2147483647)
○-X        【符号反転】
			省略｡
○X * Y     【積算】
			省略｡
○X / Y     【除算】
			省略｡
○X + Y     【加算】
			省略｡
○X - Y     【減算】
			省略｡
○X fmod Y  【剰余】
			XをYで割った余りを求めます｡
			X fmod Y = X-int(X/Y)*Yです｡
○X ^ Y     【べき乗】
			省略｡
○sqr X     【平方根】
			(sqr X)*(sqr X)=X です｡
○cur X     【立方根】
			(cur X)*(cur X)*(cur X)=X です｡
○fact X    【階乗】
			1からXまでの整数を掛けます｡1*2*3*･･･*Xが戻り値です｡
			Xが整数でない場合 X をint(X)として扱います｡
○exp X     【指数関数】
			自然対数の底eのX乗です｡(e^X)
○ln X      【自然対数】
			自然対数の底eを底とするXの対数です｡
○log X     【常用対数】
			10を底とするXの対数です｡
○logx(N,X) 【任意底の対数】
			Nを底とするXの対数です｡
○abs X     【絶対値】
			Xが負の場合 abs(X)=-X ､Xが正の場合 abs(X)=X です｡
○fix X     【小数部除去】
			Xの整数部を求めます｡符号は変わりません｡
○frac X    【整数部除去】
			Xの小数部を求めます｡符号は変わりません｡
○int X     【切捨て/ガウス関数】
			Xより小さいか等しい最大の整数を求めます｡
○ceil X    【切上げ】
			Xより大きいか等しい最小の整数を求めます｡
○deg X     【度数変換】
			度数法の度で表された数値を弧度法に変換します｡ 
			deg 360=+2*π です｡
○grad X    【グラード単位変換】
			グラード単位で表された数値を弧度法に変換します｡
			grad 400=+2*π です｡
○sin X     【三角関数･余弦】
			省略｡
○cos X     【三角関数･正弦】
			省略｡
○tan X     【三角関数･正接】
			省略｡
○asn X     【逆三角関数･余弦】
			省略｡
○acs X     【逆三角関数･正弦】
			省略｡
○atn X     【逆三角関数･正接】
			省略｡
○atnt(X,Y) 【像限逆三角関数･正接】
			Y/Xのatnの主値｡-π<atnt(X,Y)<+πの範囲｡
			詳しくはC言語ライブラリのatan2関数参照｡
○hsn X     【双曲線関数･余弦】
			省略｡
○hcs X     【双曲線関数･正弦】
			省略｡
○htn X     【双曲線関数･正接】
			省略｡

---注意---
	これ以降の演算は引数を32ビットの整数に変換したのち演算します｡
	引数が32ビット整数に変換できない場合はエラーとなります｡変換可
	能範囲は-2147483648〜+2147483647です｡

○npr(N,R)  【順列】
			N個からR個を順番も含めて選ぶ組合せ数｡(だったかなぁ
			､忘れた)
○ncr(N,R)  【組合せ】
			N個からR個を選ぶ組合せ数｡
○X \ Y     【整数除算】
			XをYで割ります｡
			解が整数でない場合､解はINT(X/Y)になります｡
○X % Y     【整数剰余】
			XをYで割った余りを求めます｡
			X % Y = X-(X \ Y)*Yです｡
○X << Y    【論理左シフト】
			X を Yビット左にシフトします｡
			下位Yビットは0になります｡
○X >> Y    【論理右シフト】
			X を Yビット右にシフトします｡
			上位Yビットは0になります｡
○X <: Y    【算術左シフト】
			X を Yビット左にシフトします｡
			Xが負の場合32ビット目(符号ビット)は1のままです｡
○X >: Y    【算術右シフト】
			X を Yビット右にシフトします｡
			Xが負の場合上位Yビットは1になります｡
○not X     【ビット反転】
			全てのビットを反転します｡下記､真理値表参照｡
○X or Y    【論理和】
			ビット毎の論理和を求めます｡下記､真理値表参照｡
○X and Y   【論理積】
			ビット毎の論理積を求めます｡下記､真理値表参照｡
○X nor Y   【否定論理和】
			ビット毎の否定論理和を求めます｡下記､真理値表参照｡
○X nand Y  【否定論理積】
			ビット毎の否定論理積を求めます｡下記､真理値表参照｡
○X xor Y   【排他的論理和】
			ビット毎の排他的論理和を求めます｡下記､真理値表参照｡
○X eqv Y   【同値】
			ビット毎の同値演算を行います｡下記､真理値表参照｡
○真理値表(参考)
+---+---+--------+--------+--------+--------+--------+--------+--------+
| X | Y |  not X | X or Y | X and Y| X nor Y|X nand Y| X xor Y| X eqv Y|
+---+---+--------+--------+--------+--------+--------+--------+--------+
| 0 | 0 |    1   |    0   |    0   |    1   |    1   |    0   |    1   |
| 0 | 1 |    1   |    1   |    0   |    0   |    1   |    1   |    0   |
| 1 | 0 |    0   |    1   |    0   |    0   |    1   |    1   |    0   |
| 1 | 1 |    0   |    1   |    1   |    0   |    0   |    0   |    1   |
+---+---+--------+--------+--------+--------+--------+--------+--------+


■ 関数/演算の数値範囲

注.数値の表現は以下のとおり｡
PI          3.14159265････
INT_MAX     +2147483647
INT_MIN     -2147483648
DBL_MAX     1.79E+308

○戻り値について
  関数/演算とも戻り値が±DBL_MAXを越えた場合エラーとなります｡

○引数の範囲
  関数          入力        引数の範囲
--------------------------------------------------------
度数->弧度      deg X       -1E+10 < X < +1E+10
グラード->弧度  grad X      -1E+10 < X < +1E+10

三角関数
    余弦        sin X       -4*PI <= X <= +4*PI
    正弦        cos X       -4*PI <= X <= +4*PI
    正接        tan X       -4*PI <= X <= +4*PI
                            tan X は abs(X fmod (2*π)) = π/2 の場合エラー
逆三角関数
    正弦        asn X       -1.0 <= X <= +1.0
    余弦        acs X       -1.0 <= X <= +1.0
    正接        atn X       -DBL_MAX <= X <= +DBL_MAX

像限逆三角関数
    正接        atnt(X,Y)   -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
                            X または Y が0.0の場合エラー
双曲線関数
    正弦        hsn X       -DBL_MAX <= X <= +DBL_MAX
    余弦        hcs X       -DBL_MAX <= X <= +DBL_MAX
    正接        htn X       -DBL_MAX <= X <= +DBL_MAX

指数関数        exp X       -DBL_MAX <= X <= +DBL_MAX
自然対数        ln X        0.0 <= X <= +DBL_MAX
常用対数        log X       0.0 <= X <= +DBL_MAX
任意底の対数    logx(N,X)   ln X/ln Nで計算｡ln X/ln Nが計算できない場合エラー
                            0.0 <= N <= +DBL_MAX
                            0.0 <= X <= +DBL_MAX

平方根          sqr X       0.0 <= X <= +DBL_MAX
立方根          cur X       0.0 <= X <= +DBL_MAX

絶対値          abs X       -DBL_MAX <= X <= +DBL_MAX
切捨て          int X       -DBL_MAX <= X <= +DBL_MAX
切上げ          ceil X      -DBL_MAX <= X <= +DBL_MAX
小数部除去      fix X       -DBL_MAX <= X <= +DBL_MAX
整数部除去      frac X      -DBL_MAX <= X <= +DBL_MAX

順列            npr(N,R)    0.0 <= R <= N <= +INT_MAX
                            R=0.0の場合答えは1.0
                            計算時 N=int(N),R=int(R)
組合せ          ncr(N,R)    0.0 <= R <= N <= +INT_MAX
                            R=0.0の場合答えは1.0
                            計算時 N=int(N),R=int(R)

符号反転        -X          -DBL_MAX <= X <= +DBL_MAX

積算            X*Y         -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
除算            X/Y         -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y<>0.0 <= +DBL_MAX
浮動小数点剰余  X fmod Y    -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
加算            X+Y         -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
減算            X-Y         -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
巾乗            X^Y         -DBL_MAX <= X <= +DBL_MAX
                            -DBL_MAX <= Y <= +DBL_MAX
                            但し､X=0.0 Y<=0.0 または X<0.0 Y<>整数 はエラー
階乗            fact X      0 <= X <= 170
                            計算時 X=int(X)
整数除算        X\Y          INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
整数剰余        X%Y          INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
論理左シフト    X<<Y         INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
論理右シフト    X>>Y         INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
算術左シフト    X<:Y         INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
算術右シフト    X>:Y         INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
ビット反転      not X        INT_MIN <= X <= +INT_MAX
論理和          X or Y       INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
論理積          X and Y      INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
否定論理和      X nor Y      INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
否定論理積      X nand Y     INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
排他的論理和    X xor Y      INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX
同値            X eqv Y      INT_MIN <= X <= +INT_MAX
                             INT_MIN <= Y <= +INT_MAX

■ 関数/演算の別名
	  以下の関数/演算子は別名の入力が可能です｡
･ asn    = asin , arcsin
･ acs    = acos , arccos
･ atn    = atan , arctan
･ hsn    = hsin , hypsin
･ hcs    = hcos , hypcos
･ htn    = htan , hyptan
･ atnt   = atant , arctant ,atantwo ,arctantwo
･ +      = add , plus
･ -      = sub , minus
･ *      = mul
･ /      = div
･ fmod   = f%
･ ^      = pow
･ %      = mod
･ \      = idv
･ not    = ~
･ or     = |
･ and    = &
･ nor    = ~| , ~or
･ nand   = ~& , ~and
･ xor    = eor , ^^
･ eqv    = ~^^ , ~xor , @01
･ <:     = :<
･ >:     = :>
･ 0.0    = .
･ $o     = $O
･ $h     = $H , $x , $X
･ exp    = @02

注.@01､@02は内部処理に使用｡入力も受け付けますが､出来るかぎり使用しないで
   下さい｡

                                      -以上-
