mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 00:35:10 +00:00
add std.math.big.Int.fitsInTwosComp
so that we can pass runtime-known values
This commit is contained in:
parent
d53fae3551
commit
99153ac0aa
@ -150,16 +150,20 @@ pub const Int = struct {
|
||||
return bits;
|
||||
}
|
||||
|
||||
pub fn fits(self: Int, comptime T: type) bool {
|
||||
pub fn fitsInTwosComp(self: Int, is_signed: bool, bit_count: usize) bool {
|
||||
if (self.eqZero()) {
|
||||
return true;
|
||||
}
|
||||
if (!T.is_signed and !self.positive) {
|
||||
if (!is_signed and !self.positive) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const req_bits = self.bitCountTwosComp() + @boolToInt(self.positive and T.is_signed);
|
||||
return T.bit_count >= req_bits;
|
||||
const req_bits = self.bitCountTwosComp() + @boolToInt(self.positive and is_signed);
|
||||
return bit_count >= req_bits;
|
||||
}
|
||||
|
||||
pub fn fits(self: Int, comptime T: type) bool {
|
||||
return self.fitsInTwosComp(T.is_signed, T.bit_count);
|
||||
}
|
||||
|
||||
// Returns the approximate size of the integer in the given base. Negative values accomodate for
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user