実行時内部エラーが発生します。 山中和義 2008/02/11 13:45:18 └御報告ありがとうございます。深刻なバグの... 白石 和夫 2008/02/11 13:53:55 └2進モードと複素数モードで不具合が起こらな... 白石 和夫 2008/02/11 14:49:36 └とりあえず,次のように規格の範囲内で使っ... 白石 和夫 2008/02/11 15:04:34 ├少なくとも, 白石 和夫 2008/02/11 16:15:59 (修正1回) │└修正しました(とりえあずWindows版のみです... 白石 和夫 2008/02/12 08:50:18 (修正1回) │ └このプログラムでは内部エラーが発生します... 山中和義 2008/02/12 15:29:57 (修正1回) │ └かなり深刻な問題があるようです。調査しま... 白石 和夫 2008/02/12 21:05:55 │ └原因が判明した(と思う)。 白石 和夫 2008/02/13 07:01:55 (修正1回) │ └修正しました。 白石 和夫 2008/02/13 12:35:23 └FullBASICはDIM文などの宣言文を内部手続き... 白石 和夫 2008/02/11 20:58:33
実行時内部エラーが発生します。 山中和義 2008/02/11 13:45:18 ツリーへ
実行時内部エラーが発生します。 |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2008/02/11 13:45:18 | |
以下がプログラムです。(発生場所、パターンを絞っています)
LET N=5 !次数 !DIM x2(2*n) !<---------- OK SUB poly_expandn(n,a(),k, x()) !べき乗の展開 p(x)^n DIM x2(2*n) !<---------- ここがあるとエラーになる !DIM x2(10) !<---------- OK END SUB DIM a(2*N) !kの定義 MAT a=ZER DIM x(2*N) CALL poly_expandn(N,a,2, x) MAT PRINT x DIM s1(2*N) !ここでエラー発生! END |
└御報告ありがとうございます。深刻なバグの... 白石 和夫 2008/02/11 13:53:55 ツリーへ
Re: 実行時内部エラーが発生します。 |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/11 13:53:55 | |
御報告ありがとうございます。深刻なバグのようです。調べてみます。
|
└2進モードと複素数モードで不具合が起こらな... 白石 和夫 2008/02/11 14:49:36 ツリーへ
Re: 御報告ありがとうございます。深刻なバグの... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/11 14:49:36 | |
2進モードと複素数モードで不具合が起こらないので,内部のメモリー管理の不具合のように思えます。そうだとすると,解決策は,内部手続き内に拡張された形式のDIM文を書くことを禁止する以外にないかも知れません。
|
└とりあえず,次のように規格の範囲内で使っ... 白石 和夫 2008/02/11 15:04:34 ツリーへ
Re: 2進モードと複素数モードで不具合が起こらな... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/11 15:04:34 | |
とりあえず,次のように規格の範囲内で使ってください。
LET N=5 !次数 DIM a(100) DIM x(100) SUB poly_expandn(n,a(),k,x()) DIM x2(100) MAT x2=ZER(2*n) END SUB MAT a=ZER(2*N) MAT x=ZER(2*N) CALL poly_expandn(N, a, 2, x) DIM s1(100) MAT s1=ZER(2*N) MAT PRINT x MAT PRINT x2 MAT PRINT s1 END |
├少なくとも, 白石 和夫 2008/02/11 16:15:59 (修正1回) ツリーへ
Re: とりあえず,次のように規格の範囲内で使っ... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/11 16:15:59 ** この記事は1回修正されてます | |
少なくとも,
(1) 拡張DIM文を内部手続きに書いてはいけない(書くと翻訳時エラー) (2) 拡張DIM文で宣言された配列をDIM文による初期化を経ずに上下限再定義あるいは独自命令のMAT REDIM文を実行してはいけない(実行すると例外状態) の2つの変更が必要になりそうです。 修正には少し時間がかかります。 |
│└修正しました(とりえあずWindows版のみです... 白石 和夫 2008/02/12 08:50:18 (修正1回) ツリーへ
Re: 少なくとも, |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/12 08:50:18 ** この記事は1回修正されてます | |
修正しました(とりえあずWindows版のみです)。
(1) 拡張DIM文を内部手続き内に書くことができなくなります。 (2) 拡張DIM文で宣言された配列をDIM文による初期化を経ずに上下限再定義あるいは独自命令のMAT REDIM文を実行すると,例外状態になります。 |
│ └このプログラムでは内部エラーが発生します... 山中和義 2008/02/12 15:29:57 (修正1回) ツリーへ
Re: 修正しました(とりえあずWindows版のみです... |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2008/02/12 15:29:57 ** この記事は1回修正されてます | |
このプログラムでは内部エラーが発生します。
!ライプニッツの定理 ! an=nC0*a0 + nC1*b1 + nC2*c2 + nC3*d3 + … OPTION ARITHMETIC rational OPTION BASE 0 LET maxlevel=10 SUB poly_mul(n,a(),b(), x()) !乗算x=a*b DIM xx(100) MAT xx=ZER(2*n) FOR i=n TO 0 STEP -1 FOR j=n TO 0 STEP -1 LET xx(i+j)=xx(i+j)+a(i)*b(j) !分配する NEXT j NEXT i MAT x=xx !copy it END SUB !その他 !!!DIM c1(100) !!!MAT c1=ZER(maxlevel) DIM c1(maxlevel) !<---------- これでエラーになる LET c1(0)=1 !定数1 SUB xxx(n,k, w()) !変数(n)の多項式 n*(n-1)*(n-2)*…*(n-k)/k! DIM T1(100) MAT T1=ZER(n) LET T1(1)=1 !n FOR p=1 TO k CALL poly_mul(n,w,T1, w) MAT T1=T1-c1 !n-p MAT PRINT T1 NEXT p END SUB !------------------------------ ここまでがサブルーチン LET k=3 !!!DIM w(100) !!!MAT w=ZER(maxlevel*2) DIM w(maxlevel*2) !MAT w=ZER LET w(0)=1 !1 CALL xxx(maxlevel,k, w) MAT w=(1/fact(k))*w !/k! MAT PRINT w END |
│ └かなり深刻な問題があるようです。調査しま... 白石 和夫 2008/02/12 21:05:55 ツリーへ
Re: このプログラムでは内部エラーが発生します... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/12 21:05:55 | |
かなり深刻な問題があるようです。調査します。
|
│ └原因が判明した(と思う)。 白石 和夫 2008/02/13 07:01:55 (修正1回) ツリーへ
Re: かなり深刻な問題があるようです。調査しま... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/13 07:01:55 ** この記事は1回修正されてます | |
原因が判明した(と思う)。
元のサイズが異なる配列の減算。 次のプログラムが例。 OPTION ARITHMETIC RATIONAL DIM a(100) DIM b(10) MAT a=ZER(10) MAT a=a-b END 修正可能なバグです。 |
│ └修正しました。 白石 和夫 2008/02/13 12:35:23 ツリーへ
Re: 原因が判明した(と思う)。 |
返事を書く ノートメニュー |
白石 和夫 <kodwmnknzv> 2008/02/13 12:35:23 | |
修正しました。
Ver.7.0.6はヘルプに表示されるバージョン番号が間違っていました。 |
└FullBASICはDIM文などの宣言文を内部手続き... 白石 和夫 2008/02/11 20:58:33 ツリーへ
Re: とりあえず,次のように規格の範囲内で使っ... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/02/11 20:58:33 | |
Full BASICはDIM文などの宣言文を内部手続き内に書くことを認めていますが,それらの有効範囲はプログラム単位です。
かなり紛らわしい規則ですが,勝手に変えるわけにはいかないので注意してください。 |