From: Tom Micevski on
Alexandros Droseltis wrote:
> Hello!
>
> I am studying an ancient source written in Fortran IV (it is the
> programme "Free Stochastic Music" by Xenakis in [1]) and I do not
> understand the blank in the following line of code:
>
> HX=HINF+HM*X RANF(-1)
....
> [1] Iannis Xenakis, Formalized Music; Thought and Mathematics in
> Composition, Pendragon Press, Stuyvesant New York

I decided to check my university library and I just borrowed this book,
but the interesting lines in my version are:
-----
510 X=RANF(-1)
IF (N.GT.1) GO TO 530
520 HX=HINF+HM*X
GO TO 560
-----
My version is also slightly different to yours:
Xenakis (1971) Formalized music, Indiana University Press:
Bloomington/London, ISBN: 0-253-32378-9.
From: Ron Shepard on
In article <hcvl0v$2sg$1(a)news.eternal-september.org>,
dpb <none(a)non.net> wrote:

>
> I suppose it wouldn't be too far off base here to point out that many
> compilers have an option that will do that so that one can as a shortcut
> bypass having to find/fix all occurrences.

Even better is when the compiler has the option to initialize variables
to something other than zero, such as NaN for floating point variables
or large negative values for integers. I find these kinds of options
work much better at tracking down these kinds of program bugs.

$.02 -Ron Shepard
From: robin on
"dpb" <none(a)non.net> wrote in message news:hcvl0v$2sg$1(a)news.eternal-september.org...
|
| I suppose it wouldn't be too far off base here to point out that many
| compilers have an option that will do that so that one can as a shortcut
| bypass having to find/fix all occurrences.
|
| While certainly not the best solution in the long run nor my
| recommendation as a final fix, it might help in getting somewhere more
| or less quickly.
|
| The other thing one can do that way is to start the rng w/ same sequence
| and compare results with and without the "zero-memory" flag. If is a
| difference, it'll identify there is a problem that needs addressed.

Some compilers (e.g. Silverfrost FTN95) flag some uninitialised usages.
Others (such as PL/C) used one value as a flag and tested
for uninitialised at run time.


From: robin on
"dpb" <none(a)non.net> wrote in message news:hcvkod$hs$1(a)news.eternal-september.org...
| glen herrmannsfeldt wrote:
| ...
| > Though IBM compilers used to be pretty good about printing out
| > a table of all the variables and their location in memory.
| > (Especially useful when debugging from memory dumps.) A quick
| > look through that table can identify unexpected variable names.
| ...
|
| Particularly useful for this kind of problem was the CDC listing
| cross-reference that also identified the first use of each variable that
| went a long way towards being able to find uninitialized.

IBM's PL/I F-compiler (1966) could produce a complete cross-reference,
including line numbers of all references to any given variable,
where declared, and the attributes of the variable.

Their PL/I compilers can still do that.


From: robin on
"glen herrmannsfeldt" <gah(a)ugcs.caltech.edu> wrote in message news:hcsknv$p5l$2(a)naig.caltech.edu...
| nmm1(a)cam.ac.uk wrote:
| (snip, I wrote)
|
| >>Still my favorite are those for OS/360 which can be declared
| >>either REAL or INTEGER and return the appropriate value.
|
| > You could do that for DOUBLE PRECISION and COMPLEX as well :-)
|
| Well, not for a 31 or 32 bit generator. If you don't care
| about wasting bits you might as well go for COMPLEX*16 and REAL*16,
| or even COMPLEX*32.
|
| For those not following the discussion, the OS/360 calling
| convention returns INTEGER values in general register 0, REAL
| in floating point register 0, COMPLEX*8 in F0 and F2.
| Also, REAL*16 also in F0 and F2, and finally COMPLEX*32
| in all four floating point registers.

OS/360 didn't, in general, have 16-byte reals.
real F.P. occupied 32 bits and 64 bits.

How function results were returned depended not on the
OS but on the hardware and the particular compilers.
It wasn't until the S/370 that quad precision was available
(and then only for +. -. * but not division),
and the OS then was OS/370. (And once again, the OS has nothing
to do with the way that function results are returned.)