What follows are the random number generation routines from an ALGOL-60 computational math library, stored on a BESM-6 disk in a text form. The character encoding was with parity, imitating a punched tape character stream and with little to no line feeds; I've added line breaks and indentation:
_REAL _PROCEDURE RND(RANDOM);
_REAL RANDOM;
_BEGIN
_REAL A;
A:=SQRT(-2×LN(RANDOM));
RND:=A-(2.515517+A×(.802853+.010328×A))/
(1+A×(1.432788+A×(.189269+.001308×A)))
_END ;
_REAL _PROCEDURE RANDOM(Y);
_INTEGER Y;
_BEGIN
Y:=3125×Y;
Y:=Y-(Y÷67108864)×67108864;
RANDOM:=Y/67108864
_END ;
The RANDOM
function takes an integer and returns a real in [0; 1); the C equivalent would be ((3125*y) % 67108864) / 67108864.0, where 67108864 is 226.
The RND
function takes a value (obviously positive, as its logarithm is taken) and produces the next supposedly random value. However, giving the resulting function to Wolframalpha shows that it is not particularly random, and its value range goes into the negative territory.
There were no comments or attributions. Does that function look like anything known in the field, but suffered transcription errors, or is it a complete garbage?
Update: The misunderstanding was due to the naming convention. The actual uniform number generator function is
_PROCEDURE UNR(X,A,V);
_INTEGER X;
_REAL A,V;
_BEGIN
_INTEGER I;
V:=0;
_FOR I:=1_STEP 1_UNTIL 5_DO _BEGIN
X:=3125×X;
X:=X-ENTIER(X/67108864)×67108864;
A:=X/33554432-1;
V:=V+A
_END ;
V:=V×0.774596;
V:=0.97×V×(1+0.01×V×V)
_END
The same question about its provenance and quality stands.