CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > General Forums > Main CFD Forum

Simple question about Fortran

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 5, 2012, 03:03
Default Simple question about Fortran
  #1
New Member
 
DJChoi
Join Date: Jan 2012
Posts: 8
Rep Power: 14
effort8 is on a distinguished road
Followings are fortran programming.

implicit none

real(8) :: a=0.78

print *,a

end

---> a=0.779999971389

I think a should be "0.7800000000...".
But there is some difference with exact a.

I would like to know what the problem is...

Thanks.
effort8 is offline   Reply With Quote

Old   March 5, 2012, 03:16
Default
  #2
New Member
 
Join Date: Mar 2012
Posts: 8
Rep Power: 14
Fabian82 is on a distinguished road
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:

program test
implicit none

! this is equivalent to a = 0.78_4
real(8) :: a = 0.78

! this is better
real(8) :: b = 0.78_8

print*,a
print*,b
end program test

Output:
0.77999997138977051
0.78000000000000003

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.

program test2
implicit none
integer, parameter :: rp = 8

real(kind=rp) :: a = 0.78_rp

print*,a
end program test2
Fabian82 is offline   Reply With Quote

Old   March 5, 2012, 05:11
Default Thank-you
  #3
New Member
 
DJChoi
Join Date: Jan 2012
Posts: 8
Rep Power: 14
effort8 is on a distinguished road
Thank-you for your answer.
effort8 is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Simple Question - or not? Florian2 Main CFD Forum 10 November 17, 2011 16:48
SIMPLE Algo question hornig Main CFD Forum 0 November 10, 2011 16:17
Very simple question Vashishth Patel CFX 10 November 8, 2011 04: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


All times are GMT -4. The time now is 23:46.