pub fn fromPrimitive(comptime T: type, init_value: T) OverflowError!Self T: typeinit_value: TOverflow104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 pub fn fromPrimitive(comptime T: type, init_value: T) OverflowError!Self {
var x = init_value;
var out: Self = .{
.limbs_buffer = undefined,
.limbs_len = max_limbs_count,
};
for (&out.limbs_buffer) |*limb| {
limb.* = if (@bitSizeOf(T) > t_bits) @as(TLimb, @truncate(x)) else x;
x = math.shr(T, x, t_bits);
}
if (x != 0) {
return error.Overflow;
}
return out;
}
Creates a new big integer from a primitive type. This function may not run in constant time.