← Georg Nees, 1969 Chapter ③ — Spektrum

Dissertation 1969

ALGOL 60

'BEGIN' 'COMMENT' ZUFALLSFOLGE 1.,
'INTEGER' JI, JS.,
'REAL' JA, JE.,
'REAL' 'PROCEDURE' J.,
'BEGIN' 'COMMENT' ZUFALLSGENERATOR J.,
   JI.=5*JI.,
   'IF' JI 'NOTLESS' 8589934592 'THEN' JI.=JI-8589934592.,
   'IF' JI 'NOTLESS' 4294967296 'THEN' JI.=JI-4294967296.,
   'IF' JI 'NOTLESS' 2147483648 'THEN' JI.=JI-2147483648.,
   J.=JI/2147483648*(JE-JA) + JA
'END' ZUFALLSGENERATOR J.,
JS.=1306859721.,
'BEGIN' 'REAL' U.,
   JI.=JS., OPEN(0,0).,
   JA.=0., JE.=90.,
   'FOR' U.=0 'STEP' 2 'UNTIL' 258 'DO'
   'BEGIN' LEER(U+.5,0)., LINE(U+.5,J).,
           LEER(U+1.5,J)., LINE(U+1.5,0)
   'END', CLOSE
'END'
'END' ZUFALLSFOLGE 1.,

LEER(0,-90.0)., X.=0., Y.=0., OPEN(X,Y).,

'BEGIN' 'COMMENT' ZUFALLSFOLGE 2.,
'INTEGER' JI, JS.,
'REAL' JA, JE.,
'REAL' 'PROCEDURE' J.,
'BEGIN' 'COMMENT' ZUFALLSGENERATOR J.,
   JI.=5*JI.,
   'IF' JI 'NOTLESS' 512 'THEN' JI.=JI-512.,
   'IF' JI 'NOTLESS' 256 'THEN' JI.=JI-256.,
   'IF' JI 'NOTLESS' 128 'THEN' JI.=JI-128.,
   J.=JI/128*(JE-JA) + JA
'END' ZUFALLSGENERATOR J.,
JS.=127.,
'BEGIN' 'REAL' U.,
   JI.=JS., OPEN(0,0).,
   JA.=0., JE.=90.,
   'FOR' U.=0 'STEP' 2 'UNTIL' 258 'DO'
   'BEGIN' LEER(U+.5,0)., LINE(U+.5,J).,
           LEER(U+1.5,J)., LINE(U+1.5,0)
   'END', CLOSE
'END'
'END' ZUFALLSFOLGE 2.,

This page · drawing kernel

JavaScript

function makeGenerator(seed, [p3, p2, p1]) {
  let JI = seed;
  return function J(JA, JE) {
    JI = 5 * JI;
    if (JI >= p3) JI -= p3;
    if (JI >= p2) JI -= p2;
    if (JI >= p1) JI -= p1;
    return (JI / p1) * (JE - JA) + JA;
  };
}

const J1 = makeGenerator(1306859721, [2**33, 2**32, 2**31]);
const J2 = makeGenerator(127, [512, 256, 128]);

function spectrum(J, y0) {
  for (let U = 0; U <= 258; U += 2) {
    LEER(U + 0.5, y0);     LINE(U + 0.5, y0 + J(0, 90));
    LEER(U + 1.5, y0 + J(0, 90)); LINE(U + 1.5, y0);
  }
}

spectrum(J1, 0);
spectrum(J2, -90);

Figure 5 runs the same bar sequence twice. Each loop pass draws two vertical segments: from the foot on the axis up to a random height J, then from the next peak back to the foot — 130 passes, 260 bars per spectrum. Above, the generator uses powers of two from 233 down to 231 and the book seed JS1 = 1306859721: the period is so long that no repeat shows. Below, the same lines with 512, 256, 128 and start value 127 — only 32 values, so the lower spectrum is periodic. After the upper drawing Nees resets the origin to (0, −90) so both spectra meet on a shared axis (along the long edge of the A4 sheet in the book).

© Works of Georg Nees: heirs Eckhard Nees & Sandra Nees · Website © 2026 Eckhard Nees