FORTRAN 77 on PDP-11

Jerome H. Fine jhfinexgs2 at compsys.to
Wed Jul 27 19:41:08 CDT 2005


 >Paul Koning wrote:

> Jerome> I have been having some fun with Prime Numbers using FORTRAN
> Jerome> 77 under RT-11 on a PDP-11.  Since I rapidly run out of the
> Jerome> capacity of 32 bit numbers (INTEGER * 4 NUMBER), I have
> Jerome> started to use 64 bit values (REAL * 8 NUMBER) but the
> Jerome> conversion routines leave a lot to be desired on output.
> Jerome> When using F32.0, I can count on only about 15 digits of
> Jerome> accuracy even though the values are often accurate to an
> Jerome> exact integer.
>
>Of course.  Just because it's exactly representable as an integer
>doesn't mean it's exactly representable as a 64 bit float.  Those have
>a 56 bit mantissa, which means you have 2^56 bits of resolution, which
>translates to roughly 16 digits.  (The VAX architecture handbook
>mentions that explicitly, by the way.)
>
Jerome Fine replies:

What I am complaining about is not the internal operations, but the
conversion routines.  I went to the trouble of printing out the values
in OCTAL so that I could figure out the problem.  A 56 bit mantissa
should allow a value of 36,028,797,018,963,968 when the leading
(invisible) bit is one with the remaining bits zero.  The displayed value
is 36,028,797,018,963,965 instead or less by 3.  I checked the
actual 64 bit float at 56000 octal which is an exponent of 270 octal
or 2^55 in excess floating on a PDP-11 (unless my understanding of
exactly 1 which is the 64 bit float value of 40200 which is an
exponent of 201 octal that must be 2^0 = 1 is incorrect).

>Jerome> If needed, I can write my own conversion routines, but I
> Jerome> though I might inquire if anyone knows of any libraries which
> Jerome> are exact or better still, multi-precision libraries which
> Jerome> can handle up to 128 bit integers?
>
>If you want exact arithmetic, run, don't walk, away from floating
>point numbers.  Use only integers.
>
>There the GNU MP library, and others like it.  Long integer arithmetic
>libraries are commonly found in crypto library packages.  Come to
>think of it, you'll find functions that are helpful in stuff relating
>to prime numbers -- since prime numbers also figure prominently in
>cryptography. 
>
>So you could use MP (which is in C) directly, given a suitable
>compiler.  Or you could port it to Fortran...
>
Any idea where I could download the source code?  Given
that FORTRAN is not really suitable for shifting and
using carry bits, I would port to MACRO-11.

In general, sieve methods for prime numbers don't ever
need division and rarely need multiplication.  Addition
and comparing are the primary operations.  Increment is
also needed (with increment by 2 and 4 being a big time
saver).  So the only other thing needed are accurate
conversion routines to allow output in decimal instead
of octal.  I presume that the latter is best done using
subtraction of multiple powers of TEN which are stored
in a table unless there are better methods of converting
the output?  Any suggestions?

Sincerely yours,

Jerome Fine
--
If you attempted to send a reply and the original e-mail
address has been discontinued due a high volume of junk
e-mail, then the semi-permanent e-mail address can be
obtained by replacing the four characters preceding the
'at' with the four digits of the current year.



More information about the cctalk mailing list