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. Private Function
fnllsquareBasecase(r: []Limb, x: []constLimb) void {
constx_norm = x;
assert(r.len >= 2 * x_norm.len + 1);
assert(!slicesOverlap(r, x));
// Compute the square of a N-limb bigint with only (N^2 + N)/2// multiplications by exploiting the symmetry of the coefficients around the// diagonal://// a b c *// a b c =// -------------------// ca cb cc +// ba bb bc +// aa ab ac//// Note that:// - Each mixed-product term appears twice for each column,// - Squares are always in the 2k (0 <= k < N) columnfor (x_norm, 0..) |v, i| {
// Accumulate all the x[i]*x[j] (with x!=j) productsconstoverflow = llmulLimb(.add, r[2 * i + 1 ..], x_norm[i + 1 ..], v);
assert(!overflow);
}
// Each product appears twice, multiply by 2_ = llshl(r, r[0 .. 2 * x_norm.len], 1);
for (x_norm, 0..) |v, i| {
// Compute and add the squaresconstoverflow = llmulLimb(.add, r[2 * i ..], x[i..][0..1], v);
assert(!overflow);
}
}
r MUST NOT alias x.