| New Reply |
A strange fortran code |
Share Thread | Thread Tools |
| Oct20-10, 02:38 PM | #1 |
|
|
A strange fortran code
Hi guys,
I just wrote a simple code for delta function and print it out. Here it is. Code:
program main
implicit none
integer i
real*8 del
real*8,parameter:: ep=1D-2
real*8,parameter:: pi=3.1415926
do i=-10,10,1
write(*,*) i,del(real(i)) ! use function
enddo
do i=-10,10,1
write(*,*) i,(1.0/pi*ep/((real(i))**2+ep**2)) ! no use function
enddo
end
function del(x)
implicit none
real*8 del
real*8 x
real*8,parameter::ep=1D-2
real*8,parameter:: pi=3.1415926
del=(1.0/pi*ep/(x**2+ep**2))
return
end
|
| Oct21-10, 10:11 AM | #2 |
|
Mentor
|
|
| Oct21-10, 12:17 PM | #3 |
|
|
-10 31.830990148286446 -9 4.42379935910539249E-054 -8 3.96072696157977595E-306 -7 31.830990148286446 -6 4.42379936653263965E-054 -5 0.0000000000000000 -4 31.830990148286446 -3 4.42379937841623373E-054 -2 0.0000000000000000 -1 31.830990148286446 0 4.42380394766179441E-054 1 31.830990148286446 2 4.42380242655975552E-054 3 31.830990148286446 4 4.42380241467614869E-054 5 31.830990148286446 6 4.42380240873434528E-054 7 31.830990148286446 8 4.42380240279254245E-054 9 31.830990148286446 10 4.42380239982164045E-054 -10 3.18309583173281331E-005 -9 3.92974701861929112E-005 -8 4.97358443944407051E-005 -7 6.49610718106421125E-005 -6 8.84191714697638248E-005 -5 1.27323451299340604E-004 -4 1.98942445036508832E-004 -3 3.53673738606087140E-004 -2 7.95754859835665312E-004 -1 3.18278073675496917E-003 0 31.830990148286446 1 3.18278073675496917E-003 2 7.95754859835665312E-004 3 3.53673738606087140E-004 4 1.98942445036508832E-004 5 1.27323451299340604E-004 6 8.84191714697638248E-005 7 6.49610718106421125E-005 8 4.97358443944407051E-005 9 3.92974701861929112E-005 10 3.18309583173281331E-005 The upper part is from the function and the lower part is calculated without function. It shall look like sharp gaussian distribution around 0 instead of random distribution. |
| Oct21-10, 03:56 PM | #4 |
|
Mentor
|
A strange fortran code
I'm pretty sure this line is causing the problem:
Code:
write(*,*) i,del(real(i)) ! use function I think this will fix the problem: Code:
write(*,*) i,del(dble(i)) ! use function |
| Oct21-10, 08:55 PM | #5 |
|
|
Thank you a lot :p |
| Oct22-10, 12:45 AM | #6 |
|
Mentor
|
It's more about the size, in bytes, of the variables you're using. For floating point variables, the choices are real*4 (single precision - 4 bytes) and real*8 (double precision - 8 bytes). real() converts whatever to a 4-byte floating point value and dble() converts whatever to an 8-byte floating point value.
Make sure that what you pass to a function is what it is expecting - otherwise you'll have problems. |
| New Reply |
| Thread Tools | |
Similar Threads for: A strange fortran code
|
||||
| Thread | Forum | Replies | ||
| Help me write Fortran code | Programming & Comp Sci | 2 | ||
| Looking for fortran code or subroutine ,please help!!! | Programming & Comp Sci | 0 | ||
| Problem with Fortran g77 code | Programming & Comp Sci | 4 | ||
| Code::Blocks and Fortran | Programming & Comp Sci | 1 | ||
| Convert latex code to fortran code? | Math & Science Software | 1 | ||