Files
Raychel/misc/generate_ziggurat_tables.py
Weckyy702 e7fe9370d3 Hello, World!
Yeah this is quite a thicc first commit but there's no way I'm
untangling this mess just for a nice set of starting commits :^)
2022-12-19 22:41:02 +01:00

48 lines
973 B
Python

from math import *
C = 128
R = 3.442619855899
V = 9.91256303526217e-3
zig_x = [0 for i in range(C+1)]
zig_r = [0 for i in range(C)]
#C code:
#static void zigNorInit(int iC, double dR, double dV)
#{
# int i; double f;
# f = exp(-0.5 * R * R);
# zig_x[0] = V / f;
# zig_x[1] = R;
# zig_x[iC] = 0;
# for (i = 2; i < C; ++i)
# {
# zig_x[i] = sqrt(-2 * log(V / zig_x[i - 1] + f));
# f = exp(-0.5 * zig_x[i] * zig_x[i]);
# }
# for (i = 0; i < C; ++i)
# zig_r[i] = zig_x[i + 1] / zig_x[i];
#}
def main():
f = exp(-0.5 * R * R)
zig_x[0] = V / f
zig_x[1] = R
zig_x[C] = 0
for i in range(2, C):
zig_x[i] = sqrt(-2 * log(V / zig_x[i - 1] + f))
f = exp(-0.5 * zig_x[i] * zig_x[i])
for i in range(C):
zig_r[i] = zig_x[i + 1] / zig_x[i]
print("X:")
for x in zig_x:
print(f"{x}, ")
print("R: ")
for r in zig_r:
print(f"{r}, ")
if __name__ == "__main__":
main()