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 › addMulLimbWithCarry Public Function addMulLimbWithCarry Doc Source Public Function std.math.big.int.addMulLimbWithCarry
pub fn addMulLimbWithCarry (a : Limb , b : Limb , c : Limb , carry : *Limb ) Limb Params File math/big/int.zig: 129
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146 pub fn addMulLimbWithCarry (a : Limb , b : Limb , c : Limb , carry : *Limb ) Limb {
// ov1[0] = a + *carry
const ov1 = @addWithOverflow (a , carry .*);
// r2 = b * c
const bc = @as (DoubleLimb , math .mulWide (Limb , b , c ));
const r2 = @as (Limb , @truncate (bc ));
const c2 = @as (Limb , @truncate (bc >> limb_bits ));
// ov2[0] = ov1[0] + r2
const ov2 = @addWithOverflow (ov1 [0 ], r2 );
// This never overflows, c1, c3 are either 0 or 1 and if both are 1 then
// c2 is at least <= maxInt(Limb) - 2.
carry .* = ov1 [1 ] + c2 + ov2 [1 ];
return ov2 [0 ];
}
a + b * c + *carry, sets carry to the overflow bits