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 › math › big › int › llaccum Private Function llaccum Doc Source Private Function std.math.big.int.llaccum
fn llaccum (comptime op : AccOp , r : []Limb , a : []const Limb ) void Params File math/big/int.zig: 3846
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872 fn llaccum (comptime op : AccOp , r : []Limb , a : []const Limb ) void {
assert (!slicesOverlap (r , a ) or @intFromPtr (r .ptr ) <= @intFromPtr (a .ptr ));
if (op == .sub ) {
_ = llsubcarry (r , r , a );
return ;
}
assert (r .len != 0 and a .len != 0 );
assert (r .len >= a .len );
var i : usize = 0 ;
var carry : Limb = 0 ;
while (i < a .len ) : (i += 1 ) {
const ov1 = @addWithOverflow (r [i ], a [i ]);
r [i ] = ov1 [0 ];
const ov2 = @addWithOverflow (r [i ], carry );
r [i ] = ov2 [0 ];
carry = @as (Limb , ov1 [1 ]) + ov2 [1 ];
}
while ((carry != 0 ) and i < r .len ) : (i += 1 ) {
const ov = @addWithOverflow (r [i ], carry );
r [i ] = ov [0 ];
carry = ov [1 ];
}
}
r = r (op) a. The result is computed modulo
r.len.