新しく発言する  EXIT  インデックスへ
実行時内部エラーが発生します。

  実行時内部エラーが発生します。 山中和義 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文などの宣言文を内部手続き内に書くことを認めていますが,それらの有効範囲はプログラム単位です。
かなり紛らわしい規則ですが,勝手に変えるわけにはいかないので注意してください。


 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。