[comp.binaries.ibm.pc] v01i185: tcrnd, fast assembly random number routines w/asm source

madler@Hamlet.Caltech.Edu (Mark Adler) (03/04/89)

Posting-number: Volume 01, Issue 185
Originally-from: madler@Hamlet.Caltech.Edu (Mark Adler)
Submitted-by: madler@Hamlet.Caltech.Edu (Mark Adler)
Archive-name: tcrnd_ma/tcrnd_ma.uue

[
This is a set of assembly language routines suitable for linking with
Turbo C programs that generate random numbers of high quality at high
speed.

Object .OBJ files are provided for small, tiny, compact, medium
large, and huge memory models.

The random number generation algorithms (two of them) are from
Knuth's books.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   30381        20496      this uuencoded posting

checksum     size (bytes)  file
   21473        14855      tcrnd.arc

-- R.D.
]

BEGIN--cut here--cut here
begin 644 tcrnd.arc
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
%EE$#&@"P
`
end
END--cut here--cut here