This post will serve 2 purposes:
(a) Let anyone who keeps track note that my e-mail address has changed.
(b) My progress in calculating high precision numbers:
Background: I want to calculate li(x) for Prime Numbers for
2 <= x <= 10 ** n accurate to at least 20 decimal places to
the right of the decimal point. This will require numbers using
REAL * 128 = Unsigned INTEGER * 64 / FRACTION * 64
in order to calculate the natural logarithm, log(10 ** n),
accurate to about 120 decimal places or 400 bits when n = 100,
although initially I will limit the calculation to n = 38.
If anyone is interested, I have finally produced 2 FORTRAN 77
(and many MACRO-11 support) subroutines which calculate:
(i) The reciprocal of an Unsigned INTEGER * 2 to 128, 256 and 512
bits of accuracy
(ii) The natural logarithm of log(p+1)-log(p) where p is an
Unsigned INTEGER * 2 also to 128, 256 and 512 bits of accuracy
I have also calculated log(2), log(10) and log(log(10)) to
128, 256 and 512 bits of accuracy (well the 512 is probably
only 500 bits) so that the values for li(x) can now be done
for 10 <= x <= 10 ** n when n is an INTEGER from 1 to 100.
At the moment, year end housekeeping tasks will occupy my
time for about a month, but I hope to complete li(x) up
to 10 ** 100 by around June.
The final step with be to calculate the value of log(x) for
any INTEGER value of x which also requires the reciprocal
of 1 <= x <= 3 (which should be only a bit more difficult
than 1/3) followed by modifications to the code to increase
the speed of the calculation. I might also be able to write
some NEW instructions for the PDP-11 which will execute under
E11. Probably the most useful would be an Unsigned INTEGER
multiply instruction, especially if it could handle 32 or
perhaps 64 or even 128 bit operands. E11 allows this to be
done in C and X86 assembler. One possible method might be
to use the floating point registers of 64 bits * 64 bits to
produce the 128 bit product. That might increase multiplication
speed by a factor of 10 (reduce multiplications by a factor of 16).
While the subroutines execute under RT-11, there is NO actual
RT-11 dependent code and the code can easily execute under RSX-11
and RSTS/E. If there is any general interest, I can provide
additional details. While there has been a bit of actual
testing using a PDP-11/73, most of the work has been done under
E11 on a 750 MHz Pentium III under Windows 98 SE. This provides
speeds about 15 times a PDP-11/93 (or about 25 times the speed
of the PDP-11/73 for both CPU and disk I/O). I hope to switch
to a Pentium 4 sometime this year.
Any questions?
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.
Show replies by date