多倍長電卓LM マニュアル(lm.html) Ver2.17

■ 目次

はじめに
特徴
インストール/アンインストール
実行方法
マクロ
メニュー
設定ダイアログ
スタートアップマクロ

データ型


計算時間
誤差について

最後に
履歴

■ はじめに

LM は数式入力型の多倍長関数電卓です。
Windows 95/98/ME/XP/2000/Vistaで動作します。

■ 特徴

■ インストール/アンインストール

インストーラーはありません。適当なフォルダにLM.EXEを解凍してください。
アンインストールする場合は、解凍したファイルを削除してください。
レジストリは使用していません。

■ 実行方法

LM.EXEを実行してください。



ウインドウ上部のコンボボックスを「入力ボックス」と呼びます。
入力ボックスに数式を入力するとその結果を表示します。

<例> 太字の部分を入力ボックスに入力します。
>50*50+(100+200)/2
= 2650.

>500/3+4/9
= 
+                                                          167
  .11111 11111 11111 11111 11111 11111 11111 11111 11111 11111
   11111 11111 11111 11111 11111 11111 11111 11111 11111 11
= 1504 / 9
有効桁100桁で表示しています。表示桁数は設定で変更できます。
分数で表示可能な場合は分数でも答えを表示します。

三角関数や指数対数関数の例です。
>sin(1)+cos(1)+tan(1)+exp(1)+log(1)

= 
+5.65746 28437 89983 68992 07012 07884 29827 41993 71347 49777
   29066 93763 19879 59488 26670 98631 75930 73743 35764 5196

LMは入力ボックスに式が入力された場合はその結果を標準フォーマットで表示します。
文が入力された場合は結果を表示しません。
式と文の違いは、最後にセミコロンがつくのが文と考えてもらっていいと思います。
● 変数
一時的に代入するための変数を使うことができます。
>a=3
= 3.

>a*a
= 9.

またansは特別な変数で前回の答えを表します。
..でもansと同じ値が参照できます。
>2*2
= 4.

>ans * ans
= 16.

>.. + 2
= 18.
● マクロ
マクロとしてC言語ライクのLM-Cを搭載しています。

例えば
for(a = i = 0; i <= 10; i++) { a += i; } print a;
と入力すると0から10までの和の55が表示されます。

for(a = i = 0; i <= 10; i++) {
    a+=i;
}
print a;
上記のように複数行にわたる場合はメモ帳等に書いて
範囲選択してコピーして[編集]-[クリップボードを実行](あるいは「F5」キー)で実行できます。
あるいはテキストファイルとして保存して[ファイル]-[外部ファイル実行]から実行してください。

<例> ニュートン法によりx^2-2=0を解きます。
// サンプル  ニュートン法

function f(x) {  // f(x)=0 の方程式をときます。
    return x * x - 2;
}

function f2(x) { // f(x)を微分したものです。
    return 2 * x;
}

function newton() {
    var a = 1;                     // 初期値
    var limit = 10^(-50);          // 誤差の範囲
    while( abs( f(a) ) > limit ) {
        a = a - f(a) / f2(a);
        print a;
    }
    return a;
}

newton();   //関数呼び出し


