struct MacroArithmetic [src]

Members

Source

pub const MacroArithmetic = struct { pub fn div(a: anytype, b: anytype) ArithmeticConversion(@TypeOf(a), @TypeOf(b)) { const ResType = ArithmeticConversion(@TypeOf(a), @TypeOf(b)); const a_casted = cast(ResType, a); const b_casted = cast(ResType, b); switch (@typeInfo(ResType)) { .float => return a_casted / b_casted, .int => return @divTrunc(a_casted, b_casted), else => unreachable, } } pub fn rem(a: anytype, b: anytype) ArithmeticConversion(@TypeOf(a), @TypeOf(b)) { const ResType = ArithmeticConversion(@TypeOf(a), @TypeOf(b)); const a_casted = cast(ResType, a); const b_casted = cast(ResType, b); switch (@typeInfo(ResType)) { .int => { if (@typeInfo(ResType).int.signedness == .signed) { return signedRemainder(a_casted, b_casted); } else { return a_casted % b_casted; } }, else => unreachable, } } }