mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
b8a6a989c0
This change greatly reduces the number of modules that need to be compiled. The only issue right now is that sometimes when viewing symbol table entries, the aliased symbol is chosen.
16 lines
568 B
C
16 lines
568 B
C
#ifndef COSMOPOLITAN_LIBC_LCG_H_
|
|
#define COSMOPOLITAN_LIBC_LCG_H_
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
#ifdef COSMO
|
|
|
|
forceinline uint64_t KnuthLinearCongruentialGenerator(uint64_t prev[1]) {
|
|
/* Knuth, D.E., "The Art of Computer Programming," Vol 2,
|
|
Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998,
|
|
p. 106 (line 26) & p. 108 */
|
|
prev[0] = prev[0] * 6364136223846793005 + 1442695040888963407;
|
|
return prev[0]; /* be sure to shift! */
|
|
}
|
|
|
|
#endif /* COSMO */
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_LCG_H_ */
|