ここではLM-Cについて、C言語との比較を簡単に記載します。

  • C言語の制御構造 if,for,while,do-while,switch,continue,break はLM-Cでも同じように使用可能です。
  • 一番大きな違いは型がひとつしか存在しないことです。 varによって宣言すると、LMで扱えるすべての数値が 扱える変数となります。文字列も扱うことが可能です。 また互換性のためにvarの代わりにint,float,double,voidも 使用可能ですが、全て同じ意味となります。 つまりintと宣言しても浮動小数を扱うことができます。
  • 変数は宣言なしでも使用可能です。宣言なしで使用すると グローバル変数となります。
  • 関数はfunction 文で定義します。 互換性のためにint,float,double,voidで定義することも 可能です。関数が戻り値を返すかどうかにかかわりません。
  • n次元の配列変数が使用可能です。配列変数は宣言が必要です。
  • 構造体、共用体は使用できません。
  • プリプロセッサは使用できません。
  • printf()が使用できます。書式は簡略化されています。
  • ■ メニュー

    1.ファイル(F)

    1.1 外部ファイル実行(O)

    外部ファイルを式あるいはマクロとして評価します。

    1.2 変数リスト(P)

    登録されている変数と値の一覧を表示します。 登録されている変数がないときは何も表示しません。

    1.3 関数リスト(F)

    登録されている関数と内容の一部を表示します。 関数の登録はfunction文で行います。 登録されている関数がないときは何も表示しません。

    1.4 中断(C)

    時間のかかる計算をしたときなど中断することができます。

    1.5 終了(X)

    LMを終了します。計算中は終了できないので中断してから終了 してください。

    2.編集(O)

    2.1 入力ボックス(I)

    入力ボックスを上にドッキングするか下にドッキングするか選択する ことができます。デフォルトは上にドッキングです。

    2.2 切り取り(T)

    現在選択しているテキストをクリップボードに切り取ります。

    2.3 コピー(C)

    現在選択しているテキストをクリップボードにコピーします。

    2.4 貼り付け(P)

    クリップボードの内容をカーソル位置にテキストとして貼り付けます。

    2.5 クリップボードを実行(A)

    クリップボードの内容を実行(計算)します。
    ショートカットキーは「F5」です。

    3.オプション(O)

    3.1.設定(O)

    設定ダイアログが開いて各種設定ができます。
    ショートカットキーは「F11」です。

    3.2.常に手前に表示

    このメニューを選択してチェックをつけるとLMのウインドウが常に手前に表示されるようになります。

    4.ヘルプ(H)

    4.1.演算子クイックヘルプ(Q)

    演算子クイックヘルプを表示します。

    4.2.マニュアル(LM.html)(M)

    LM.htmlをブラウザで表示します。

    4.3.バージョン情報(A)

    バージョン情報を表示します。

    ■ 設定ダイアログ

    設定ダイアログでは各種設定が行えます。
    設定ダイアログは以下の方法で開くことができます。

  • メニュー-オプション-設定
  • 「F5」キー
  • ウインドウ右下の桁数をダブルクリック

    設定項目に(n)と記載されているのはデフォルト値です。
    (*)はデフォル トで選択されることを示します。
    全ての値をデフォルトに戻したいときはlm.exeと同じフォルダにできるlm.iniを消去してください。
  • 有効桁数 タブ



    有効桁数には特に制限がありませんが、桁が増えると遅くなりますしメモリが必要となります。 私の環境では100万桁の円周率を求めることができました。
    また16bitOSのWin95,98,MEでは、OSの制限により表示ウインドウの文字数が64KBに制限されているので、 40000桁くらいまでしか表示できません。

    表示形式 タブ



    ここでは標準フォーマットの桁数設定をすることができます

    ● 標準フォーマット
    LMでは答えの表示やprint文での数値の表示に標準フォーマットと呼ばれるフォーマットで表示します。
    標準フォーマットでは表示する桁数に応じて2つの表示形式が選択されます。

    [ショート形式]

    = 3.1415926535897932384626433832795028841971693993751
    

    [ロング形式]

    = 
    +3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510
       58209 74944 59230 78164 06286 20899 86280 34825 34211 70679
       82148 08651 32823 06647 09384 46095 50582 23172 53594 08128
       48111 74502 84102 70193 85211 05559 64462 29489 54930 38196
       44288 10975 66593 34461 28475 64823 37867 83165 27120 19091
       45648 56692 34603 48610 45432 66482 13393 60726 02491 41273
       72458 70066 06315 58817 48815 20920 96282 92540 91715 36436
       78925 90360 01133 05305 48820 46652 13841 46951 94151 16094
       33057 27036 57595 91953 09218 61173 81932 61179 31051 18548
       07446 23799 62749 56735 18857 52724 89122 79381 83011 94912
       98336 73362 44065 66430 86021 39494 63952 24737 19070 21798
       60943 70277 05392 17176 29317 67523 84674 81846 76694 05132
       00056 81271 45263 56082 77857 71342 75778 96091 73637 17872
       14684 40901 22495 34301 46549 58537 10507 92279 68925 89235
       42019 95611 21290 21960 86403 44181 59813 62977 47713 09960
       51870 72113 49999 99837 29780 49951 05973 17328 16096 31859
       50244 59455 34690 83026 42522 30825 33446 85035 26193 11881
       71010 00313 78387 52886 58753 32083 81420 61717 76691 47303
       59825 34904 28755 46873 11595 62863 88235 37875 93751 95778
       18577 80532 17122 68066 13001 92787 66111 95909 21642 01989
       
       38095 25720 10654 85863 27886 59361 53381 82796 82303 01952
       03530 18529 68995 77362 25994 13891 24972 17752 83479 13151
       55748 57242 45415 06959 50829 53311 68617 27855 88907 50983
       81754 63746 49393 19255 06040 09277 01671 13900 98488 24012
       85836 16035 63707 66010 47101 81942 95559 61989 46767 83744
    

    デフォルトでは60桁を以下の場合はショート形式、それを越える場合はロング形式となります。
    ロング形式では5桁ごとにスペース、50桁ごとに改行、さらに1000桁ごとに改行が入ります。
    この桁数の設定がここでできます。

    マクロ タブ

    ● 起動時にstartup.lmを読み込む

    デフォルトでチェックされています。ここのチェックを外すと、起動時にstartup.lm を読み込まなくなります。 ここをチェックしていてもstartup.lm が存在しない場合は読み込みません。

    ■ スタートアップマクロ

    lm.exeと同じフォルダにstartup.lmというファイルを置いておくとlmの起動時にそのファイルを読んで実行します。
    マクロで関数を書いてstartup.lm に書いておくことにより組み込み関数のように使用できます。
    付属のstartup.lmにはサンプルとして逆三角関数と双曲線関数の例を記載してあります。
    サンプルのstartup.lmで定義される関数
    atan2(x, y)比較演算子(> >= < <=)
    asin(x)アークサイン
    acos(x)アークコサイン
    sinh(x)ハイパボリックサイン
    cosh(x)ハイパボリックコサイン
    tanh(x)ハイパボリックタンジェント
    asinh(x)アークハイパボリックサイン
    acosh(x)アークハイパボリックコサイン
    atanh(x)アークハイパボリックタンジェント
    log10(x)常用対数。底を10とした対数。
    divisor(x)最小の約数を返します。
    自然数を順に割っていくだけなので効率はよくありません。

    ■ データ型

    LMでは以下のデータ型が使用できます。

    数値型

    LMでは内部では可能な限り有理数(分数)で数値を持っています。
    有理数で計算できなくなると可変長2進数浮動小数型となります。
    有効桁数は設定ダイアログの有効桁数で設定できます。

    LMではC言語と同様に論理型はなく、数値型で論理値を表します。真が1、偽が0となります。

    文字列型

    LMでは文字列型が利用できます。

    文字列については表示、連結、比較が可能です。
    それ以上の操作は今のところ用意されていません。

    >"abc" + "def"
    abcdef
    
    >"abc" > "abd"
    = 0.
    

    配列型

    ■ 式

    全般

    基本的にC言語に準拠します。
    英字のトークンの後に、英字トークンまたは数字がくるときは間に" "(Space)が必要です。
    大文字小文字の違いも認識します。

    式は以下のいずれかです。
  • 文字列リテラル
  • 括弧式
  • 式を括弧か囲ったものです。
  • 演算子式
  • 1〜3個の式を演算子で接続したものです。
  • 関数
  • 定数
  • 変数

  • コメント

    "/*"から"*/"までと、"//"以降改行までは注釈として読み飛ばします。
    注釈のネストは出来ません。
    コメントは式、文のパースの前処理として解釈されます。

    数は"."(小数点)をつかって10進数で小数が記述可能です。
    整数部や小数部は省略可能です。
    eにより指数と仮数で数値を表現できます。
    "1.5e5"は1.5*10^5。"53.2e-4444"は53.2*10^-4444です。
    数の間の" "(Space)は無視されます。
    "."(小数点)が2つ以上あるときは無視されます。
    "0x","0o","0b"でそれぞれ16進8進2進数となります。
    符号は前に"+"か"-"をつけることができます。文法的には単項前置演算子です。

    括弧

    "(" ")" が使用できます。()内から計算します。ネストが可能です。

    定数

    ●"pi"

    円周率 = 3.14159 26535 89793 23846 ...

    ●"l2"

    log(2) = 0.69314 71805 59945 30941 ...

    ●"s2"

    sqrt(2) = 1.41421 35623 73095 04880 ...

    これらの定数は、初等関数の計算に必要となるので、一度計算されると値が保持されます。
    e(自然対数の底)は他の計算に必要としないので定数としていません。必要な場合はexp(1)で取得できます。

    演算子

    LMでは論理値はC言語と同様にtrueが1,falseが0で表されます。

    単項前置演算子

    ●"+"

    単項+

    ●"-"

    単項-

    ●"!"

    論理否定

    ●"~"

    引数xについて、-(x+1)を返します。整数についてはビット反転と同義です。

    ●"++" "--"

    単項後置演算子

    ●"++" "--"

    ●"()"

    関数

    ●"[]"

    配列

    ●"!"

    階乗 引数は正の整数でなくてはなりません。
    引数が大きくなると計算時間がかかります。

    >100!
    = 
    +                                                    933 26215
       44394 41526 81699 23885 62667 00490 71596 82643 81621 46859
       29638 95217 59999 32299 15608 94146 39761 56518 28625 36979
       20827 22375 82511 85210 91686 40000 00000 00000 00000 00000.
    
    Wikipedia 階乗

    ●"!!"

    二重階乗
    x!! = x * (x-2) * (x-4) * ... ( 2 or 1 ) です。
    引数は正の整数でなくてはなりません。
    引数が大きくなると計算時間がかかります。

    >100!!
    = 
    +                          34243 22470 25119 76248 24643 28952
       08185 97511 86750 53719 19882 79156 54463 48800 00000 00000.
    
    Wikipedia 二重階乗

    二項演算子

    演算子の前と後ろに一つずつ引数を持ちます。

    ●"+"

    加算
    文字列同士の場合は連結します。


    >2+3
    = 5.
    
    >"abc"+"def"
    abcdef
    

    ●"-"

    減算

    ●"*"

    乗算

    ●"/"

    除算

    ●"%"

    剰余

    ●"^"

    べき
    x ^ y のとき
    1. y が-32767〜32767の整数
    2. x が正
    のいずれかを満たす必要あります。

    (注)-5 ^ 4 は"-"より"^"の優先順位が高いので -( 5 ^ 4 )と解釈されます。
    (注)C言語で^は排他的論理和です。

    >123 ^ 45
    = 
    +        11110 40818 51319 56285 91079 05871 76451 91855 91532
       12268 02182 36290 73199 86611 10012 42743 28396 61270 48043.
    
    >1.000000001 ^ 1000000000
    = 
    +2.71828 18270 99904 32237 66440 23860 33286 28250 13164 08961
       85940 69385 46699 66194 21695 04713 14496 44465 72392 3244
    
    >-5^4
    = -625.
    
    >(-5)^4
    = 625.
    

    Wikipedia 冪乗

    ●"|"

    ビットの論理和
    引数は32bit符号付整数でなくてはなりません。

    ●"&"

    ビットの論理積
    引数は32bit符号付整数でなくてはなりません。

    ●"P"

    順列
    引数は正整数でなくてはなりません。
    P演算子は通常前後にスペースが必要です。
    引数によっては計算時間がかかります。

    >2500 P 40
    = 
    +                  6 04478 89876 15882 45466 78494 16239 06651
       50949 18398 03271 03680 28011 79545 16400 74078 80004 93759
       72823 24144 60202 60608 38730 25411 86039 80800 00000 00000.
    

    Wikipedia 順列

    ●"C"

    組合せ
    引数は正整数でなくてはなりません。
    C演算子は通常前後にスペースが必要です。
    引数によっては計算時間がかかります。

    >2500 C 40
    = 
    +                740 85987 99073 24593 85761 68588 77414 49308
       57253 11172 69371 45186 95578 70643 68732 50908 03943 89000.
    

    Wikipedia 組み合わせ

    ●"==" "!=" "<" ">" "<=" ">="

    関係演算子 文字列の比較も可能です。

    ●"&&" "||"

    論理演算子

    ●"=" "*=" "/=" "%=" "+=" "-=" "|=" "&="

    代入演算子

    ●","

    コンマ演算子

    三項演算子

    ●"? :"

    三項演算子

    演算子の優先順位

    1.単項後置演算子(! !! ++ --)
    2.関数(())、配列([])
    3.単項前置演算子(+ - ++ -- ! ~ & *)
    4.順列組合せ(P C)
    5.べき(^)
    6.乗除算(* / %)
    7.加減算(+ -)
    8.比較演算子(> >= < <=)
    9.比較演算子(== !=)
    10.ビット積 (&)
    11.ビット和 (|)
    12.論理演算子(&&)
    13.論理演算子(||)
    14.三項演算子(?:)
    15.代入演算子 (= *= /= %= += -= &= |=)
    16.コンマ演算子 (,)

    二項、三項演算子は代入演算子以外は全て左から右に結合します。
    全ての演算子は左から評価します。

    関数

    関数名説明
    floor整数値に切捨て。
    ceil整数値に切り上げ。
    abs絶対値。
    sqrt平方根。
    expeのべき
    log自然対数
    sin三角関数サイン
    cos三角関数コサイン
    tan三角関数タンジェント
    atan三角関数アークタンジェント
    lcm最小公倍数
    gcm最大公約数
    rand擬似乱数を発生します。
    printf書式付で値を表示します。
    sprintf書式付で文字列を取得します。
    alertダイアログボックスを表示します。
    eval文字列を式として評価します。

    演算関数

    ●"floor"

    整数値に切捨てます。
    引数を越えない最大の整数を返します。

    ●"ceil"

    整数値に切り上げます。
    引数より小さくない最小の整数を返します。

    ●"abs"

    引数の絶対値を返します。

    ●"sqrt"

    平方根を返します。
    引数は正の数でなければなりません。
    >sqrt(2)
    = 
    +1.4142135623 7309504880 1688724209 6980785696 7187537694
       8073176679 7379907324 7846210703 8850387534 327641573
    

    ●"exp"

    eのべきを返します。

    ●"log"

    引数の自然対数を返します。

    ●"sin"

    三角関数サイン
    引数はラジアンです。

    >sin(0.00001)
    = 
    + .00000 99999 99999 83333 33333 34166 66666 66646 82539 68254
       24382 71604 93576 63940 99729 03896 51500 75496 47099 91167
       82908 
    

    Wikipedia 三角関数

    ●"cos"

    三角関数コサイン
    引数はラジアンです。

    >cos(0.00001)
    = 
    + .99999 99999 50000 00000 04166 66666 66527 77777 77780 25793
       65079 33752 20458 55400 06546 95099 02483 61280 10778 98011
    

    Wikipedia 三角関数

    ●"tan"

    三角関数タンジェント
    引数はラジアンです。

    ●"atan"

    三角関数アークタンジェント
    戻り値はラジアンです。

    ●"lcm"

    引数の最小公倍数を求めます。
    1つ以上の引数を記載します。引数は正の整数でなければなりません。

    >lcm(2^15-1, 2^30-1)
    = 1073741823.
    

    Wikipedia 最小公倍数

    ●"gcm"

    引数の最大公約数を求めます。
    1つ以上の引数を記載します。引数は正の整数でなければなりません。

    >gcm(777777, 999999999999, 222222222222222)
    = 111.
    

    Wikipedia 最大公約数

    ●"rand"

    擬似乱数を発生します。値は15bit整数値、すなわち0〜32767を返します。
    引数はありません。rand()という形で使用します。
    今のところsrand()に相当する関数は用意されていません。
    >for(i = 0; i < 10; i++) print rand();
    = 346.
    = 130.
    = 10982.
    = 1090.
    = 11656.
    = 7117.
    = 17595.
    = 6415.
    = 22948.
    = 31126.
    

    特殊関数

    ●printf

    C言語のprintfのサブセット版です。

    >printf("a=%5d", 172);
    a=  172
    
    >printf("[%f]", pi);
    [3.141593]
    
    >printf("[%50.25f]", pi);
    [                       3.1415926535897932384626434]
    
    制御文字
    制御文字は以下の書式で記載されます。

    %[flags] [width] [precision] type

    flags
    -左詰めで表示する。デフォルトは右詰めです。
    0最小幅に不足する分右側に0が付加されます。数値のみ有効です。-と0を同時に指定すると-が有効となります。

    width
    最小幅を指定します。

    precision
    ドット(.)に続いて精度を指定します。

    type
    d整数値を表示します。
    f実数を小数で表示します。
    s文字列を表示します。


    %d:整数値
    数値は切捨てで10進整数値にされて表示されます。
    整数値が最小幅より短い場合は値の右側にスペースが追加されます。
    flagsの0を指定した場合は0が追加されます。


    >printf("[%10d]", 5.3);
    [         5]
    
    >printf("[%010d]", 5.3);
    [0000000005]
    
    
    %f:実数値
    実数が小数点付の10進数で表示されます。
    精度は小数点以下の表示桁数を指定します。精度は省略すると6とみなされます。

    %s:文字列
    文字列を表示します。

    >printf("[%10s]", "abcde");
    [     abcde]
    

    ●sprintf

    printfで表示すべき内容を文字列として返します。

    >s = sprintf("a=%d", 5);
    
    >s
    a=5
    

    ●alert

    警告用のダイアログボックスを表示します。
    引数(文字列)の内容を表示します。
    OKを押すと継続します。
    中止を押すと実行を中止します。

    >alert("alertです。");
    

    以下のようなダイアログが表示されます。

    eval

    引数(文字列)を式とみて評価して結果を返します。

    >eval("1+2")
    = 3.
    

    エラー

    違法な数式や違法な引数はエラーになります。

    ■ 文

    文は次のいずれかです。

  • 式文
  • の後にセミコロン(;)をつけたものです。
  • 複文
  • ひとつ以上の文を中括弧({})で囲ったものです。
  • if文
  • C,Javaと同等です。
  • for文
  • C,Javaと同等です。
  • while文
  • C,Javaと同等です。
  • do-while文
  • C,Javaと同等です。
  • switch文
  • C,Javaと同等です。
  • break文
  • C,Javaと同等です。
  • continue文
  • C,Javaと同等です。
  • return文
  • C,Javaと同等です。
  • function文
  • 関数を定義します。
  • var文
  • ローカル変数を宣言します。
  • print文
  • 引数の値を標準フォーマットで表示します。
  • printst文
  • 引数の値をステータスバーに表示します。

    ■ 計算時間

    計算時間のおおよその目安です。
    マシンはPentium4クラスです。

    演算種類時間
    10進変換100万桁で5秒程度
    pi, sqrt100万桁で30秒程度
    sin, cos, tan, exp10万桁で30秒程度
    atan, log, 実数のべき10万桁で1分〜5分程度

    ■ 誤差について

    LMは内部では数値を多倍長2進数の分数として扱っています。 誤差の発生は抑えるように工夫していますが、無理数演算を繰り返すと当然誤差が発生します。
    特に非常に近い数の減算を行うと大幅に誤差が発生します。(桁落ち)
    桁落ちを除けば、関数10回くらいの使用では表示桁までは誤差が発生しないようにしています。

    ■ 最後に

    LM はフリーソフトです。
    改変を行わない場合は転載および再頒布は自由です。
    LM はC++Builder4で書かれています。

    本ソフトの最新版は下記からダウンロード可能です。
    http://www.vector.co.jp/soft/win95/personal/se242555.html

    本プログラムではOOURAさんのFFTルーチンを利用させて頂いています。
    http://momonga.t.u-tokyo.ac.jp/~ooura/index-j.html(デッドリンク)
    ありがとうございました。

    本ソフトを以下の雑誌に掲載して頂きました。
    ありがとうございました。

  • Windows100% 2004年3月号、2002年10月号 晋遊舎
  • DOS/V USER DELUXE 2004年6月号、2004年8月号 宝島社
  • フリーウェア年鑑2005 株式会社エンターブレイン

    バグ情報、要望、苦情等はこちらまで
    mailto:takahashi@mtf.biglobe.ne.jp 高橋英明

    情報交換用のヤフーグループもあります。
    こちらも利用してみてください。
    http://groups.yahoo.co.jp/group/lm/
  • ■ 履歴

    080601 Ver2.17
         マニュアルのhtml化
         printfの%fで整数値が0の場合も表示するように修正
    
    080504 Ver2.16
         printf(%.3f",0.001)等が正しく表示されないバグを修正。
         Vista対応とする。
    
    050827 Ver2.15
    
    041013 Ver2.14
         オプション-常に手前に表示 を追加。
    
    040623 Ver2.13
         本バージョンよりFFTにOOURAさんのプログラムを利用させて頂いています。
         これにより多倍長演算がかなり高速化されています。
         マニュアル「11.計算時間」を追記しました。
    
    040613 Ver2.12
         ループ中からreturnで抜けた場合の動作不正対応
         乱数を返す関数rand()作成
         各種高速化
    
    040530 Ver2.11
        Ver2.10で関数リストと変数リストが正常に表示されないのを修正
        ifでelse節が実行されない場合があったのを修正
        gcm(),lcm()で0が指定された場合エラーとする
    
    040506 Ver2.10
        構文解析大幅修正によりスピードアップ。
        n次元の配列に対応
        型名としてvar以外にint void等使えるように対応
        エラーメッセージ全面修正。
        優先順位見直し 論理演算子(! && ||)をC言語と同様にした。
        二重階乗(!!)に対応
    
    040328 Ver2.09
        piの計算が約37000桁以降間違っていたのを修正
        変数名関数名で大文字小文字を同一視してしまうバグを修正
        startup.lmを修正 log10(),atan2()を追加 asin()acos()を修正
        ..でansが参照可能に修正
        計算結果ウインドウの改行位置調整
        計算結果ウインドウをリードオンリーに
        配列サイズ制限の撤廃(従来は1000までだった)
        pi等の定数が毎回クリアされてしまうバグを修正
        有効桁を変えても変数が初期化されないバグを修正
        非分数と分数の演算が分数になってしまうバグを修正
        計算中はステータスバーダブルクリック不可に修正
    
    040301 Ver2.08
        入力数値のeによる指数表示に対応
        配列のエラー強化
    
    031219 Ver2.07
        lcm() gcm()に対応
    
    031004 Ver2.06
        printfで余計に改行してしまうバグに対応
        sprintf,alert,evalに対応
        [ファイル]-[外部ファイル実行]に対応
    
    030915 Ver2.05
        文字列の連結、比較に対応
    
    030204 Ver2.04
        ロング形式の表示形式をオプションで設定可能にする
        スタートアップマクロの対応
        変数リスト関数リストの対応
    
    020919 Ver2.03
        非常に大きい数の剰余計算のバグ対応
        printf()対応
    
    020806 Ver2.02
        稀に非有理数が分数表示されてしまうバグ対応
        小数点が2つあった場合のバグ対応
        ceil() floor()を作成 int()廃止
    
    020624 Ver2.01
        C Pが使用できないバグ修正
        他細かいバグ修正
    
    020522 Ver2.00
        全面修正
        Vectorに新規登録
    
    991017 Ver1.00
        初版