Index: [Article Count Order] [Thread]

Date:  Thu, 13 Apr 2000 15:03:38 +0900 (JST)
From:  atmori <smori@digital.artist.ne.jp>
Subject:  MaTXの if文 ,ガンマ関数について
To:  matx@matx.org
Message-Id:  <200004130603.PAA10597@ba.mbn.or.jp>
X-Mail-Count: 00006

atmoriです。matx.org復活おめでとうございます(笑)
毎度、ちょこちょこと申し訳無いのですが、ちょっと教えてください。

        MaTX Interpreter (matx)
        Windows95/NT(Visual C++) version 5.0.5
        last modified Fri Jan 28 18:28:19 JST 2000
及び
        Linux version 5.0.9
        last modified Sat Mar 18 20:33:02 JST 2000

において、
/********************************************************************/
1)スクリプトファイルにおいて、関数外ではif文を数行に分けて書けない。
/********************************************************************/
// test.mm
//--------------------------------------------
a=1;
if (a==1) { 
 printf("ok\n"); 
}
//--------------------------------------------
の様なmmファイルを書き、load すると

>>load "test.mm"
"test.mm", line 3: a=1; if (a==1) { , parse error

となり、文法エラーになります。
これは

if (a==1) { printf("1行に書くとok\n"); }

の様に一行に書くか

if (a==1) { //
  printf("コメントマークつけてもok\n"); //
}
何故か行末にコメントマークつけるとOKになるようです。

また、全体をFunc void main(){  } でくくってもOKなので関数定義の中では
OKの様です。
forループに関しては数行にわけて書ける様です。

/********************************************************************/
2)ガンマ関数の値がおかしい(精度?)
/********************************************************************/
Γ(x)=gammac(x)と思うのですが、xが非整数の時に値がおかしい
(というより精度が悪い?)様です。
gammac(5.0)=4!=24
gammac(1.0)=1!=1
なので、整数の時は正しいようですが、

gammac(0.5)は√π=1.7724... のはずですが
  MaTX では、gammac(0.5) = 2
  となります

ちなみにgnuplotで print gamma(0.5)とすると
gnuplot> print gamma(0.5)
1.77245385090552             
となります。

以上、よろしくお願い致します。
------------------------------------------------------
atmori
http://www.hoops.ne.jp/~atmori/index.htm
E-mail : smori@digital.artist.ne.jp
-----------------------------------------------------