|March 5, 2012, 04:03||
Simple question about Fortran
Join Date: Jan 2012
Posts: 8Rep Power: 6
Followings are fortran programming.
real(8) :: a=0.78
I think a should be "0.7800000000...".
But there is some difference with exact a.
I would like to know what the problem is...
|March 5, 2012, 04:16||
Join Date: Mar 2012
Posts: 8Rep Power: 5
If you write a floating point number in Fortran, it assumes that the number has single precision. If you assign this number to a double precision value, the additional digits are filled up with random values. So you should add an underscore and the desired precision the each number which is directly coded in your program. For example:
! this is equivalent to a = 0.78_4
real(8) :: a = 0.78
! this is better
real(8) :: b = 0.78_8
end program test
The small difference in the last number is due to fact that not all decimal fractions may be described by IEEE floating point number exactly. There's always a relative difference of approx 2**(-52) which relates to the number of bits of the mantisse.
In order to handle the precisions in Fortran in a flexible way, I suggest defining a parameter for each precision in use, i.e.
integer, parameter :: rp = 8
real(kind=rp) :: a = 0.78_rp
end program test2
|Thread||Thread Starter||Forum||Replies||Last Post|
|Simple Question - or not?||Florian2||Main CFD Forum||10||November 17, 2011 17:48|
|SIMPLE Algo question||hornig||Main CFD Forum||0||November 10, 2011 17:17|
|Very simple question||Vashishth Patel||CFX||10||November 8, 2011 05:26|
|Comparison between C/C++ and Fortran?||rick||Main CFD Forum||45||September 6, 2011 00:52|
|Simple CFD question for those in the know||judderod||Main CFD Forum||8||August 5, 2011 11:05|