Re: [問題] 程式發生錯誤 找很久了 高手能幫幫忙嗎?

看板Fortran作者 (po)時間14年前 (2010/05/10 10:48), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《poiuy1203 (po)》之銘言: : 程式跑到掛掉 : 但小弟功力太弱找不到原因 : 懇請高手幫看指點 : 畫面顯示 : run-time error M6203: MATH : -csin:OVERFLOW error : 跑到L=2,M=3,N=4時會掛掉 : 下面附上程式碼: : SUBROUTINE IILMN(IL,ML1,NN) : COMPLEX*16 II(6,5,80),K(6,5,80),Q(6,5,80),AX(6,5),AZ(6,5),DZZ,CI : REAL*8 DX(6),Z(6,5) : DIMENSION ML1(6),NN(6) : COMMON / DAT2 / DX,Z : COMMON / DAT4 / AX,AZ : COMMON / DAT5 / K,Q : COMMON / DAT22 / II : CI=CMPLX(0.0,1.0) : DO 1,L=1,IL : DO 2,N=1,NN(L) : II(L,2,N)=1.0 : 2 CONTINUE : 1 CONTINUE : DO 3,L=1,IL : ML1L=ML1(L) : IF(ML1L.EQ.2) GO TO 3 : DO 4,M=3,ML1L : DZZ=(Z(L,M-1)-Z(L,M))*AX(L,M)/AZ(L,M) : WRITE(*,*)'ML1L',ML1L : DO 5,N=1,NN(L) : DZZ=DZZ*K(L,M,N) : II(L,M,N)=II(L,M-1,N)*(COS(DZZ)+CI*Q(L,M,N)*SIN(DZZ)) : WRITE(*,*)L,M,N : 5 CONTINUE : 4 CONTINUE : 3 CONTINUE : RETURN 目前所知道的是DZZ的值為複數形式 DZZ=(0.625 , 1.734918577506039E-018) 帶入SIN(DZZ)和COS(DZZ)時會爆掉 請問是哪裡出問題呢? ^^^^^^^^^^^^^^^^^^^ 是否哪裡需要設定或宣告? 還是SIN.COS內不能帶入複數呢? 照著爬文所說的 -------------------- 設定方法為... Project→Settings→Link→Category:Output→ Sackallocations Reserve: 裡頭打數字 1M=1024*1024= 1048576 最大可以開到256MB吧268435456 ------------------- 設定完按OK之後值卻變成0x10000000 我是用VISUAL FORTRAN 寫的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.98.63

05/10 12:18, , 1F
sin, cos 等函數,當然是 不能帶入負數
05/10 12:18, 1F

05/10 12:19, , 2F
複數,你嘗試著去掉這個 BUG 看看
05/10 12:19, 2F

05/10 13:59, , 3F
你的COMPLEX式雙精確度,把SIN COS改成DSIN DCOS看看
05/10 13:59, 3F
文章代碼(AID): #1BvtFlhe (Fortran)
文章代碼(AID): #1BvtFlhe (Fortran)