Re: [問題] 可以判斷整數嗎?

看板Fortran作者 (sjgau)時間14年前 (2010/12/26 10:24), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串5/9 (看更多)
以下的 C語言程式設計, double 就是 fortran 的 real*8, 經過 25次的 複雜運算,產生的 絕對誤差如下 謹 提供參考 #if 0 dx= 5.684342e-014 請按任意鍵繼續 . . . #endif // ---------------------------------------------- #include <stdio.h> #include <math.h> #include <process.h> // ---------------------------------------------- template <class T> T sqr(T x) { return(x*x); }// end of sqr() // ---------------------------------------------- void main() { int no, i; double x, dx; no= 25; x= 1.0; for (i=1;i<=no;i++) { x= (tan(atan(exp(log(sqr(sqrt(x))))))) + 1.0; } dx= fabs(x - (no + 1)); printf("\n dx= %.6le\n", dx); system("pause"); }// end of main() ※ 引述《sjgau (sjgau)》之銘言: : 重點是 : real*4 : rel_diff(a, b) < 1.0e-5 : real*8 : rel_diff(a, b) < 1.0e-14 : 那個 e-5, e-14 的數字,是怎麼來的? : 答案是:經驗! : ※ 引述《sjgau (sjgau)》之銘言: : : 我會! : : real*4, or real*8 都可以。 : : real*4 x, y, z; : : x= 16.0 : : y= sqrt(x) : : iy= int(y + 0.5) : : ! int() 還要 查ㄧ下,目的是 把 y 四捨五入, : : ! 取最接近的 整數 : : if (rel_diff(iy, y) < 1.0e-5) then : : ! y 是整數 : : else : : ! y 不是整數 : : end if : : ! rel_diff(a, b) 是自己寫的 副程式, 計算 a, b 的相對誤差 : : ! 相對誤差等於 = (abs_diff(a, b))/max(abs(a), abs(b)) : : ! abs_diff(a, b) 是自己寫的副程式,求 a, b 兩個數字的 絕對誤差 : : ! 絕對誤差= abs(a - b) -- e-mail: sjgau4311@gmail.com 我的課程介紹網頁: http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18 AutoCAD 台灣地區菁英講師獲選 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.82

12/26 13:29, , 1F
能用fortran作一次同樣的事嗎?畢竟討論的是fortran。
12/26 13:29, 1F
文章代碼(AID): #1D5gT9zb (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1D5gT9zb (Fortran)