Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › Random › ziggurat › ZigTableGen Public Function ZigTableGen Doc Source Public Function std.Random.ziggurat.ZigTableGen
pub fn ZigTableGen (
comptime is_symmetric : bool ,
comptime r : f64 ,
comptime v : f64 ,
comptime f : fn (f64 ) f64 ,
comptime f_inv : fn (f64 ) f64 ,
comptime zero_case : fn (Random , f64 ) f64 ,
) ZigTable Params is_symmetric : bool r : f64 v : f64 f : fn (f64 ) f64 f_inv : fn (f64 ) f64 zero_case : fn (Random , f64 ) f64 File Random/ziggurat.zig: 67
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 pub fn ZigTableGen (
comptime is_symmetric : bool ,
comptime r : f64 ,
comptime v : f64 ,
comptime f : fn (f64 ) f64 ,
comptime f_inv : fn (f64 ) f64 ,
comptime zero_case : fn (Random , f64 ) f64 ,
) ZigTable {
var tables : ZigTable = undefined ;
tables .is_symmetric = is_symmetric ;
tables .r = r ;
tables .pdf = f ;
tables .zero_case = zero_case ;
tables .x [0 ] = v / f (r );
tables .x [1 ] = r ;
for (tables .x [2 ..256 ], 0 ..) |*entry , i | {
const last = tables .x [2 + i - 1 ];
entry .* = f_inv (v / last + f (last ));
}
tables .x [256 ] = 0 ;
for (tables .f [0 ..], 0 ..) |*entry , i | {
entry .* = f (tables .x [i ]);
}
return tables ;
}