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 library itself.
Zig › compiler_rt/ › mulXi3.zig › muldXi
muldXi
mulXi3.muldXi
pub fn muldXi (comptime T : type , a : T , b : T ) DoubleInt (T )
File
Code
pub fn muldXi (comptime T : type , a : T , b : T ) DoubleInt (T ) {
const DT = DoubleInt (T );
const word_t = compiler_rt .HalveInt (DT , false );
const bits_in_word_2 = @sizeOf (T ) * 8 / 2 ;
const lower_mask = (~@as (T , 0 )) >> bits_in_word_2 ;
var r : word_t = undefined ;
r .s .low = (a & lower_mask ) *% (b & lower_mask );
var t : T = r .s .low >> bits_in_word_2 ;
r .s .low &= lower_mask ;
t += (a >> bits_in_word_2 ) *% (b & lower_mask );
r .s .low +%= (t & lower_mask ) << bits_in_word_2 ;
r .s .high = t >> bits_in_word_2 ;
t = r .s .low >> bits_in_word_2 ;
r .s .low &= lower_mask ;
t +%= (b >> bits_in_word_2 ) *% (a & lower_mask );
r .s .low +%= (t & lower_mask ) << bits_in_word_2 ;
r .s .high +%= t >> bits_in_word_2 ;
r .s .high +%= (a >> bits_in_word_2 ) *% (b >> bits_in_word_2 );
return r .all ;
}