On Jul 25, 7:57 am, e p chandler <e...@[EMAIL PROTECTED]
> wrote:
> seeftp://ftp.swcp.com/pub/walt/F/Examples/sieve.f95
I tried this simple program using six Fortran compilers but setting
the integer parameter last_number to 10000000 (10 million). All
compiled but four of the six had problems during exection.
Sun f90:
signal SEGV (no mapping at the fault address) in MAIN at line 24
in file "primes2.f90"
24 nums=(/0,(ic,ic=2,mxn)/)
gfortran:
Segmentation fault
Program received signal SIGSEGV, Segmentation fault.
0x08048875 in MAIN__ () at primes2.f90:29
29 nums(2*i:mxn:i)=0
PGI pgf95:
Segmentation fault
Program received signal SIGSEGV, Segmentation fault.
0x08049939 in sieve_of_eratosthenes () at primes2.f90:24
24 nums=(/0,(ic,ic=2,mxn)/)
Intel ifort:
Segmentation fault
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402909 in sieve_of_eratosthenes () at primes2.f90:1
1 program Sieve_Of_Eratosthenes
Lahey lf95:
(worked correctly)
IBM xlf90:
(worked correctly)
After re-writing the code to introduce DO-loops everywhere, all six
compilers worked correctly and got the same printed output.
My conclusion: DO-loops still work better than array syntax.
Andy
For those who might care, here is my cleaned up version of the
program:
program Sieve_Of_Eratosthenes
implicit none
integer, parameter :: mxn=10000000
integer, dimension(mxn) :: nums
integer :: i,ic,npr
! ..Initialize NUMBERS to 0,2,3,...,MXN (1 is a special case)
nums(1)=0
do ic=2,mxn
nums(ic)=ic
enddo
! ..The sieve of Eratosthenes: if this number is prime, eliminate all
multiples
do i=2,mxn
if (nums(i) /= 0) then
do ic=2*i,mxn,i
nums(ic)=0
enddo
endif
enddo
! ..Gather them into the front of the array
npr=0
do i=1,mxn
if (nums(i) /= 0) then
npr=npr+1
nums(npr)=nums(i)
endif
enddo
! ..Print them out
print'(a,i0,a,i0)',' There are ', npr,' prime numbers less than ',
mxn
print'(5i10)',nums(1:npr)
print*,'Normal termination'
end program Sieve_Of_Eratosthenes


|
34 Posts in Topic:
|
ALevenson <Andrew.Leve |
2008-07-24 10:55:18 |
|
ALevenson <Andrew.Leve |
2008-07-24 10:59:09 |
|
Craig Powers <craig.po |
2008-07-24 14:11:46 |
|
Paul van Delst <Paul.v |
2008-07-24 14:15:22 |
|
Dick Hendrickson <dick |
2008-07-24 18:06:28 |
|
Craig Powers <craig.po |
2008-07-24 14:09:35 |
|
ALevenson <Andrew.Leve |
2008-07-24 11:12:13 |
|
Craig Powers <craig.po |
2008-07-24 14:15:20 |
|
ALevenson <Andrew.Leve |
2008-07-24 11:19:35 |
|
Alois Steindl <Alois.S |
2008-07-24 20:28:47 |
|
Sebastian Hanigk <hani |
2008-07-24 20:45:13 |
|
ALevenson <Andrew.Leve |
2008-07-24 11:40:38 |
|
Gib Bogle <bogle@[EMAI |
2008-07-25 09:47:44 |
|
dpb <none@[EMAIL PROTE |
2008-07-24 17:43:53 |
|
"Kevin G. Rhoads&quo |
2008-07-25 20:29:05 |
|
dpb <none@[EMAIL PROTE |
2008-07-25 17:21:03 |
|
Richard L Walker <rlwa |
2008-07-25 19:06:03 |
|
dpb <none@[EMAIL PROTE |
2008-07-25 19:15:40 |
|
Ron Ford <ron@[EMAIL P |
2008-07-25 01:36:42 |
|
e p chandler <epc8@[EM |
2008-07-25 06:57:35 |
|
Ron Ford <ron@[EMAIL P |
2008-07-25 16:57:39 |
|
"Dr Ivan D. Reid&quo |
2008-07-25 23:12:58 |
|
e p chandler <epc8@[EM |
2008-07-25 17:14:15 |
|
nospam@[EMAIL PROTECTED]
|
2008-07-25 17:30:39 |
|
Ron Ford <ron@[EMAIL P |
2008-07-25 22:49:22 |
|
e p chandler <epc8@[EM |
2008-07-25 18:02:47 |
|
AnotherSquid <mai@[EMA |
2008-07-29 07:26:26 |
|
"Dr Ivan D. Reid&quo |
2008-07-29 19:07:40 |
|
Reinhold Bader <Bader@ |
2008-07-29 21:19:21 |
|
Craig Powers <craig.po |
2008-07-29 15:29:20 |
|
"Dr Ivan D. Reid&quo |
2008-07-29 22:51:25 |
|
Tobias Burnus <burnus@ |
2008-07-29 11:39:10 |
|
kargl@[EMAIL PROTECTED]
|
2008-07-29 19:29:07 |
|
AnotherSquid <mai@[EMA |
2008-07-30 06:49:43 |
|