funsec mailing list archives
Re: simple question
From: Valdis.Kletnieks () vt edu
Date: Sat, 05 Dec 2009 21:45:11 -0500
On Sat, 05 Dec 2009 16:33:42 PST, "Tomas L. Byrnes" said:
Yes, and it you look at the real to integer, and integer to real, assignments without conversion functions, you can see where the actual assignment may be indeterminate. I don't have the datasets, and haven't done Fortran since F77, but when I did Fortran, assignment without type conversion produced unpredictable results. Specifically, in little endian machines, assigning a real to an integer was a very workable random number generator.
Admittedly, when I was doing Fortran IV, it was on a big-endian machine,
but I don't remember real->int being a big problem. So I whomped up a quick
test:
% cat ftest.f
program main
dimension a(10)
data a /1.0, 5.0, 10.0, 11938.0, -45.7, 9.2, 4.3, -99934.2,
$ 1.0, 0.0/
do 20 i = 1, 10
j = a(i)
write(6,10) i, j, a(i)
10 format(' ',i6, ' ',i6,' ', f9.2)
20 continue
stop
end
% gfortran ftest.f
% ./a.out
1 1 1.00
2 5 5.00
3 10 10.00
4 11938 11938.00
5 -45 -45.70
6 9 9.20
7 4 4.30
8 -99934 -99934.20
9 1 1.00
10 0 0.00
Nope, doesn't look like a random number generator to me... Tried with 'REAL*8
A(10)' and that didn't change the output at all. Nor did compiling for
32 or 64 bit make a difference, and this is on an Intel Core2, which is most
certainly little-endian.
Now mind you, if you started doing type punning in Fortran (i.e. something
like this:
subroutine z1
common /foo/ i(20)
C i is implicitly an integer*4
end
subroutine z2
common /foo/ a(20)
C but here the same storage is implicit real*4
end
you're in for trouble. But you do that in *any* language and you're
in for trouble.
Attachment:
_bin
Description:
_______________________________________________ Fun and Misc security discussion for OT posts. https://linuxbox.org/cgi-bin/mailman/listinfo/funsec Note: funsec is a public and open mailing list.
Current thread:
- simple question RandallM (Dec 03)
- Re: simple question Dan White (Dec 03)
- Re: simple question Drsolly (Dec 03)
- Re: simple question Martin Tomasek (Dec 04)
- Re: simple question Tomas L. Byrnes (Dec 05)
- Re: simple question RandallM (Dec 05)
- Re: simple question Martin Tomasek (Dec 05)
- Re: simple question Tomas L. Byrnes (Dec 05)
- Re: simple question Valdis . Kletnieks (Dec 05)
- Re: simple question Martin Tomasek (Dec 06)
- Re: simple question Tomas L. Byrnes (Dec 06)
- Re: simple question Dan Kaminsky (Dec 07)
- Re: simple question Martin Tomasek (Dec 04)
- Re: simple question Tomas L. Byrnes (Dec 05)
