[問題] 數值太大導致run time error

看板Fortran作者 (喔)時間14年前 (2010/01/27 17:11), 編輯推噓4(404)
留言8則, 4人參與, 最新討論串1/1
我有個問題 b=10E5 w=0.5 在跑到這一行的時候 s=((b*w)**2.0*exp(b*w))/(1+exp(b*w))**2.0 就會出現 run time error 請問有什麼辦法可以解決嗎? 希望各位高手幫幫忙 感恩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.91.131

01/27 18:38, , 1F
改寫成s=((b*w)**2.0*exp(-b*w))/(1+exp(-b*w))**2.0
01/27 18:38, 1F

01/27 18:40, , 2F
使用 REAL*8
01/27 18:40, 2F

01/27 19:02, , 3F
改成real*8還是有危險,不過這數根本上是個0...
01/27 19:02, 3F

01/27 20:53, , 4F
已經是REAL*8了
01/27 20:53, 4F

01/27 20:57, , 5F
感謝樓上兩位 我後來取LOG算 再用EXP 就可以算了
01/27 20:57, 5F

01/27 20:59, , 6F
不過不知道這樣精確度會不會比較差
01/27 20:59, 6F

01/28 07:18, , 7F
應該是醫定變差吧,又是log又是exp的
01/28 07:18, 7F

01/28 07:18, , 8F
01/28 07:18, 8F
文章代碼(AID): #1BO0CpTB (Fortran)