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 :^)
48 lines
973 B
Python
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()
|