var data = {lines:[ {"lineNum":" 1","line":"const std = @import(\"std.zig\");"}, {"lineNum":" 2","line":"const assert = std.debug.assert;"}, {"lineNum":" 3","line":"const testing = std.testing;"}, {"lineNum":" 4","line":""}, {"lineNum":" 5","line":"/// Euler\'s number (e)"}, {"lineNum":" 6","line":"pub const e = 2.71828182845904523536028747135266249775724709369995;"}, {"lineNum":" 7","line":""}, {"lineNum":" 8","line":"/// Archimedes\' constant (π)"}, {"lineNum":" 9","line":"pub const pi = 3.14159265358979323846264338327950288419716939937510;"}, {"lineNum":" 10","line":""}, {"lineNum":" 11","line":"/// Circle constant (τ)"}, {"lineNum":" 12","line":"pub const tau = 2 * pi;"}, {"lineNum":" 13","line":""}, {"lineNum":" 14","line":"/// log2(e)"}, {"lineNum":" 15","line":"pub const log2e = 1.442695040888963407359924681001892137;"}, {"lineNum":" 16","line":""}, {"lineNum":" 17","line":"/// log10(e)"}, {"lineNum":" 18","line":"pub const log10e = 0.434294481903251827651128918916605082;"}, {"lineNum":" 19","line":""}, {"lineNum":" 20","line":"/// ln(2)"}, {"lineNum":" 21","line":"pub const ln2 = 0.693147180559945309417232121458176568;"}, {"lineNum":" 22","line":""}, {"lineNum":" 23","line":"/// ln(10)"}, {"lineNum":" 24","line":"pub const ln10 = 2.302585092994045684017991454684364208;"}, {"lineNum":" 25","line":""}, {"lineNum":" 26","line":"/// 2/sqrt(π)"}, {"lineNum":" 27","line":"pub const two_sqrtpi = 1.128379167095512573896158903121545172;"}, {"lineNum":" 28","line":""}, {"lineNum":" 29","line":"/// sqrt(2)"}, {"lineNum":" 30","line":"pub const sqrt2 = 1.414213562373095048801688724209698079;"}, {"lineNum":" 31","line":""}, {"lineNum":" 32","line":"/// 1/sqrt(2)"}, {"lineNum":" 33","line":"pub const sqrt1_2 = 0.707106781186547524400844362104849039;"}, {"lineNum":" 34","line":""}, {"lineNum":" 35","line":"// From a small c++ [program using boost float128](https://github.com/winksaville/cpp_boost_float128)"}, {"lineNum":" 36","line":"pub const f128_true_min = @bitCast(f128, @as(u128, 0x00000000000000000000000000000001));"}, {"lineNum":" 37","line":"pub const f128_min = @bitCast(f128, @as(u128, 0x00010000000000000000000000000000));"}, {"lineNum":" 38","line":"pub const f128_max = @bitCast(f128, @as(u128, 0x7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF));"}, {"lineNum":" 39","line":"pub const f128_epsilon = @bitCast(f128, @as(u128, 0x3F8F0000000000000000000000000000));"}, {"lineNum":" 40","line":"pub const f128_toint = 1.0 / f128_epsilon;"}, {"lineNum":" 41","line":""}, {"lineNum":" 42","line":"// float.h details"}, {"lineNum":" 43","line":"pub const f64_true_min = 4.94065645841246544177e-324;"}, {"lineNum":" 44","line":"pub const f64_min = 2.2250738585072014e-308;"}, {"lineNum":" 45","line":"pub const f64_max = 1.79769313486231570815e+308;"}, {"lineNum":" 46","line":"pub const f64_epsilon = 2.22044604925031308085e-16;"}, {"lineNum":" 47","line":"pub const f64_toint = 1.0 / f64_epsilon;"}, {"lineNum":" 48","line":""}, {"lineNum":" 49","line":"pub const f32_true_min = 1.40129846432481707092e-45;"}, {"lineNum":" 50","line":"pub const f32_min = 1.17549435082228750797e-38;"}, {"lineNum":" 51","line":"pub const f32_max = 3.40282346638528859812e+38;"}, {"lineNum":" 52","line":"pub const f32_epsilon = 1.1920928955078125e-07;"}, {"lineNum":" 53","line":"pub const f32_toint = 1.0 / f32_epsilon;"}, {"lineNum":" 54","line":""}, {"lineNum":" 55","line":"pub const f16_true_min = 0.000000059604644775390625; // 2**-24"}, {"lineNum":" 56","line":"pub const f16_min = 0.00006103515625; // 2**-14"}, {"lineNum":" 57","line":"pub const f16_max = 65504;"}, {"lineNum":" 58","line":"pub const f16_epsilon = 0.0009765625; // 2**-10"}, {"lineNum":" 59","line":"pub const f16_toint = 1.0 / f16_epsilon;"}, {"lineNum":" 60","line":""}, {"lineNum":" 61","line":"pub const nan_u16 = @as(u16, 0x7C01);"}, {"lineNum":" 62","line":"pub const nan_f16 = @bitCast(f16, nan_u16);"}, {"lineNum":" 63","line":""}, {"lineNum":" 64","line":"pub const qnan_u16 = @as(u16, 0x7E00);"}, {"lineNum":" 65","line":"pub const qnan_f16 = @bitCast(f16, qnan_u16);"}, {"lineNum":" 66","line":""}, {"lineNum":" 67","line":"pub const inf_u16 = @as(u16, 0x7C00);"}, {"lineNum":" 68","line":"pub const inf_f16 = @bitCast(f16, inf_u16);"}, {"lineNum":" 69","line":""}, {"lineNum":" 70","line":"pub const nan_u32 = @as(u32, 0x7F800001);"}, {"lineNum":" 71","line":"pub const nan_f32 = @bitCast(f32, nan_u32);"}, {"lineNum":" 72","line":""}, {"lineNum":" 73","line":"pub const qnan_u32 = @as(u32, 0x7FC00000);"}, {"lineNum":" 74","line":"pub const qnan_f32 = @bitCast(f32, qnan_u32);"}, {"lineNum":" 75","line":""}, {"lineNum":" 76","line":"pub const inf_u32 = @as(u32, 0x7F800000);"}, {"lineNum":" 77","line":"pub const inf_f32 = @bitCast(f32, inf_u32);"}, {"lineNum":" 78","line":""}, {"lineNum":" 79","line":"pub const nan_u64 = @as(u64, 0x7FF << 52) | 1;"}, {"lineNum":" 80","line":"pub const nan_f64 = @bitCast(f64, nan_u64);"}, {"lineNum":" 81","line":""}, {"lineNum":" 82","line":"pub const qnan_u64 = @as(u64, 0x7ff8000000000000);"}, {"lineNum":" 83","line":"pub const qnan_f64 = @bitCast(f64, qnan_u64);"}, {"lineNum":" 84","line":""}, {"lineNum":" 85","line":"pub const inf_u64 = @as(u64, 0x7FF << 52);"}, {"lineNum":" 86","line":"pub const inf_f64 = @bitCast(f64, inf_u64);"}, {"lineNum":" 87","line":""}, {"lineNum":" 88","line":"pub const nan_u128 = @as(u128, 0x7fff0000000000000000000000000001);"}, {"lineNum":" 89","line":"pub const nan_f128 = @bitCast(f128, nan_u128);"}, {"lineNum":" 90","line":""}, {"lineNum":" 91","line":"pub const qnan_u128 = @as(u128, 0x7fff8000000000000000000000000000);"}, {"lineNum":" 92","line":"pub const qnan_f128 = @bitCast(f128, qnan_u128);"}, {"lineNum":" 93","line":""}, {"lineNum":" 94","line":"pub const inf_u128 = @as(u128, 0x7fff0000000000000000000000000000);"}, {"lineNum":" 95","line":"pub const inf_f128 = @bitCast(f128, inf_u128);"}, {"lineNum":" 96","line":""}, {"lineNum":" 97","line":"pub const nan = @import(\"math/nan.zig\").nan;"}, {"lineNum":" 98","line":"pub const snan = @import(\"math/nan.zig\").snan;"}, {"lineNum":" 99","line":"pub const inf = @import(\"math/inf.zig\").inf;"}, {"lineNum":" 100","line":""}, {"lineNum":" 101","line":"pub fn approxEq(comptime T: type, x: T, y: T, epsilon: T) bool {","class":"lineCov","hits":"4","order":"1234","possible_hits":"4",}, {"lineNum":" 102","line":" assert(@typeInfo(T) == .Float);","class":"lineCov","hits":"4","order":"1235","possible_hits":"4",}, {"lineNum":" 103","line":" return fabs(x - y) < epsilon;","class":"lineCov","hits":"4","order":"1236","possible_hits":"4",}, {"lineNum":" 104","line":"}"}, {"lineNum":" 105","line":""}, {"lineNum":" 106","line":"// TODO: Hide the following in an internal module."}, {"lineNum":" 107","line":"pub fn forceEval(value: var) void {","class":"lineCov","hits":"6","order":"5357","possible_hits":"6",}, {"lineNum":" 108","line":" const T = @TypeOf(value);"}, {"lineNum":" 109","line":" switch (T) {"}, {"lineNum":" 110","line":" f16 => {"}, {"lineNum":" 111","line":" var x: f16 = undefined;","class":"lineCov","hits":"1","order":"10004","possible_hits":"1",}, {"lineNum":" 112","line":" const p = @ptrCast(*volatile f16, &x);","class":"lineCov","hits":"1","order":"10005","possible_hits":"1",}, {"lineNum":" 113","line":" p.* = x;","class":"lineCov","hits":"1","order":"10006","possible_hits":"1",}, {"lineNum":" 114","line":" },"}, {"lineNum":" 115","line":" f32 => {"}, {"lineNum":" 116","line":" var x: f32 = undefined;","class":"lineCov","hits":"1","order":"9753","possible_hits":"1",}, {"lineNum":" 117","line":" const p = @ptrCast(*volatile f32, &x);","class":"lineCov","hits":"1","order":"9754","possible_hits":"1",}, {"lineNum":" 118","line":" p.* = x;","class":"lineCov","hits":"1","order":"9755","possible_hits":"1",}, {"lineNum":" 119","line":" },"}, {"lineNum":" 120","line":" f64 => {"}, {"lineNum":" 121","line":" var x: f64 = undefined;","class":"lineCov","hits":"1","order":"5358","possible_hits":"1",}, {"lineNum":" 122","line":" const p = @ptrCast(*volatile f64, &x);","class":"lineCov","hits":"1","order":"5359","possible_hits":"1",}, {"lineNum":" 123","line":" p.* = x;","class":"lineCov","hits":"1","order":"5360","possible_hits":"1",}, {"lineNum":" 124","line":" },"}, {"lineNum":" 125","line":" else => {"}, {"lineNum":" 126","line":" @compileError(\"forceEval not implemented for \" ++ @typeName(T));"}, {"lineNum":" 127","line":" },"}, {"lineNum":" 128","line":" }"}, {"lineNum":" 129","line":"}"}, {"lineNum":" 130","line":""}, {"lineNum":" 131","line":"pub fn raiseInvalid() void {","class":"lineCov","hits":"2","order":"11071","possible_hits":"2",}, {"lineNum":" 132","line":" // Raise INVALID fpu exception"}, {"lineNum":" 133","line":"}"}, {"lineNum":" 134","line":""}, {"lineNum":" 135","line":"pub fn raiseUnderflow() void {","class":"lineCov","hits":"2","order":"9574","possible_hits":"2",}, {"lineNum":" 136","line":" // Raise UNDERFLOW fpu exception"}, {"lineNum":" 137","line":"}"}, {"lineNum":" 138","line":""}, {"lineNum":" 139","line":"pub fn raiseOverflow() void {","class":"lineCov","hits":"2","order":"9886","possible_hits":"2",}, {"lineNum":" 140","line":" // Raise OVERFLOW fpu exception"}, {"lineNum":" 141","line":"}"}, {"lineNum":" 142","line":""}, {"lineNum":" 143","line":"pub fn raiseInexact() void {","class":"lineNoCov","hits":"0","possible_hits":"2",}, {"lineNum":" 144","line":" // Raise INEXACT fpu exception"}, {"lineNum":" 145","line":"}"}, {"lineNum":" 146","line":""}, {"lineNum":" 147","line":"pub fn raiseDivByZero() void {","class":"lineNoCov","hits":"0","possible_hits":"2",}, {"lineNum":" 148","line":" // Raise INEXACT fpu exception"}, {"lineNum":" 149","line":"}"}, {"lineNum":" 150","line":""}, {"lineNum":" 151","line":"pub const isNan = @import(\"math/isnan.zig\").isNan;"}, {"lineNum":" 152","line":"pub const isSignalNan = @import(\"math/isnan.zig\").isSignalNan;"}, {"lineNum":" 153","line":"pub const fabs = @import(\"math/fabs.zig\").fabs;"}, {"lineNum":" 154","line":"pub const ceil = @import(\"math/ceil.zig\").ceil;"}, {"lineNum":" 155","line":"pub const floor = @import(\"math/floor.zig\").floor;"}, {"lineNum":" 156","line":"pub const trunc = @import(\"math/trunc.zig\").trunc;"}, {"lineNum":" 157","line":"pub const round = @import(\"math/round.zig\").round;"}, {"lineNum":" 158","line":"pub const frexp = @import(\"math/frexp.zig\").frexp;"}, {"lineNum":" 159","line":"pub const frexp32_result = @import(\"math/frexp.zig\").frexp32_result;"}, {"lineNum":" 160","line":"pub const frexp64_result = @import(\"math/frexp.zig\").frexp64_result;"}, {"lineNum":" 161","line":"pub const modf = @import(\"math/modf.zig\").modf;"}, {"lineNum":" 162","line":"pub const modf32_result = @import(\"math/modf.zig\").modf32_result;"}, {"lineNum":" 163","line":"pub const modf64_result = @import(\"math/modf.zig\").modf64_result;"}, {"lineNum":" 164","line":"pub const copysign = @import(\"math/copysign.zig\").copysign;"}, {"lineNum":" 165","line":"pub const isFinite = @import(\"math/isfinite.zig\").isFinite;"}, {"lineNum":" 166","line":"pub const isInf = @import(\"math/isinf.zig\").isInf;"}, {"lineNum":" 167","line":"pub const isPositiveInf = @import(\"math/isinf.zig\").isPositiveInf;"}, {"lineNum":" 168","line":"pub const isNegativeInf = @import(\"math/isinf.zig\").isNegativeInf;"}, {"lineNum":" 169","line":"pub const isNormal = @import(\"math/isnormal.zig\").isNormal;"}, {"lineNum":" 170","line":"pub const signbit = @import(\"math/signbit.zig\").signbit;"}, {"lineNum":" 171","line":"pub const scalbn = @import(\"math/scalbn.zig\").scalbn;"}, {"lineNum":" 172","line":"pub const pow = @import(\"math/pow.zig\").pow;"}, {"lineNum":" 173","line":"pub const powi = @import(\"math/powi.zig\").powi;"}, {"lineNum":" 174","line":"pub const sqrt = @import(\"math/sqrt.zig\").sqrt;"}, {"lineNum":" 175","line":"pub const cbrt = @import(\"math/cbrt.zig\").cbrt;"}, {"lineNum":" 176","line":"pub const acos = @import(\"math/acos.zig\").acos;"}, {"lineNum":" 177","line":"pub const asin = @import(\"math/asin.zig\").asin;"}, {"lineNum":" 178","line":"pub const atan = @import(\"math/atan.zig\").atan;"}, {"lineNum":" 179","line":"pub const atan2 = @import(\"math/atan2.zig\").atan2;"}, {"lineNum":" 180","line":"pub const hypot = @import(\"math/hypot.zig\").hypot;"}, {"lineNum":" 181","line":"pub const exp = @import(\"math/exp.zig\").exp;"}, {"lineNum":" 182","line":"pub const exp2 = @import(\"math/exp2.zig\").exp2;"}, {"lineNum":" 183","line":"pub const expm1 = @import(\"math/expm1.zig\").expm1;"}, {"lineNum":" 184","line":"pub const ilogb = @import(\"math/ilogb.zig\").ilogb;"}, {"lineNum":" 185","line":"pub const ln = @import(\"math/ln.zig\").ln;"}, {"lineNum":" 186","line":"pub const log = @import(\"math/log.zig\").log;"}, {"lineNum":" 187","line":"pub const log2 = @import(\"math/log2.zig\").log2;"}, {"lineNum":" 188","line":"pub const log10 = @import(\"math/log10.zig\").log10;"}, {"lineNum":" 189","line":"pub const log1p = @import(\"math/log1p.zig\").log1p;"}, {"lineNum":" 190","line":"pub const fma = @import(\"math/fma.zig\").fma;"}, {"lineNum":" 191","line":"pub const asinh = @import(\"math/asinh.zig\").asinh;"}, {"lineNum":" 192","line":"pub const acosh = @import(\"math/acosh.zig\").acosh;"}, {"lineNum":" 193","line":"pub const atanh = @import(\"math/atanh.zig\").atanh;"}, {"lineNum":" 194","line":"pub const sinh = @import(\"math/sinh.zig\").sinh;"}, {"lineNum":" 195","line":"pub const cosh = @import(\"math/cosh.zig\").cosh;"}, {"lineNum":" 196","line":"pub const tanh = @import(\"math/tanh.zig\").tanh;"}, {"lineNum":" 197","line":"pub const cos = @import(\"math/cos.zig\").cos;"}, {"lineNum":" 198","line":"pub const sin = @import(\"math/sin.zig\").sin;"}, {"lineNum":" 199","line":"pub const tan = @import(\"math/tan.zig\").tan;"}, {"lineNum":" 200","line":""}, {"lineNum":" 201","line":"pub const complex = @import(\"math/complex.zig\");"}, {"lineNum":" 202","line":"pub const Complex = complex.Complex;"}, {"lineNum":" 203","line":""}, {"lineNum":" 204","line":"pub const big = @import(\"math/big.zig\");"}, {"lineNum":" 205","line":""}, {"lineNum":" 206","line":"test \"\" {","class":"lineCov","hits":"2","order":"513","possible_hits":"2",}, {"lineNum":" 207","line":" std.meta.refAllDecls(@This());","class":"lineCov","hits":"1","order":"514","possible_hits":"1",}, {"lineNum":" 208","line":"}"}, {"lineNum":" 209","line":""}, {"lineNum":" 210","line":"pub fn floatMantissaBits(comptime T: type) comptime_int {"}, {"lineNum":" 211","line":" assert(@typeInfo(T) == .Float);"}, {"lineNum":" 212","line":""}, {"lineNum":" 213","line":" return switch (T.bit_count) {"}, {"lineNum":" 214","line":" 16 => 10,"}, {"lineNum":" 215","line":" 32 => 23,"}, {"lineNum":" 216","line":" 64 => 52,"}, {"lineNum":" 217","line":" 80 => 64,"}, {"lineNum":" 218","line":" 128 => 112,"}, {"lineNum":" 219","line":" else => @compileError(\"unknown floating point type \" ++ @typeName(T)),"}, {"lineNum":" 220","line":" };"}, {"lineNum":" 221","line":"}"}, {"lineNum":" 222","line":""}, {"lineNum":" 223","line":"pub fn floatExponentBits(comptime T: type) comptime_int {"}, {"lineNum":" 224","line":" assert(@typeInfo(T) == .Float);"}, {"lineNum":" 225","line":""}, {"lineNum":" 226","line":" return switch (T.bit_count) {"}, {"lineNum":" 227","line":" 16 => 5,"}, {"lineNum":" 228","line":" 32 => 8,"}, {"lineNum":" 229","line":" 64 => 11,"}, {"lineNum":" 230","line":" 80 => 15,"}, {"lineNum":" 231","line":" 128 => 15,"}, {"lineNum":" 232","line":" else => @compileError(\"unknown floating point type \" ++ @typeName(T)),"}, {"lineNum":" 233","line":" };"}, {"lineNum":" 234","line":"}"}, {"lineNum":" 235","line":""}, {"lineNum":" 236","line":"/// Given two types, returns the smallest one which is capable of holding the"}, {"lineNum":" 237","line":"/// full range of the minimum value."}, {"lineNum":" 238","line":"pub fn Min(comptime A: type, comptime B: type) type {"}, {"lineNum":" 239","line":" switch (@typeInfo(A)) {"}, {"lineNum":" 240","line":" .Int => |a_info| switch (@typeInfo(B)) {"}, {"lineNum":" 241","line":" .Int => |b_info| if (!a_info.is_signed and !b_info.is_signed) {"}, {"lineNum":" 242","line":" if (a_info.bits < b_info.bits) {"}, {"lineNum":" 243","line":" return A;"}, {"lineNum":" 244","line":" } else {"}, {"lineNum":" 245","line":" return B;"}, {"lineNum":" 246","line":" }"}, {"lineNum":" 247","line":" },"}, {"lineNum":" 248","line":" else => {},"}, {"lineNum":" 249","line":" },"}, {"lineNum":" 250","line":" else => {},"}, {"lineNum":" 251","line":" }"}, {"lineNum":" 252","line":" return @TypeOf(@as(A, 0) + @as(B, 0));"}, {"lineNum":" 253","line":"}"}, {"lineNum":" 254","line":""}, {"lineNum":" 255","line":"/// Returns the smaller number. When one of the parameter\'s type\'s full range fits in the other,"}, {"lineNum":" 256","line":"/// the return type is the smaller type."}, {"lineNum":" 257","line":"pub fn min(x: var, y: var) Min(@TypeOf(x), @TypeOf(y)) {","class":"linePartCov","hits":"15","order":"461","possible_hits":"20",}, {"lineNum":" 258","line":" const Result = Min(@TypeOf(x), @TypeOf(y));"}, {"lineNum":" 259","line":" if (x < y) {","class":"linePartCov","hits":"15","order":"462","possible_hits":"20",}, {"lineNum":" 260","line":" // TODO Zig should allow this as an implicit cast because x is immutable and in this"}, {"lineNum":" 261","line":" // scope it is known to fit in the return type."}, {"lineNum":" 262","line":" switch (@typeInfo(Result)) {"}, {"lineNum":" 263","line":" .Int => return @intCast(Result, x),","class":"linePartCov","hits":"8","order":"517","possible_hits":"18",}, {"lineNum":" 264","line":" else => return x,","class":"lineCov","hits":"3","order":"528","possible_hits":"3",}, {"lineNum":" 265","line":" }"}, {"lineNum":" 266","line":" } else {"}, {"lineNum":" 267","line":" // TODO Zig should allow this as an implicit cast because y is immutable and in this"}, {"lineNum":" 268","line":" // scope it is known to fit in the return type."}, {"lineNum":" 269","line":" switch (@typeInfo(Result)) {"}, {"lineNum":" 270","line":" .Int => return @intCast(Result, y),","class":"linePartCov","hits":"7","order":"463","possible_hits":"17",}, {"lineNum":" 271","line":" else => return y,","class":"linePartCov","hits":"1","order":"552","possible_hits":"3",}, {"lineNum":" 272","line":" }"}, {"lineNum":" 273","line":" }"}, {"lineNum":" 274","line":"}"}, {"lineNum":" 275","line":""}, {"lineNum":" 276","line":"test \"math.min\" {","class":"lineCov","hits":"2","order":"515","possible_hits":"2",}, {"lineNum":" 277","line":" testing.expect(min(@as(i32, -1), @as(i32, 2)) == -1);","class":"lineCov","hits":"1","order":"516","possible_hits":"1",}, {"lineNum":" 278","line":" {"}, {"lineNum":" 279","line":" var a: u16 = 999;","class":"lineCov","hits":"1","order":"520","possible_hits":"1",}, {"lineNum":" 280","line":" var b: u32 = 10;","class":"lineCov","hits":"1","order":"521","possible_hits":"1",}, {"lineNum":" 281","line":" var result = min(a, b);","class":"lineCov","hits":"1","order":"522","possible_hits":"1",}, {"lineNum":" 282","line":" testing.expect(@TypeOf(result) == u16);","class":"lineCov","hits":"1","order":"523","possible_hits":"1",}, {"lineNum":" 283","line":" testing.expect(result == 10);","class":"lineCov","hits":"1","order":"524","possible_hits":"1",}, {"lineNum":" 284","line":" }"}, {"lineNum":" 285","line":" {"}, {"lineNum":" 286","line":" var a: f64 = 10.34;","class":"lineCov","hits":"1","order":"525","possible_hits":"1",}, {"lineNum":" 287","line":" var b: f32 = 999.12;","class":"lineCov","hits":"1","order":"526","possible_hits":"1",}, {"lineNum":" 288","line":" var result = min(a, b);","class":"lineCov","hits":"1","order":"527","possible_hits":"1",}, {"lineNum":" 289","line":" testing.expect(@TypeOf(result) == f64);","class":"lineCov","hits":"1","order":"529","possible_hits":"1",}, {"lineNum":" 290","line":" testing.expect(result == 10.34);","class":"lineCov","hits":"1","order":"530","possible_hits":"1",}, {"lineNum":" 291","line":" }"}, {"lineNum":" 292","line":" {"}, {"lineNum":" 293","line":" var a: i8 = -127;","class":"lineCov","hits":"1","order":"531","possible_hits":"1",}, {"lineNum":" 294","line":" var b: i16 = -200;","class":"lineCov","hits":"1","order":"532","possible_hits":"1",}, {"lineNum":" 295","line":" var result = min(a, b);","class":"lineCov","hits":"1","order":"533","possible_hits":"1",}, {"lineNum":" 296","line":" testing.expect(@TypeOf(result) == i16);","class":"lineCov","hits":"1","order":"534","possible_hits":"1",}, {"lineNum":" 297","line":" testing.expect(result == -200);","class":"lineCov","hits":"1","order":"535","possible_hits":"1",}, {"lineNum":" 298","line":" }"}, {"lineNum":" 299","line":" {"}, {"lineNum":" 300","line":" const a = 10.34;"}, {"lineNum":" 301","line":" var b: f32 = 999.12;","class":"lineCov","hits":"1","order":"536","possible_hits":"1",}, {"lineNum":" 302","line":" var result = min(a, b);","class":"lineCov","hits":"1","order":"537","possible_hits":"1",}, {"lineNum":" 303","line":" testing.expect(@TypeOf(result) == f32);","class":"lineCov","hits":"1","order":"538","possible_hits":"1",}, {"lineNum":" 304","line":" testing.expect(result == 10.34);","class":"lineCov","hits":"1","order":"539","possible_hits":"1",}, {"lineNum":" 305","line":" }"}, {"lineNum":" 306","line":"}"}, {"lineNum":" 307","line":""}, {"lineNum":" 308","line":"pub fn max(x: var, y: var) @TypeOf(x, y) {","class":"linePartCov","hits":"6","order":"542","possible_hits":"7",}, {"lineNum":" 309","line":" return if (x > y) x else y;","class":"linePartCov","hits":"6","order":"543","possible_hits":"7",}, {"lineNum":" 310","line":"}"}, {"lineNum":" 311","line":""}, {"lineNum":" 312","line":"test \"math.max\" {","class":"lineCov","hits":"2","order":"540","possible_hits":"2",}, {"lineNum":" 313","line":" testing.expect(max(@as(i32, -1), @as(i32, 2)) == 2);","class":"lineCov","hits":"1","order":"541","possible_hits":"1",}, {"lineNum":" 314","line":"}"}, {"lineNum":" 315","line":""}, {"lineNum":" 316","line":"pub fn clamp(val: var, lower: var, upper: var) @TypeOf(val, lower, upper) {","class":"lineCov","hits":"3","order":"546","possible_hits":"3",}, {"lineNum":" 317","line":" assert(lower <= upper);","class":"lineCov","hits":"3","order":"547","possible_hits":"3",}, {"lineNum":" 318","line":" return max(lower, min(val, upper));","class":"lineCov","hits":"3","order":"548","possible_hits":"3",}, {"lineNum":" 319","line":"}"}, {"lineNum":" 320","line":"test \"math.clamp\" {","class":"lineCov","hits":"2","order":"544","possible_hits":"2",}, {"lineNum":" 321","line":" // Within range"}, {"lineNum":" 322","line":" testing.expect(std.math.clamp(@as(i32, -1), @as(i32, -4), @as(i32, 7)) == -1);","class":"lineCov","hits":"1","order":"545","possible_hits":"1",}, {"lineNum":" 323","line":" // Below"}, {"lineNum":" 324","line":" testing.expect(std.math.clamp(@as(i32, -5), @as(i32, -4), @as(i32, 7)) == -4);","class":"lineCov","hits":"1","order":"549","possible_hits":"1",}, {"lineNum":" 325","line":" // Above"}, {"lineNum":" 326","line":" testing.expect(std.math.clamp(@as(i32, 8), @as(i32, -4), @as(i32, 7)) == 7);","class":"lineCov","hits":"1","order":"550","possible_hits":"1",}, {"lineNum":" 327","line":""}, {"lineNum":" 328","line":" // Floating point"}, {"lineNum":" 329","line":" testing.expect(std.math.clamp(@as(f32, 1.1), @as(f32, 0.0), @as(f32, 1.0)) == 1.0);","class":"lineCov","hits":"1","order":"551","possible_hits":"1",}, {"lineNum":" 330","line":" testing.expect(std.math.clamp(@as(f32, -127.5), @as(f32, -200), @as(f32, -100)) == -127.5);","class":"lineCov","hits":"1","order":"553","possible_hits":"1",}, {"lineNum":" 331","line":""}, {"lineNum":" 332","line":" // Mix of comptime and non-comptime"}, {"lineNum":" 333","line":" var i: i32 = 1;","class":"lineCov","hits":"1","order":"554","possible_hits":"1",}, {"lineNum":" 334","line":" testing.expect(std.math.clamp(i, 0, 1) == 1);","class":"lineCov","hits":"1","order":"555","possible_hits":"1",}, {"lineNum":" 335","line":"}"}, {"lineNum":" 336","line":""}, {"lineNum":" 337","line":"pub fn mul(comptime T: type, a: T, b: T) (error{Overflow}!T) {","class":"linePartCov","hits":"10","order":"657","possible_hits":"12",}, {"lineNum":" 338","line":" var answer: T = undefined;","class":"linePartCov","hits":"10","order":"658","possible_hits":"12",}, {"lineNum":" 339","line":" return if (@mulWithOverflow(T, a, b, &answer)) error.Overflow else answer;","class":"linePartCov","hits":"10","order":"659","possible_hits":"12",}, {"lineNum":" 340","line":"}"}, {"lineNum":" 341","line":""}, {"lineNum":" 342","line":"pub fn add(comptime T: type, a: T, b: T) (error{Overflow}!T) {","class":"lineCov","hits":"12","order":"661","possible_hits":"12",}, {"lineNum":" 343","line":" var answer: T = undefined;","class":"lineCov","hits":"12","order":"662","possible_hits":"12",}, {"lineNum":" 344","line":" return if (@addWithOverflow(T, a, b, &answer)) error.Overflow else answer;","class":"lineCov","hits":"12","order":"663","possible_hits":"12",}, {"lineNum":" 345","line":"}"}, {"lineNum":" 346","line":""}, {"lineNum":" 347","line":"pub fn sub(comptime T: type, a: T, b: T) (error{Overflow}!T) {","class":"linePartCov","hits":"2","order":"665","possible_hits":"4",}, {"lineNum":" 348","line":" var answer: T = undefined;","class":"linePartCov","hits":"2","order":"666","possible_hits":"4",}, {"lineNum":" 349","line":" return if (@subWithOverflow(T, a, b, &answer)) error.Overflow else answer;","class":"linePartCov","hits":"2","order":"667","possible_hits":"4",}, {"lineNum":" 350","line":"}"}, {"lineNum":" 351","line":""}, {"lineNum":" 352","line":"pub fn negate(x: var) !@TypeOf(x) {","class":"linePartCov","hits":"2","order":"4868","possible_hits":"3",}, {"lineNum":" 353","line":" return sub(@TypeOf(x), 0, x);","class":"linePartCov","hits":"2","order":"4869","possible_hits":"3",}, {"lineNum":" 354","line":"}"}, {"lineNum":" 355","line":""}, {"lineNum":" 356","line":"pub fn shlExact(comptime T: type, a: T, shift_amt: Log2Int(T)) !T {","class":"lineCov","hits":"1","order":"669","possible_hits":"1",}, {"lineNum":" 357","line":" var answer: T = undefined;","class":"lineCov","hits":"1","order":"670","possible_hits":"1",}, {"lineNum":" 358","line":" return if (@shlWithOverflow(T, a, shift_amt, &answer)) error.Overflow else answer;","class":"lineCov","hits":"1","order":"671","possible_hits":"1",}, {"lineNum":" 359","line":"}"}, {"lineNum":" 360","line":""}, {"lineNum":" 361","line":"/// Shifts left. Overflowed bits are truncated."}, {"lineNum":" 362","line":"/// A negative shift amount results in a right shift."}, {"lineNum":" 363","line":"pub fn shl(comptime T: type, a: T, shift_amt: var) T {","class":"lineCov","hits":"18","order":"558","possible_hits":"18",}, {"lineNum":" 364","line":" const abs_shift_amt = absCast(shift_amt);","class":"lineCov","hits":"9","order":"559","possible_hits":"9",}, {"lineNum":" 365","line":" const casted_shift_amt = if (abs_shift_amt >= T.bit_count) return 0 else @intCast(Log2Int(T), abs_shift_amt);","class":"linePartCov","hits":"19","order":"562","possible_hits":"20",}, {"lineNum":" 366","line":""}, {"lineNum":" 367","line":" if (@TypeOf(shift_amt) == comptime_int or @TypeOf(shift_amt).is_signed) {"}, {"lineNum":" 368","line":" if (shift_amt < 0) {","class":"lineCov","hits":"2","order":"569","possible_hits":"2",}, {"lineNum":" 369","line":" return a >> casted_shift_amt;","class":"lineCov","hits":"2","order":"570","possible_hits":"2",}, {"lineNum":" 370","line":" }"}, {"lineNum":" 371","line":" }"}, {"lineNum":" 372","line":""}, {"lineNum":" 373","line":" return a << casted_shift_amt;","class":"lineCov","hits":"16","order":"563","possible_hits":"16",}, {"lineNum":" 374","line":"}"}, {"lineNum":" 375","line":""}, {"lineNum":" 376","line":"test \"math.shl\" {","class":"lineCov","hits":"2","order":"556","possible_hits":"2",}, {"lineNum":" 377","line":" testing.expect(shl(u8, 0b11111111, @as(usize, 3)) == 0b11111000);","class":"lineCov","hits":"1","order":"557","possible_hits":"1",}, {"lineNum":" 378","line":" testing.expect(shl(u8, 0b11111111, @as(usize, 8)) == 0);","class":"lineCov","hits":"1","order":"564","possible_hits":"1",}, {"lineNum":" 379","line":" testing.expect(shl(u8, 0b11111111, @as(usize, 9)) == 0);","class":"lineCov","hits":"1","order":"565","possible_hits":"1",}, {"lineNum":" 380","line":" testing.expect(shl(u8, 0b11111111, @as(isize, -2)) == 0b00111111);","class":"lineCov","hits":"1","order":"566","possible_hits":"1",}, {"lineNum":" 381","line":" testing.expect(shl(u8, 0b11111111, 3) == 0b11111000);","class":"lineCov","hits":"1","order":"571","possible_hits":"1",}, {"lineNum":" 382","line":" testing.expect(shl(u8, 0b11111111, 8) == 0);","class":"lineCov","hits":"1","order":"572","possible_hits":"1",}, {"lineNum":" 383","line":" testing.expect(shl(u8, 0b11111111, 9) == 0);","class":"lineCov","hits":"1","order":"573","possible_hits":"1",}, {"lineNum":" 384","line":" testing.expect(shl(u8, 0b11111111, -2) == 0b00111111);","class":"lineCov","hits":"1","order":"574","possible_hits":"1",}, {"lineNum":" 385","line":"}"}, {"lineNum":" 386","line":""}, {"lineNum":" 387","line":"/// Shifts right. Overflowed bits are truncated."}, {"lineNum":" 388","line":"/// A negative shift amount results in a left shift."}, {"lineNum":" 389","line":"pub fn shr(comptime T: type, a: T, shift_amt: var) T {","class":"lineCov","hits":"17","order":"577","possible_hits":"17",}, {"lineNum":" 390","line":" const abs_shift_amt = absCast(shift_amt);","class":"lineCov","hits":"8","order":"578","possible_hits":"8",}, {"lineNum":" 391","line":" const casted_shift_amt = if (abs_shift_amt >= T.bit_count) return 0 else @intCast(Log2Int(T), abs_shift_amt);","class":"linePartCov","hits":"17","order":"579","possible_hits":"18",}, {"lineNum":" 392","line":""}, {"lineNum":" 393","line":" if (@TypeOf(shift_amt) == comptime_int or @TypeOf(shift_amt).is_signed) {"}, {"lineNum":" 394","line":" if (shift_amt >= 0) {","class":"lineCov","hits":"1","order":"584","possible_hits":"1",}, {"lineNum":" 395","line":" return a >> casted_shift_amt;","class":"lineCov","hits":"8","order":"587","possible_hits":"8",}, {"lineNum":" 396","line":" } else {"}, {"lineNum":" 397","line":" return a << casted_shift_amt;","class":"lineCov","hits":"2","order":"585","possible_hits":"2",}, {"lineNum":" 398","line":" }"}, {"lineNum":" 399","line":" }"}, {"lineNum":" 400","line":""}, {"lineNum":" 401","line":" return a >> casted_shift_amt;","class":"lineCov","hits":"7","order":"580","possible_hits":"7",}, {"lineNum":" 402","line":"}"}, {"lineNum":" 403","line":""}, {"lineNum":" 404","line":"test \"math.shr\" {","class":"lineCov","hits":"2","order":"575","possible_hits":"2",}, {"lineNum":" 405","line":" testing.expect(shr(u8, 0b11111111, @as(usize, 3)) == 0b00011111);","class":"lineCov","hits":"1","order":"576","possible_hits":"1",}, {"lineNum":" 406","line":" testing.expect(shr(u8, 0b11111111, @as(usize, 8)) == 0);","class":"lineCov","hits":"1","order":"581","possible_hits":"1",}, {"lineNum":" 407","line":" testing.expect(shr(u8, 0b11111111, @as(usize, 9)) == 0);","class":"lineCov","hits":"1","order":"582","possible_hits":"1",}, {"lineNum":" 408","line":" testing.expect(shr(u8, 0b11111111, @as(isize, -2)) == 0b11111100);","class":"lineCov","hits":"1","order":"583","possible_hits":"1",}, {"lineNum":" 409","line":" testing.expect(shr(u8, 0b11111111, 3) == 0b00011111);","class":"lineCov","hits":"1","order":"586","possible_hits":"1",}, {"lineNum":" 410","line":" testing.expect(shr(u8, 0b11111111, 8) == 0);","class":"lineCov","hits":"1","order":"588","possible_hits":"1",}, {"lineNum":" 411","line":" testing.expect(shr(u8, 0b11111111, 9) == 0);","class":"lineCov","hits":"1","order":"589","possible_hits":"1",}, {"lineNum":" 412","line":" testing.expect(shr(u8, 0b11111111, -2) == 0b11111100);","class":"lineCov","hits":"1","order":"590","possible_hits":"1",}, {"lineNum":" 413","line":"}"}, {"lineNum":" 414","line":""}, {"lineNum":" 415","line":"/// Rotates right. Only unsigned values can be rotated."}, {"lineNum":" 416","line":"/// Negative shift values results in shift modulo the bit count."}, {"lineNum":" 417","line":"pub fn rotr(comptime T: type, x: T, r: var) T {","class":"lineCov","hits":"10","order":"593","possible_hits":"10",}, {"lineNum":" 418","line":" if (T.is_signed) {"}, {"lineNum":" 419","line":" @compileError(\"cannot rotate signed integer\");"}, {"lineNum":" 420","line":" } else {"}, {"lineNum":" 421","line":" const ar = @mod(r, T.bit_count);","class":"linePartCov","hits":"6","order":"594","possible_hits":"12",}, {"lineNum":" 422","line":" return shr(T, x, ar) | shl(T, x, T.bit_count - ar);","class":"linePartCov","hits":"10","order":"595","possible_hits":"16",}, {"lineNum":" 423","line":" }"}, {"lineNum":" 424","line":"}"}, {"lineNum":" 425","line":""}, {"lineNum":" 426","line":"test \"math.rotr\" {","class":"lineCov","hits":"2","order":"591","possible_hits":"2",}, {"lineNum":" 427","line":" testing.expect(rotr(u8, 0b00000001, @as(usize, 0)) == 0b00000001);","class":"lineCov","hits":"1","order":"592","possible_hits":"1",}, {"lineNum":" 428","line":" testing.expect(rotr(u8, 0b00000001, @as(usize, 9)) == 0b10000000);","class":"lineCov","hits":"1","order":"596","possible_hits":"1",}, {"lineNum":" 429","line":" testing.expect(rotr(u8, 0b00000001, @as(usize, 8)) == 0b00000001);","class":"lineCov","hits":"1","order":"597","possible_hits":"1",}, {"lineNum":" 430","line":" testing.expect(rotr(u8, 0b00000001, @as(usize, 4)) == 0b00010000);","class":"lineCov","hits":"1","order":"598","possible_hits":"1",}, {"lineNum":" 431","line":" testing.expect(rotr(u8, 0b00000001, @as(isize, -1)) == 0b00000010);","class":"lineCov","hits":"1","order":"599","possible_hits":"1",}, {"lineNum":" 432","line":"}"}, {"lineNum":" 433","line":""}, {"lineNum":" 434","line":"/// Rotates left. Only unsigned values can be rotated."}, {"lineNum":" 435","line":"/// Negative shift values results in shift modulo the bit count."}, {"lineNum":" 436","line":"pub fn rotl(comptime T: type, x: T, r: var) T {","class":"lineCov","hits":"9","order":"602","possible_hits":"9",}, {"lineNum":" 437","line":" if (T.is_signed) {"}, {"lineNum":" 438","line":" @compileError(\"cannot rotate signed integer\");"}, {"lineNum":" 439","line":" } else {"}, {"lineNum":" 440","line":" const ar = @mod(r, T.bit_count);","class":"linePartCov","hits":"6","order":"603","possible_hits":"12",}, {"lineNum":" 441","line":" return shl(T, x, ar) | shr(T, x, T.bit_count - ar);","class":"linePartCov","hits":"9","order":"604","possible_hits":"15",}, {"lineNum":" 442","line":" }"}, {"lineNum":" 443","line":"}"}, {"lineNum":" 444","line":""}, {"lineNum":" 445","line":"test \"math.rotl\" {","class":"lineCov","hits":"2","order":"600","possible_hits":"2",}, {"lineNum":" 446","line":" testing.expect(rotl(u8, 0b00000001, @as(usize, 0)) == 0b00000001);","class":"lineCov","hits":"1","order":"601","possible_hits":"1",}, {"lineNum":" 447","line":" testing.expect(rotl(u8, 0b00000001, @as(usize, 9)) == 0b00000010);","class":"lineCov","hits":"1","order":"605","possible_hits":"1",}, {"lineNum":" 448","line":" testing.expect(rotl(u8, 0b00000001, @as(usize, 8)) == 0b00000001);","class":"lineCov","hits":"1","order":"606","possible_hits":"1",}, {"lineNum":" 449","line":" testing.expect(rotl(u8, 0b00000001, @as(usize, 4)) == 0b00010000);","class":"lineCov","hits":"1","order":"607","possible_hits":"1",}, {"lineNum":" 450","line":" testing.expect(rotl(u8, 0b00000001, @as(isize, -1)) == 0b10000000);","class":"lineCov","hits":"1","order":"608","possible_hits":"1",}, {"lineNum":" 451","line":"}"}, {"lineNum":" 452","line":""}, {"lineNum":" 453","line":"pub fn Log2Int(comptime T: type) type {"}, {"lineNum":" 454","line":" // comptime ceil log2"}, {"lineNum":" 455","line":" comptime var count = 0;"}, {"lineNum":" 456","line":" comptime var s = T.bit_count - 1;"}, {"lineNum":" 457","line":" inline while (s != 0) : (s >>= 1) {"}, {"lineNum":" 458","line":" count += 1;"}, {"lineNum":" 459","line":" }"}, {"lineNum":" 460","line":""}, {"lineNum":" 461","line":" return std.meta.Int(false, count);"}, {"lineNum":" 462","line":"}"}, {"lineNum":" 463","line":""}, {"lineNum":" 464","line":"pub fn IntFittingRange(comptime from: comptime_int, comptime to: comptime_int) type {"}, {"lineNum":" 465","line":" assert(from <= to);"}, {"lineNum":" 466","line":" if (from == 0 and to == 0) {"}, {"lineNum":" 467","line":" return u0;"}, {"lineNum":" 468","line":" }"}, {"lineNum":" 469","line":" const is_signed = from < 0;"}, {"lineNum":" 470","line":" const largest_positive_integer = max(if (from < 0) (-from) - 1 else from, to); // two\'s complement"}, {"lineNum":" 471","line":" const base = log2(largest_positive_integer);"}, {"lineNum":" 472","line":" const upper = (1 << base) - 1;"}, {"lineNum":" 473","line":" var magnitude_bits = if (upper >= largest_positive_integer) base else base + 1;"}, {"lineNum":" 474","line":" if (is_signed) {"}, {"lineNum":" 475","line":" magnitude_bits += 1;"}, {"lineNum":" 476","line":" }"}, {"lineNum":" 477","line":" return std.meta.Int(is_signed, magnitude_bits);"}, {"lineNum":" 478","line":"}"}, {"lineNum":" 479","line":""}, {"lineNum":" 480","line":"test \"math.IntFittingRange\" {","class":"lineCov","hits":"2","order":"609","possible_hits":"2",}, {"lineNum":" 481","line":" testing.expect(IntFittingRange(0, 0) == u0);","class":"lineCov","hits":"1","order":"610","possible_hits":"1",}, {"lineNum":" 482","line":" testing.expect(IntFittingRange(0, 1) == u1);","class":"lineCov","hits":"1","order":"611","possible_hits":"1",}, {"lineNum":" 483","line":" testing.expect(IntFittingRange(0, 2) == u2);","class":"lineCov","hits":"1","order":"612","possible_hits":"1",}, {"lineNum":" 484","line":" testing.expect(IntFittingRange(0, 3) == u2);","class":"lineCov","hits":"1","order":"613","possible_hits":"1",}, {"lineNum":" 485","line":" testing.expect(IntFittingRange(0, 4) == u3);","class":"lineCov","hits":"1","order":"614","possible_hits":"1",}, {"lineNum":" 486","line":" testing.expect(IntFittingRange(0, 7) == u3);","class":"lineCov","hits":"1","order":"615","possible_hits":"1",}, {"lineNum":" 487","line":" testing.expect(IntFittingRange(0, 8) == u4);","class":"lineCov","hits":"1","order":"616","possible_hits":"1",}, {"lineNum":" 488","line":" testing.expect(IntFittingRange(0, 9) == u4);","class":"lineCov","hits":"1","order":"617","possible_hits":"1",}, {"lineNum":" 489","line":" testing.expect(IntFittingRange(0, 15) == u4);","class":"lineCov","hits":"1","order":"618","possible_hits":"1",}, {"lineNum":" 490","line":" testing.expect(IntFittingRange(0, 16) == u5);","class":"lineCov","hits":"1","order":"619","possible_hits":"1",}, {"lineNum":" 491","line":" testing.expect(IntFittingRange(0, 17) == u5);","class":"lineCov","hits":"1","order":"620","possible_hits":"1",}, {"lineNum":" 492","line":" testing.expect(IntFittingRange(0, 4095) == u12);","class":"lineCov","hits":"1","order":"621","possible_hits":"1",}, {"lineNum":" 493","line":" testing.expect(IntFittingRange(2000, 4095) == u12);","class":"lineCov","hits":"1","order":"622","possible_hits":"1",}, {"lineNum":" 494","line":" testing.expect(IntFittingRange(0, 4096) == u13);","class":"lineCov","hits":"1","order":"623","possible_hits":"1",}, {"lineNum":" 495","line":" testing.expect(IntFittingRange(2000, 4096) == u13);","class":"lineCov","hits":"1","order":"624","possible_hits":"1",}, {"lineNum":" 496","line":" testing.expect(IntFittingRange(0, 4097) == u13);","class":"lineCov","hits":"1","order":"625","possible_hits":"1",}, {"lineNum":" 497","line":" testing.expect(IntFittingRange(2000, 4097) == u13);","class":"lineCov","hits":"1","order":"626","possible_hits":"1",}, {"lineNum":" 498","line":" testing.expect(IntFittingRange(0, 123456789123456798123456789) == u87);","class":"lineCov","hits":"1","order":"627","possible_hits":"1",}, {"lineNum":" 499","line":" testing.expect(IntFittingRange(0, 123456789123456798123456789123456789123456798123456789) == u177);","class":"lineCov","hits":"1","order":"628","possible_hits":"1",}, {"lineNum":" 500","line":""}, {"lineNum":" 501","line":" testing.expect(IntFittingRange(-1, -1) == i1);","class":"lineCov","hits":"1","order":"629","possible_hits":"1",}, {"lineNum":" 502","line":" testing.expect(IntFittingRange(-1, 0) == i1);","class":"lineCov","hits":"1","order":"630","possible_hits":"1",}, {"lineNum":" 503","line":" testing.expect(IntFittingRange(-1, 1) == i2);","class":"lineCov","hits":"1","order":"631","possible_hits":"1",}, {"lineNum":" 504","line":" testing.expect(IntFittingRange(-2, -2) == i2);","class":"lineCov","hits":"1","order":"632","possible_hits":"1",}, {"lineNum":" 505","line":" testing.expect(IntFittingRange(-2, -1) == i2);","class":"lineCov","hits":"1","order":"633","possible_hits":"1",}, {"lineNum":" 506","line":" testing.expect(IntFittingRange(-2, 0) == i2);","class":"lineCov","hits":"1","order":"634","possible_hits":"1",}, {"lineNum":" 507","line":" testing.expect(IntFittingRange(-2, 1) == i2);","class":"lineCov","hits":"1","order":"635","possible_hits":"1",}, {"lineNum":" 508","line":" testing.expect(IntFittingRange(-2, 2) == i3);","class":"lineCov","hits":"1","order":"636","possible_hits":"1",}, {"lineNum":" 509","line":" testing.expect(IntFittingRange(-1, 2) == i3);","class":"lineCov","hits":"1","order":"637","possible_hits":"1",}, {"lineNum":" 510","line":" testing.expect(IntFittingRange(-1, 3) == i3);","class":"lineCov","hits":"1","order":"638","possible_hits":"1",}, {"lineNum":" 511","line":" testing.expect(IntFittingRange(-1, 4) == i4);","class":"lineCov","hits":"1","order":"639","possible_hits":"1",}, {"lineNum":" 512","line":" testing.expect(IntFittingRange(-1, 7) == i4);","class":"lineCov","hits":"1","order":"640","possible_hits":"1",}, {"lineNum":" 513","line":" testing.expect(IntFittingRange(-1, 8) == i5);","class":"lineCov","hits":"1","order":"641","possible_hits":"1",}, {"lineNum":" 514","line":" testing.expect(IntFittingRange(-1, 9) == i5);","class":"lineCov","hits":"1","order":"642","possible_hits":"1",}, {"lineNum":" 515","line":" testing.expect(IntFittingRange(-1, 15) == i5);","class":"lineCov","hits":"1","order":"643","possible_hits":"1",}, {"lineNum":" 516","line":" testing.expect(IntFittingRange(-1, 16) == i6);","class":"lineCov","hits":"1","order":"644","possible_hits":"1",}, {"lineNum":" 517","line":" testing.expect(IntFittingRange(-1, 17) == i6);","class":"lineCov","hits":"1","order":"645","possible_hits":"1",}, {"lineNum":" 518","line":" testing.expect(IntFittingRange(-1, 4095) == i13);","class":"lineCov","hits":"1","order":"646","possible_hits":"1",}, {"lineNum":" 519","line":" testing.expect(IntFittingRange(-4096, 4095) == i13);","class":"lineCov","hits":"1","order":"647","possible_hits":"1",}, {"lineNum":" 520","line":" testing.expect(IntFittingRange(-1, 4096) == i14);","class":"lineCov","hits":"1","order":"648","possible_hits":"1",}, {"lineNum":" 521","line":" testing.expect(IntFittingRange(-4097, 4095) == i14);","class":"lineCov","hits":"1","order":"649","possible_hits":"1",}, {"lineNum":" 522","line":" testing.expect(IntFittingRange(-1, 4097) == i14);","class":"lineCov","hits":"1","order":"650","possible_hits":"1",}, {"lineNum":" 523","line":" testing.expect(IntFittingRange(-1, 123456789123456798123456789) == i88);","class":"lineCov","hits":"1","order":"651","possible_hits":"1",}, {"lineNum":" 524","line":" testing.expect(IntFittingRange(-1, 123456789123456798123456789123456789123456798123456789) == i178);","class":"lineCov","hits":"1","order":"652","possible_hits":"1",}, {"lineNum":" 525","line":"}"}, {"lineNum":" 526","line":""}, {"lineNum":" 527","line":"test \"math overflow functions\" {","class":"lineCov","hits":"2","order":"653","possible_hits":"2",}, {"lineNum":" 528","line":" testOverflow();","class":"lineCov","hits":"1","order":"654","possible_hits":"1",}, {"lineNum":" 529","line":" comptime testOverflow();"}, {"lineNum":" 530","line":"}"}, {"lineNum":" 531","line":""}, {"lineNum":" 532","line":"fn testOverflow() void {","class":"lineCov","hits":"2","order":"655","possible_hits":"2",}, {"lineNum":" 533","line":" testing.expect((mul(i32, 3, 4) catch unreachable) == 12);","class":"lineCov","hits":"1","order":"656","possible_hits":"1",}, {"lineNum":" 534","line":" testing.expect((add(i32, 3, 4) catch unreachable) == 7);","class":"lineCov","hits":"1","order":"660","possible_hits":"1",}, {"lineNum":" 535","line":" testing.expect((sub(i32, 3, 4) catch unreachable) == -1);","class":"lineCov","hits":"1","order":"664","possible_hits":"1",}, {"lineNum":" 536","line":" testing.expect((shlExact(i32, 0b11, 4) catch unreachable) == 0b110000);","class":"lineCov","hits":"1","order":"668","possible_hits":"1",}, {"lineNum":" 537","line":"}"}, {"lineNum":" 538","line":""}, {"lineNum":" 539","line":"pub fn absInt(x: var) !@TypeOf(x) {","class":"lineCov","hits":"1","order":"676","possible_hits":"1",}, {"lineNum":" 540","line":" const T = @TypeOf(x);"}, {"lineNum":" 541","line":" comptime assert(@typeInfo(T) == .Int); // must pass an integer to absInt"}, {"lineNum":" 542","line":" comptime assert(T.is_signed); // must pass a signed integer to absInt"}, {"lineNum":" 543","line":""}, {"lineNum":" 544","line":" if (x == minInt(@TypeOf(x))) {","class":"lineCov","hits":"1","order":"677","possible_hits":"1",}, {"lineNum":" 545","line":" return error.Overflow;","class":"lineNoCov","hits":"0","possible_hits":"1",}, {"lineNum":" 546","line":" } else {"}, {"lineNum":" 547","line":" @setRuntimeSafety(false);"}, {"lineNum":" 548","line":" return if (x < 0) -x else x;","class":"lineCov","hits":"1","order":"678","possible_hits":"1",}, {"lineNum":" 549","line":" }"}, {"lineNum":" 550","line":"}"}, {"lineNum":" 551","line":""}, {"lineNum":" 552","line":"test \"math.absInt\" {","class":"lineCov","hits":"2","order":"672","possible_hits":"2",}, {"lineNum":" 553","line":" testAbsInt();","class":"lineCov","hits":"1","order":"673","possible_hits":"1",}, {"lineNum":" 554","line":" comptime testAbsInt();"}, {"lineNum":" 555","line":"}"}, {"lineNum":" 556","line":"fn testAbsInt() void {","class":"lineCov","hits":"2","order":"674","possible_hits":"2",}, {"lineNum":" 557","line":" testing.expect((absInt(@as(i32, -10)) catch unreachable) == 10);","class":"lineCov","hits":"1","order":"675","possible_hits":"1",}, {"lineNum":" 558","line":" testing.expect((absInt(@as(i32, 10)) catch unreachable) == 10);","class":"lineCov","hits":"1","order":"679","possible_hits":"1",}, {"lineNum":" 559","line":"}"}, {"lineNum":" 560","line":""}, {"lineNum":" 561","line":"pub const absFloat = fabs;"}, {"lineNum":" 562","line":""}, {"lineNum":" 563","line":"test \"math.absFloat\" {","class":"lineCov","hits":"2","order":"680","possible_hits":"2",}, {"lineNum":" 564","line":" testAbsFloat();","class":"lineCov","hits":"1","order":"681","possible_hits":"1",}, {"lineNum":" 565","line":" comptime testAbsFloat();"}, {"lineNum":" 566","line":"}"}, {"lineNum":" 567","line":"fn testAbsFloat() void {","class":"lineCov","hits":"2","order":"682","possible_hits":"2",}, {"lineNum":" 568","line":" testing.expect(absFloat(@as(f32, -10.05)) == 10.05);","class":"lineCov","hits":"1","order":"683","possible_hits":"1",}, {"lineNum":" 569","line":" testing.expect(absFloat(@as(f32, 10.05)) == 10.05);","class":"lineCov","hits":"1","order":"691","possible_hits":"1",}, {"lineNum":" 570","line":"}"}, {"lineNum":" 571","line":""}, {"lineNum":" 572","line":"pub fn divTrunc(comptime T: type, numerator: T, denominator: T) !T {","class":"lineCov","hits":"3","order":"696","possible_hits":"3",}, {"lineNum":" 573","line":" @setRuntimeSafety(false);"}, {"lineNum":" 574","line":" if (denominator == 0) return error.DivisionByZero;","class":"lineCov","hits":"3","order":"697","possible_hits":"3",}, {"lineNum":" 575","line":" if (@typeInfo(T) == .Int and T.is_signed and numerator == minInt(T) and denominator == -1) return error.Overflow;","class":"lineCov","hits":"2","order":"698","possible_hits":"2",}, {"lineNum":" 576","line":" return @divTrunc(numerator, denominator);","class":"linePartCov","hits":"2","order":"699","possible_hits":"3",}, {"lineNum":" 577","line":"}"}, {"lineNum":" 578","line":""}, {"lineNum":" 579","line":"test \"math.divTrunc\" {","class":"lineCov","hits":"2","order":"692","possible_hits":"2",}, {"lineNum":" 580","line":" testDivTrunc();","class":"lineCov","hits":"1","order":"693","possible_hits":"1",}, {"lineNum":" 581","line":" comptime testDivTrunc();"}, {"lineNum":" 582","line":"}"}, {"lineNum":" 583","line":"fn testDivTrunc() void {","class":"lineCov","hits":"2","order":"694","possible_hits":"2",}, {"lineNum":" 584","line":" testing.expect((divTrunc(i32, 5, 3) catch unreachable) == 1);","class":"lineCov","hits":"1","order":"695","possible_hits":"1",}, {"lineNum":" 585","line":" testing.expect((divTrunc(i32, -5, 3) catch unreachable) == -1);","class":"lineCov","hits":"1","order":"700","possible_hits":"1",}, {"lineNum":" 586","line":" testing.expectError(error.DivisionByZero, divTrunc(i8, -5, 0));","class":"lineCov","hits":"1","order":"701","possible_hits":"1",}, {"lineNum":" 587","line":" testing.expectError(error.Overflow, divTrunc(i8, -128, -1));","class":"lineCov","hits":"1","order":"705","possible_hits":"1",}, {"lineNum":" 588","line":""}, {"lineNum":" 589","line":" testing.expect((divTrunc(f32, 5.0, 3.0) catch unreachable) == 1.0);","class":"lineCov","hits":"1","order":"706","possible_hits":"1",}, {"lineNum":" 590","line":" testing.expect((divTrunc(f32, -5.0, 3.0) catch unreachable) == -1.0);","class":"lineCov","hits":"1","order":"707","possible_hits":"1",}, {"lineNum":" 591","line":"}"}, {"lineNum":" 592","line":""}, {"lineNum":" 593","line":"pub fn divFloor(comptime T: type, numerator: T, denominator: T) !T {","class":"lineCov","hits":"3","order":"712","possible_hits":"3",}, {"lineNum":" 594","line":" @setRuntimeSafety(false);"}, {"lineNum":" 595","line":" if (denominator == 0) return error.DivisionByZero;","class":"lineCov","hits":"3","order":"713","possible_hits":"3",}, {"lineNum":" 596","line":" if (@typeInfo(T) == .Int and T.is_signed and numerator == minInt(T) and denominator == -1) return error.Overflow;","class":"lineCov","hits":"2","order":"714","possible_hits":"2",}, {"lineNum":" 597","line":" return @divFloor(numerator, denominator);","class":"linePartCov","hits":"2","order":"715","possible_hits":"3",}, {"lineNum":" 598","line":"}"}, {"lineNum":" 599","line":""}, {"lineNum":" 600","line":"test \"math.divFloor\" {","class":"lineCov","hits":"2","order":"708","possible_hits":"2",}, {"lineNum":" 601","line":" testDivFloor();","class":"lineCov","hits":"1","order":"709","possible_hits":"1",}, {"lineNum":" 602","line":" comptime testDivFloor();"}, {"lineNum":" 603","line":"}"}, {"lineNum":" 604","line":"fn testDivFloor() void {","class":"lineCov","hits":"2","order":"710","possible_hits":"2",}, {"lineNum":" 605","line":" testing.expect((divFloor(i32, 5, 3) catch unreachable) == 1);","class":"lineCov","hits":"1","order":"711","possible_hits":"1",}, {"lineNum":" 606","line":" testing.expect((divFloor(i32, -5, 3) catch unreachable) == -2);","class":"lineCov","hits":"1","order":"716","possible_hits":"1",}, {"lineNum":" 607","line":" testing.expectError(error.DivisionByZero, divFloor(i8, -5, 0));","class":"lineCov","hits":"1","order":"717","possible_hits":"1",}, {"lineNum":" 608","line":" testing.expectError(error.Overflow, divFloor(i8, -128, -1));","class":"lineCov","hits":"1","order":"718","possible_hits":"1",}, {"lineNum":" 609","line":""}, {"lineNum":" 610","line":" testing.expect((divFloor(f32, 5.0, 3.0) catch unreachable) == 1.0);","class":"lineCov","hits":"1","order":"719","possible_hits":"1",}, {"lineNum":" 611","line":" testing.expect((divFloor(f32, -5.0, 3.0) catch unreachable) == -2.0);","class":"lineCov","hits":"1","order":"720","possible_hits":"1",}, {"lineNum":" 612","line":"}"}, {"lineNum":" 613","line":""}, {"lineNum":" 614","line":"pub fn divExact(comptime T: type, numerator: T, denominator: T) !T {","class":"lineCov","hits":"3","order":"725","possible_hits":"3",}, {"lineNum":" 615","line":" @setRuntimeSafety(false);"}, {"lineNum":" 616","line":" if (denominator == 0) return error.DivisionByZero;","class":"lineCov","hits":"3","order":"726","possible_hits":"3",}, {"lineNum":" 617","line":" if (@typeInfo(T) == .Int and T.is_signed and numerator == minInt(T) and denominator == -1) return error.Overflow;","class":"lineCov","hits":"2","order":"727","possible_hits":"2",}, {"lineNum":" 618","line":" const result = @divTrunc(numerator, denominator);","class":"linePartCov","hits":"3","order":"728","possible_hits":"4",}, {"lineNum":" 619","line":" if (result * denominator != numerator) return error.UnexpectedRemainder;","class":"linePartCov","hits":"3","order":"729","possible_hits":"4",}, {"lineNum":" 620","line":" return result;","class":"linePartCov","hits":"2","order":"730","possible_hits":"3",}, {"lineNum":" 621","line":"}"}, {"lineNum":" 622","line":""}, {"lineNum":" 623","line":"test \"math.divExact\" {","class":"lineCov","hits":"2","order":"721","possible_hits":"2",}, {"lineNum":" 624","line":" testDivExact();","class":"lineCov","hits":"1","order":"722","possible_hits":"1",}, {"lineNum":" 625","line":" comptime testDivExact();"}, {"lineNum":" 626","line":"}"}, {"lineNum":" 627","line":"fn testDivExact() void {","class":"lineCov","hits":"2","order":"723","possible_hits":"2",}, {"lineNum":" 628","line":" testing.expect((divExact(i32, 10, 5) catch unreachable) == 2);","class":"lineCov","hits":"1","order":"724","possible_hits":"1",}, {"lineNum":" 629","line":" testing.expect((divExact(i32, -10, 5) catch unreachable) == -2);","class":"lineCov","hits":"1","order":"731","possible_hits":"1",}, {"lineNum":" 630","line":" testing.expectError(error.DivisionByZero, divExact(i8, -5, 0));","class":"lineCov","hits":"1","order":"732","possible_hits":"1",}, {"lineNum":" 631","line":" testing.expectError(error.Overflow, divExact(i8, -128, -1));","class":"lineCov","hits":"1","order":"733","possible_hits":"1",}, {"lineNum":" 632","line":" testing.expectError(error.UnexpectedRemainder, divExact(i32, 5, 2));","class":"lineCov","hits":"1","order":"734","possible_hits":"1",}, {"lineNum":" 633","line":""}, {"lineNum":" 634","line":" testing.expect((divExact(f32, 10.0, 5.0) catch unreachable) == 2.0);","class":"lineCov","hits":"1","order":"735","possible_hits":"1",}, {"lineNum":" 635","line":" testing.expect((divExact(f32, -10.0, 5.0) catch unreachable) == -2.0);","class":"lineCov","hits":"1","order":"736","possible_hits":"1",}, {"lineNum":" 636","line":" testing.expectError(error.UnexpectedRemainder, divExact(f32, 5.0, 2.0));","class":"lineCov","hits":"1","order":"737","possible_hits":"1",}, {"lineNum":" 637","line":"}"}, {"lineNum":" 638","line":""}, {"lineNum":" 639","line":"pub fn mod(comptime T: type, numerator: T, denominator: T) !T {","class":"lineCov","hits":"2","order":"742","possible_hits":"2",}, {"lineNum":" 640","line":" @setRuntimeSafety(false);"}, {"lineNum":" 641","line":" if (denominator == 0) return error.DivisionByZero;","class":"lineCov","hits":"2","order":"743","possible_hits":"2",}, {"lineNum":" 642","line":" if (denominator < 0) return error.NegativeDenominator;","class":"lineCov","hits":"2","order":"744","possible_hits":"2",}, {"lineNum":" 643","line":" return @mod(numerator, denominator);","class":"lineCov","hits":"2","order":"745","possible_hits":"2",}, {"lineNum":" 644","line":"}"}, {"lineNum":" 645","line":""}, {"lineNum":" 646","line":"test \"math.mod\" {","class":"lineCov","hits":"2","order":"738","possible_hits":"2",}, {"lineNum":" 647","line":" testMod();","class":"lineCov","hits":"1","order":"739","possible_hits":"1",}, {"lineNum":" 648","line":" comptime testMod();"}, {"lineNum":" 649","line":"}"}, {"lineNum":" 650","line":"fn testMod() void {","class":"lineCov","hits":"2","order":"740","possible_hits":"2",}, {"lineNum":" 651","line":" testing.expect((mod(i32, -5, 3) catch unreachable) == 1);","class":"lineCov","hits":"1","order":"741","possible_hits":"1",}, {"lineNum":" 652","line":" testing.expect((mod(i32, 5, 3) catch unreachable) == 2);","class":"lineCov","hits":"1","order":"746","possible_hits":"1",}, {"lineNum":" 653","line":" testing.expectError(error.NegativeDenominator, mod(i32, 10, -1));","class":"lineCov","hits":"1","order":"747","possible_hits":"1",}, {"lineNum":" 654","line":" testing.expectError(error.DivisionByZero, mod(i32, 10, 0));","class":"lineCov","hits":"1","order":"748","possible_hits":"1",}, {"lineNum":" 655","line":""}, {"lineNum":" 656","line":" testing.expect((mod(f32, -5, 3) catch unreachable) == 1);","class":"lineCov","hits":"1","order":"749","possible_hits":"1",}, {"lineNum":" 657","line":" testing.expect((mod(f32, 5, 3) catch unreachable) == 2);","class":"lineCov","hits":"1","order":"784","possible_hits":"1",}, {"lineNum":" 658","line":" testing.expectError(error.NegativeDenominator, mod(f32, 10, -1));","class":"lineCov","hits":"1","order":"785","possible_hits":"1",}, {"lineNum":" 659","line":" testing.expectError(error.DivisionByZero, mod(f32, 10, 0));","class":"lineCov","hits":"1","order":"786","possible_hits":"1",}, {"lineNum":" 660","line":"}"}, {"lineNum":" 661","line":""}, {"lineNum":" 662","line":"pub fn rem(comptime T: type, numerator: T, denominator: T) !T {","class":"lineCov","hits":"2","order":"791","possible_hits":"2",}, {"lineNum":" 663","line":" @setRuntimeSafety(false);"}, {"lineNum":" 664","line":" if (denominator == 0) return error.DivisionByZero;","class":"lineCov","hits":"2","order":"792","possible_hits":"2",}, {"lineNum":" 665","line":" if (denominator < 0) return error.NegativeDenominator;","class":"lineCov","hits":"2","order":"793","possible_hits":"2",}, {"lineNum":" 666","line":" return @rem(numerator, denominator);","class":"lineCov","hits":"2","order":"794","possible_hits":"2",}, {"lineNum":" 667","line":"}"}, {"lineNum":" 668","line":""}, {"lineNum":" 669","line":"test \"math.rem\" {","class":"lineCov","hits":"2","order":"787","possible_hits":"2",}, {"lineNum":" 670","line":" testRem();","class":"lineCov","hits":"1","order":"788","possible_hits":"1",}, {"lineNum":" 671","line":" comptime testRem();"}, {"lineNum":" 672","line":"}"}, {"lineNum":" 673","line":"fn testRem() void {","class":"lineCov","hits":"2","order":"789","possible_hits":"2",}, {"lineNum":" 674","line":" testing.expect((rem(i32, -5, 3) catch unreachable) == -2);","class":"lineCov","hits":"1","order":"790","possible_hits":"1",}, {"lineNum":" 675","line":" testing.expect((rem(i32, 5, 3) catch unreachable) == 2);","class":"lineCov","hits":"1","order":"795","possible_hits":"1",}, {"lineNum":" 676","line":" testing.expectError(error.NegativeDenominator, rem(i32, 10, -1));","class":"lineCov","hits":"1","order":"796","possible_hits":"1",}, {"lineNum":" 677","line":" testing.expectError(error.DivisionByZero, rem(i32, 10, 0));","class":"lineCov","hits":"1","order":"797","possible_hits":"1",}, {"lineNum":" 678","line":""}, {"lineNum":" 679","line":" testing.expect((rem(f32, -5, 3) catch unreachable) == -2);","class":"lineCov","hits":"1","order":"798","possible_hits":"1",}, {"lineNum":" 680","line":" testing.expect((rem(f32, 5, 3) catch unreachable) == 2);","class":"lineCov","hits":"1","order":"799","possible_hits":"1",}, {"lineNum":" 681","line":" testing.expectError(error.NegativeDenominator, rem(f32, 10, -1));","class":"lineCov","hits":"1","order":"800","possible_hits":"1",}, {"lineNum":" 682","line":" testing.expectError(error.DivisionByZero, rem(f32, 10, 0));","class":"lineCov","hits":"1","order":"801","possible_hits":"1",}, {"lineNum":" 683","line":"}"}, {"lineNum":" 684","line":""}, {"lineNum":" 685","line":"/// Returns the absolute value of the integer parameter."}, {"lineNum":" 686","line":"/// Result is an unsigned integer."}, {"lineNum":" 687","line":"pub fn absCast(x: var) switch (@typeInfo(@TypeOf(x))) {","class":"linePartCov","hits":"8","order":"560","possible_hits":"13",}, {"lineNum":" 688","line":" .ComptimeInt => comptime_int,"}, {"lineNum":" 689","line":" .Int => |intInfo| std.meta.Int(false, intInfo.bits),"}, {"lineNum":" 690","line":" else => @compileError(\"absCast only accepts integers\"),"}, {"lineNum":" 691","line":"} {"}, {"lineNum":" 692","line":" switch (@typeInfo(@TypeOf(x))) {"}, {"lineNum":" 693","line":" .ComptimeInt => {"}, {"lineNum":" 694","line":" if (x < 0) {"}, {"lineNum":" 695","line":" return -x;"}, {"lineNum":" 696","line":" } else {"}, {"lineNum":" 697","line":" return x;"}, {"lineNum":" 698","line":" }"}, {"lineNum":" 699","line":" },"}, {"lineNum":" 700","line":" .Int => |intInfo| {"}, {"lineNum":" 701","line":" const Uint = std.meta.Int(false, intInfo.bits);"}, {"lineNum":" 702","line":" if (x < 0) {","class":"linePartCov","hits":"4","order":"567","possible_hits":"9",}, {"lineNum":" 703","line":" return ~@bitCast(Uint, x +% -1);","class":"linePartCov","hits":"4","order":"568","possible_hits":"9",}, {"lineNum":" 704","line":" } else {"}, {"lineNum":" 705","line":" return @intCast(Uint, x);","class":"linePartCov","hits":"6","order":"561","possible_hits":"13",}, {"lineNum":" 706","line":" }"}, {"lineNum":" 707","line":" },"}, {"lineNum":" 708","line":" else => unreachable,"}, {"lineNum":" 709","line":" }"}, {"lineNum":" 710","line":"}"}, {"lineNum":" 711","line":""}, {"lineNum":" 712","line":"test \"math.absCast\" {","class":"lineCov","hits":"2","order":"802","possible_hits":"2",}, {"lineNum":" 713","line":" testing.expectEqual(@as(u1, 1), absCast(@as(i1, -1)));","class":"lineCov","hits":"1","order":"803","possible_hits":"1",}, {"lineNum":" 714","line":" testing.expectEqual(@as(u32, 999), absCast(@as(i32, -999)));","class":"lineCov","hits":"1","order":"806","possible_hits":"1",}, {"lineNum":" 715","line":" testing.expectEqual(@as(u32, 999), absCast(@as(i32, 999)));","class":"lineCov","hits":"1","order":"807","possible_hits":"1",}, {"lineNum":" 716","line":" testing.expectEqual(@as(u32, -minInt(i32)), absCast(@as(i32, minInt(i32))));","class":"lineCov","hits":"1","order":"808","possible_hits":"1",}, {"lineNum":" 717","line":" testing.expectEqual(999, absCast(-999));","class":"lineCov","hits":"1","order":"809","possible_hits":"1",}, {"lineNum":" 718","line":"}"}, {"lineNum":" 719","line":""}, {"lineNum":" 720","line":"/// Returns the negation of the integer parameter."}, {"lineNum":" 721","line":"/// Result is a signed integer."}, {"lineNum":" 722","line":"pub fn negateCast(x: var) !std.meta.Int(true, @TypeOf(x).bit_count) {","class":"lineCov","hits":"1","order":"812","possible_hits":"1",}, {"lineNum":" 723","line":" if (@TypeOf(x).is_signed) return negate(x);"}, {"lineNum":" 724","line":""}, {"lineNum":" 725","line":" const int = std.meta.Int(true, @TypeOf(x).bit_count);"}, {"lineNum":" 726","line":" if (x > -minInt(int)) return error.Overflow;","class":"lineCov","hits":"1","order":"813","possible_hits":"1",}, {"lineNum":" 727","line":""}, {"lineNum":" 728","line":" if (x == -minInt(int)) return minInt(int);","class":"lineCov","hits":"1","order":"814","possible_hits":"1",}, {"lineNum":" 729","line":""}, {"lineNum":" 730","line":" return -@intCast(int, x);","class":"lineCov","hits":"1","order":"815","possible_hits":"1",}, {"lineNum":" 731","line":"}"}, {"lineNum":" 732","line":""}, {"lineNum":" 733","line":"test \"math.negateCast\" {","class":"lineCov","hits":"2","order":"810","possible_hits":"2",}, {"lineNum":" 734","line":" testing.expect((negateCast(@as(u32, 999)) catch unreachable) == -999);","class":"lineCov","hits":"1","order":"811","possible_hits":"1",}, {"lineNum":" 735","line":" testing.expect(@TypeOf(negateCast(@as(u32, 999)) catch unreachable) == i32);","class":"lineCov","hits":"1","order":"816","possible_hits":"1",}, {"lineNum":" 736","line":""}, {"lineNum":" 737","line":" testing.expect((negateCast(@as(u32, -minInt(i32))) catch unreachable) == minInt(i32));","class":"lineCov","hits":"1","order":"817","possible_hits":"1",}, {"lineNum":" 738","line":" testing.expect(@TypeOf(negateCast(@as(u32, -minInt(i32))) catch unreachable) == i32);","class":"lineCov","hits":"1","order":"818","possible_hits":"1",}, {"lineNum":" 739","line":""}, {"lineNum":" 740","line":" testing.expectError(error.Overflow, negateCast(@as(u32, maxInt(i32) + 10)));","class":"lineCov","hits":"1","order":"819","possible_hits":"1",}, {"lineNum":" 741","line":"}"}, {"lineNum":" 742","line":""}, {"lineNum":" 743","line":"/// Cast an integer to a different integer type. If the value doesn\'t fit,"}, {"lineNum":" 744","line":"/// return an error."}, {"lineNum":" 745","line":"pub fn cast(comptime T: type, x: var) (error{Overflow}!T) {","class":"linePartCov","hits":"24","order":"822","possible_hits":"26",}, {"lineNum":" 746","line":" comptime assert(@typeInfo(T) == .Int); // must pass an integer"}, {"lineNum":" 747","line":" comptime assert(@typeInfo(@TypeOf(x)) == .Int); // must pass an integer"}, {"lineNum":" 748","line":" if (maxInt(@TypeOf(x)) > maxInt(T) and x > maxInt(T)) {","class":"lineCov","hits":"12","order":"823","possible_hits":"12",}, {"lineNum":" 749","line":" return error.Overflow;","class":"linePartCov","hits":"6","order":"824","possible_hits":"12",}, {"lineNum":" 750","line":" } else if (minInt(@TypeOf(x)) < minInt(T) and x < minInt(T)) {","class":"linePartCov","hits":"3","order":"826","possible_hits":"4",}, {"lineNum":" 751","line":" return error.Overflow;","class":"linePartCov","hits":"3","order":"827","possible_hits":"4",}, {"lineNum":" 752","line":" } else {"}, {"lineNum":" 753","line":" return @intCast(T, x);","class":"linePartCov","hits":"18","order":"831","possible_hits":"26",}, {"lineNum":" 754","line":" }"}, {"lineNum":" 755","line":"}"}, {"lineNum":" 756","line":""}, {"lineNum":" 757","line":"test \"math.cast\" {","class":"lineCov","hits":"2","order":"820","possible_hits":"2",}, {"lineNum":" 758","line":" testing.expectError(error.Overflow, cast(u8, @as(u32, 300)));","class":"lineCov","hits":"1","order":"821","possible_hits":"1",}, {"lineNum":" 759","line":" testing.expectError(error.Overflow, cast(i8, @as(i32, -200)));","class":"lineCov","hits":"1","order":"825","possible_hits":"1",}, {"lineNum":" 760","line":" testing.expectError(error.Overflow, cast(u8, @as(i8, -1)));","class":"lineCov","hits":"1","order":"828","possible_hits":"1",}, {"lineNum":" 761","line":" testing.expectError(error.Overflow, cast(u64, @as(i8, -1)));","class":"lineCov","hits":"1","order":"829","possible_hits":"1",}, {"lineNum":" 762","line":""}, {"lineNum":" 763","line":" testing.expect((try cast(u8, @as(u32, 255))) == @as(u8, 255));","class":"lineCov","hits":"1","order":"830","possible_hits":"1",}, {"lineNum":" 764","line":" testing.expect(@TypeOf(try cast(u8, @as(u32, 255))) == u8);","class":"lineCov","hits":"1","order":"832","possible_hits":"1",}, {"lineNum":" 765","line":"}"}, {"lineNum":" 766","line":""}, {"lineNum":" 767","line":"pub const AlignCastError = error{UnalignedMemory};"}, {"lineNum":" 768","line":""}, {"lineNum":" 769","line":"/// Align cast a pointer but return an error if it\'s the wrong alignment"}, {"lineNum":" 770","line":"pub fn alignCast(comptime alignment: u29, ptr: var) AlignCastError!@TypeOf(@alignCast(alignment, ptr)) {"}, {"lineNum":" 771","line":" const addr = @ptrToInt(ptr);"}, {"lineNum":" 772","line":" if (addr % alignment != 0) {"}, {"lineNum":" 773","line":" return error.UnalignedMemory;"}, {"lineNum":" 774","line":" }"}, {"lineNum":" 775","line":" return @alignCast(alignment, ptr);"}, {"lineNum":" 776","line":"}"}, {"lineNum":" 777","line":""}, {"lineNum":" 778","line":"pub fn isPowerOfTwo(v: var) bool {","class":"lineCov","hits":"2","order":"3337","possible_hits":"2",}, {"lineNum":" 779","line":" assert(v != 0);","class":"lineCov","hits":"2","order":"3338","possible_hits":"2",}, {"lineNum":" 780","line":" return (v & (v - 1)) == 0;","class":"lineCov","hits":"2","order":"3339","possible_hits":"2",}, {"lineNum":" 781","line":"}"}, {"lineNum":" 782","line":""}, {"lineNum":" 783","line":"pub fn floorPowerOfTwo(comptime T: type, value: T) T {","class":"lineCov","hits":"3","order":"837","possible_hits":"3",}, {"lineNum":" 784","line":" var x = value;","class":"lineCov","hits":"3","order":"838","possible_hits":"3",}, {"lineNum":" 785","line":""}, {"lineNum":" 786","line":" comptime var i = 1;"}, {"lineNum":" 787","line":" inline while (T.bit_count > i) : (i *= 2) {"}, {"lineNum":" 788","line":" x |= (x >> i);","class":"lineCov","hits":"3","order":"839","possible_hits":"3",}, {"lineNum":" 789","line":" }"}, {"lineNum":" 790","line":""}, {"lineNum":" 791","line":" return x - (x >> 1);","class":"lineCov","hits":"3","order":"840","possible_hits":"3",}, {"lineNum":" 792","line":"}"}, {"lineNum":" 793","line":""}, {"lineNum":" 794","line":"test \"math.floorPowerOfTwo\" {","class":"lineCov","hits":"2","order":"833","possible_hits":"2",}, {"lineNum":" 795","line":" testFloorPowerOfTwo();","class":"lineCov","hits":"1","order":"834","possible_hits":"1",}, {"lineNum":" 796","line":" comptime testFloorPowerOfTwo();"}, {"lineNum":" 797","line":"}"}, {"lineNum":" 798","line":""}, {"lineNum":" 799","line":"fn testFloorPowerOfTwo() void {","class":"lineCov","hits":"2","order":"835","possible_hits":"2",}, {"lineNum":" 800","line":" testing.expect(floorPowerOfTwo(u32, 63) == 32);","class":"lineCov","hits":"1","order":"836","possible_hits":"1",}, {"lineNum":" 801","line":" testing.expect(floorPowerOfTwo(u32, 64) == 64);","class":"lineCov","hits":"1","order":"841","possible_hits":"1",}, {"lineNum":" 802","line":" testing.expect(floorPowerOfTwo(u32, 65) == 64);","class":"lineCov","hits":"1","order":"842","possible_hits":"1",}, {"lineNum":" 803","line":" testing.expect(floorPowerOfTwo(u4, 7) == 4);","class":"lineCov","hits":"1","order":"843","possible_hits":"1",}, {"lineNum":" 804","line":" testing.expect(floorPowerOfTwo(u4, 8) == 8);","class":"lineCov","hits":"1","order":"844","possible_hits":"1",}, {"lineNum":" 805","line":" testing.expect(floorPowerOfTwo(u4, 9) == 8);","class":"lineCov","hits":"1","order":"845","possible_hits":"1",}, {"lineNum":" 806","line":"}"}, {"lineNum":" 807","line":""}, {"lineNum":" 808","line":"/// Returns the next power of two (if the value is not already a power of two)."}, {"lineNum":" 809","line":"/// Only unsigned integers can be used. Zero is not an allowed input."}, {"lineNum":" 810","line":"/// Result is a type with 1 more bit than the input type."}, {"lineNum":" 811","line":"pub fn ceilPowerOfTwoPromote(comptime T: type, value: T) std.meta.Int(T.is_signed, T.bit_count + 1) {","class":"lineCov","hits":"4","order":"850","possible_hits":"4",}, {"lineNum":" 812","line":" comptime assert(@typeInfo(T) == .Int);"}, {"lineNum":" 813","line":" comptime assert(!T.is_signed);"}, {"lineNum":" 814","line":" assert(value != 0);","class":"lineCov","hits":"4","order":"851","possible_hits":"4",}, {"lineNum":" 815","line":" comptime const PromotedType = std.meta.Int(T.is_signed, T.bit_count + 1);"}, {"lineNum":" 816","line":" comptime const shiftType = std.math.Log2Int(PromotedType);"}, {"lineNum":" 817","line":" return @as(PromotedType, 1) << @intCast(shiftType, T.bit_count - @clz(T, value - 1));","class":"lineCov","hits":"4","order":"852","possible_hits":"4",}, {"lineNum":" 818","line":"}"}, {"lineNum":" 819","line":""}, {"lineNum":" 820","line":"/// Returns the next power of two (if the value is not already a power of two)."}, {"lineNum":" 821","line":"/// Only unsigned integers can be used. Zero is not an allowed input."}, {"lineNum":" 822","line":"/// If the value doesn\'t fit, returns an error."}, {"lineNum":" 823","line":"pub fn ceilPowerOfTwo(comptime T: type, value: T) (error{Overflow}!T) {","class":"lineCov","hits":"4","order":"865","possible_hits":"4",}, {"lineNum":" 824","line":" comptime assert(@typeInfo(T) == .Int);"}, {"lineNum":" 825","line":" comptime assert(!T.is_signed);"}, {"lineNum":" 826","line":" comptime const PromotedType = std.meta.Int(T.is_signed, T.bit_count + 1);"}, {"lineNum":" 827","line":" comptime const overflowBit = @as(PromotedType, 1) << T.bit_count;"}, {"lineNum":" 828","line":" var x = ceilPowerOfTwoPromote(T, value);","class":"lineCov","hits":"4","order":"866","possible_hits":"4",}, {"lineNum":" 829","line":" if (overflowBit & x != 0) {","class":"linePartCov","hits":"7","order":"867","possible_hits":"8",}, {"lineNum":" 830","line":" return error.Overflow;","class":"linePartCov","hits":"1","order":"877","possible_hits":"4",}, {"lineNum":" 831","line":" }"}, {"lineNum":" 832","line":" return @intCast(T, x);","class":"linePartCov","hits":"3","order":"868","possible_hits":"4",}, {"lineNum":" 833","line":"}"}, {"lineNum":" 834","line":""}, {"lineNum":" 835","line":"test \"math.ceilPowerOfTwoPromote\" {","class":"lineCov","hits":"2","order":"846","possible_hits":"2",}, {"lineNum":" 836","line":" testCeilPowerOfTwoPromote();","class":"lineCov","hits":"1","order":"847","possible_hits":"1",}, {"lineNum":" 837","line":" comptime testCeilPowerOfTwoPromote();"}, {"lineNum":" 838","line":"}"}, {"lineNum":" 839","line":""}, {"lineNum":" 840","line":"fn testCeilPowerOfTwoPromote() void {","class":"lineCov","hits":"2","order":"848","possible_hits":"2",}, {"lineNum":" 841","line":" testing.expectEqual(@as(u33, 1), ceilPowerOfTwoPromote(u32, 1));","class":"lineCov","hits":"1","order":"849","possible_hits":"1",}, {"lineNum":" 842","line":" testing.expectEqual(@as(u33, 2), ceilPowerOfTwoPromote(u32, 2));","class":"lineCov","hits":"1","order":"853","possible_hits":"1",}, {"lineNum":" 843","line":" testing.expectEqual(@as(u33, 64), ceilPowerOfTwoPromote(u32, 63));","class":"lineCov","hits":"1","order":"854","possible_hits":"1",}, {"lineNum":" 844","line":" testing.expectEqual(@as(u33, 64), ceilPowerOfTwoPromote(u32, 64));","class":"lineCov","hits":"1","order":"855","possible_hits":"1",}, {"lineNum":" 845","line":" testing.expectEqual(@as(u33, 128), ceilPowerOfTwoPromote(u32, 65));","class":"lineCov","hits":"1","order":"856","possible_hits":"1",}, {"lineNum":" 846","line":" testing.expectEqual(@as(u6, 8), ceilPowerOfTwoPromote(u5, 7));","class":"lineCov","hits":"1","order":"857","possible_hits":"1",}, {"lineNum":" 847","line":" testing.expectEqual(@as(u6, 8), ceilPowerOfTwoPromote(u5, 8));","class":"lineCov","hits":"1","order":"858","possible_hits":"1",}, {"lineNum":" 848","line":" testing.expectEqual(@as(u6, 16), ceilPowerOfTwoPromote(u5, 9));","class":"lineCov","hits":"1","order":"859","possible_hits":"1",}, {"lineNum":" 849","line":" testing.expectEqual(@as(u5, 16), ceilPowerOfTwoPromote(u4, 9));","class":"lineCov","hits":"1","order":"860","possible_hits":"1",}, {"lineNum":" 850","line":"}"}, {"lineNum":" 851","line":""}, {"lineNum":" 852","line":"test \"math.ceilPowerOfTwo\" {","class":"lineCov","hits":"2","order":"861","possible_hits":"2",}, {"lineNum":" 853","line":" try testCeilPowerOfTwo();","class":"lineCov","hits":"1","order":"862","possible_hits":"1",}, {"lineNum":" 854","line":" comptime try testCeilPowerOfTwo();"}, {"lineNum":" 855","line":"}"}, {"lineNum":" 856","line":""}, {"lineNum":" 857","line":"fn testCeilPowerOfTwo() !void {","class":"lineCov","hits":"2","order":"863","possible_hits":"2",}, {"lineNum":" 858","line":" testing.expectEqual(@as(u32, 1), try ceilPowerOfTwo(u32, 1));","class":"lineCov","hits":"1","order":"864","possible_hits":"1",}, {"lineNum":" 859","line":" testing.expectEqual(@as(u32, 2), try ceilPowerOfTwo(u32, 2));","class":"lineCov","hits":"1","order":"869","possible_hits":"1",}, {"lineNum":" 860","line":" testing.expectEqual(@as(u32, 64), try ceilPowerOfTwo(u32, 63));","class":"lineCov","hits":"1","order":"870","possible_hits":"1",}, {"lineNum":" 861","line":" testing.expectEqual(@as(u32, 64), try ceilPowerOfTwo(u32, 64));","class":"lineCov","hits":"1","order":"871","possible_hits":"1",}, {"lineNum":" 862","line":" testing.expectEqual(@as(u32, 128), try ceilPowerOfTwo(u32, 65));","class":"lineCov","hits":"1","order":"872","possible_hits":"1",}, {"lineNum":" 863","line":" testing.expectEqual(@as(u5, 8), try ceilPowerOfTwo(u5, 7));","class":"lineCov","hits":"1","order":"873","possible_hits":"1",}, {"lineNum":" 864","line":" testing.expectEqual(@as(u5, 8), try ceilPowerOfTwo(u5, 8));","class":"lineCov","hits":"1","order":"874","possible_hits":"1",}, {"lineNum":" 865","line":" testing.expectEqual(@as(u5, 16), try ceilPowerOfTwo(u5, 9));","class":"lineCov","hits":"1","order":"875","possible_hits":"1",}, {"lineNum":" 866","line":" testing.expectError(error.Overflow, ceilPowerOfTwo(u4, 9));","class":"lineCov","hits":"1","order":"876","possible_hits":"1",}, {"lineNum":" 867","line":"}"}, {"lineNum":" 868","line":""}, {"lineNum":" 869","line":"pub fn log2_int(comptime T: type, x: T) Log2Int(T) {","class":"lineCov","hits":"5","order":"883","possible_hits":"5",}, {"lineNum":" 870","line":" assert(x != 0);","class":"lineCov","hits":"5","order":"884","possible_hits":"5",}, {"lineNum":" 871","line":" return @intCast(Log2Int(T), T.bit_count - 1 - @clz(T, x));","class":"lineCov","hits":"5","order":"885","possible_hits":"5",}, {"lineNum":" 872","line":"}"}, {"lineNum":" 873","line":""}, {"lineNum":" 874","line":"pub fn log2_int_ceil(comptime T: type, x: T) Log2Int(T) {","class":"lineCov","hits":"2","order":"880","possible_hits":"2",}, {"lineNum":" 875","line":" assert(x != 0);","class":"lineCov","hits":"2","order":"881","possible_hits":"2",}, {"lineNum":" 876","line":" const log2_val = log2_int(T, x);","class":"lineCov","hits":"2","order":"882","possible_hits":"2",}, {"lineNum":" 877","line":" if (@as(T, 1) << log2_val == x)","class":"lineCov","hits":"4","order":"886","possible_hits":"4",}, {"lineNum":" 878","line":" return log2_val;","class":"lineCov","hits":"2","order":"887","possible_hits":"2",}, {"lineNum":" 879","line":" return log2_val + 1;","class":"lineCov","hits":"2","order":"890","possible_hits":"2",}, {"lineNum":" 880","line":"}"}, {"lineNum":" 881","line":""}, {"lineNum":" 882","line":"test \"std.math.log2_int_ceil\" {","class":"lineCov","hits":"2","order":"878","possible_hits":"2",}, {"lineNum":" 883","line":" testing.expect(log2_int_ceil(u32, 1) == 0);","class":"lineCov","hits":"1","order":"879","possible_hits":"1",}, {"lineNum":" 884","line":" testing.expect(log2_int_ceil(u32, 2) == 1);","class":"lineCov","hits":"1","order":"888","possible_hits":"1",}, {"lineNum":" 885","line":" testing.expect(log2_int_ceil(u32, 3) == 2);","class":"lineCov","hits":"1","order":"889","possible_hits":"1",}, {"lineNum":" 886","line":" testing.expect(log2_int_ceil(u32, 4) == 2);","class":"lineCov","hits":"1","order":"891","possible_hits":"1",}, {"lineNum":" 887","line":" testing.expect(log2_int_ceil(u32, 5) == 3);","class":"lineCov","hits":"1","order":"892","possible_hits":"1",}, {"lineNum":" 888","line":" testing.expect(log2_int_ceil(u32, 6) == 3);","class":"lineCov","hits":"1","order":"893","possible_hits":"1",}, {"lineNum":" 889","line":" testing.expect(log2_int_ceil(u32, 7) == 3);","class":"lineCov","hits":"1","order":"894","possible_hits":"1",}, {"lineNum":" 890","line":" testing.expect(log2_int_ceil(u32, 8) == 3);","class":"lineCov","hits":"1","order":"895","possible_hits":"1",}, {"lineNum":" 891","line":" testing.expect(log2_int_ceil(u32, 9) == 4);","class":"lineCov","hits":"1","order":"896","possible_hits":"1",}, {"lineNum":" 892","line":" testing.expect(log2_int_ceil(u32, 10) == 4);","class":"lineCov","hits":"1","order":"897","possible_hits":"1",}, {"lineNum":" 893","line":"}"}, {"lineNum":" 894","line":""}, {"lineNum":" 895","line":"pub fn lossyCast(comptime T: type, value: var) T {","class":"linePartCov","hits":"4","order":"5020","possible_hits":"7",}, {"lineNum":" 896","line":" switch (@typeInfo(@TypeOf(value))) {"}, {"lineNum":" 897","line":" .Int => return @intToFloat(T, value),","class":"linePartCov","hits":"2","order":"5021","possible_hits":"5",}, {"lineNum":" 898","line":" .Float => return @floatCast(T, value),","class":"lineCov","hits":"2","order":"11770","possible_hits":"2",}, {"lineNum":" 899","line":" .ComptimeInt => return @as(T, value),"}, {"lineNum":" 900","line":" .ComptimeFloat => return @as(T, value),"}, {"lineNum":" 901","line":" else => @compileError(\"bad type\"),"}, {"lineNum":" 902","line":" }"}, {"lineNum":" 903","line":"}"}, {"lineNum":" 904","line":""}, {"lineNum":" 905","line":"test \"math.f64_min\" {","class":"lineCov","hits":"2","order":"898","possible_hits":"2",}, {"lineNum":" 906","line":" const f64_min_u64 = 0x0010000000000000;"}, {"lineNum":" 907","line":" const fmin: f64 = f64_min;"}, {"lineNum":" 908","line":" testing.expect(@bitCast(u64, fmin) == f64_min_u64);","class":"lineCov","hits":"1","order":"899","possible_hits":"1",}, {"lineNum":" 909","line":"}"}, {"lineNum":" 910","line":""}, {"lineNum":" 911","line":"pub fn maxInt(comptime T: type) comptime_int {"}, {"lineNum":" 912","line":" const info = @typeInfo(T);"}, {"lineNum":" 913","line":" const bit_count = info.Int.bits;"}, {"lineNum":" 914","line":" if (bit_count == 0) return 0;"}, {"lineNum":" 915","line":" return (1 << (bit_count - @boolToInt(info.Int.is_signed))) - 1;"}, {"lineNum":" 916","line":"}"}, {"lineNum":" 917","line":""}, {"lineNum":" 918","line":"pub fn minInt(comptime T: type) comptime_int {"}, {"lineNum":" 919","line":" const info = @typeInfo(T);"}, {"lineNum":" 920","line":" const bit_count = info.Int.bits;"}, {"lineNum":" 921","line":" if (!info.Int.is_signed) return 0;"}, {"lineNum":" 922","line":" if (bit_count == 0) return 0;"}, {"lineNum":" 923","line":" return -(1 << (bit_count - 1));"}, {"lineNum":" 924","line":"}"}, {"lineNum":" 925","line":""}, {"lineNum":" 926","line":"test \"minInt and maxInt\" {","class":"lineCov","hits":"2","order":"900","possible_hits":"2",}, {"lineNum":" 927","line":" testing.expect(maxInt(u0) == 0);","class":"lineCov","hits":"1","order":"901","possible_hits":"1",}, {"lineNum":" 928","line":" testing.expect(maxInt(u1) == 1);","class":"lineCov","hits":"1","order":"902","possible_hits":"1",}, {"lineNum":" 929","line":" testing.expect(maxInt(u8) == 255);","class":"lineCov","hits":"1","order":"903","possible_hits":"1",}, {"lineNum":" 930","line":" testing.expect(maxInt(u16) == 65535);","class":"lineCov","hits":"1","order":"904","possible_hits":"1",}, {"lineNum":" 931","line":" testing.expect(maxInt(u32) == 4294967295);","class":"lineCov","hits":"1","order":"905","possible_hits":"1",}, {"lineNum":" 932","line":" testing.expect(maxInt(u64) == 18446744073709551615);","class":"lineCov","hits":"1","order":"906","possible_hits":"1",}, {"lineNum":" 933","line":" testing.expect(maxInt(u128) == 340282366920938463463374607431768211455);","class":"lineCov","hits":"1","order":"907","possible_hits":"1",}, {"lineNum":" 934","line":""}, {"lineNum":" 935","line":" testing.expect(maxInt(i0) == 0);","class":"lineCov","hits":"1","order":"908","possible_hits":"1",}, {"lineNum":" 936","line":" testing.expect(maxInt(i1) == 0);","class":"lineCov","hits":"1","order":"909","possible_hits":"1",}, {"lineNum":" 937","line":" testing.expect(maxInt(i8) == 127);","class":"lineCov","hits":"1","order":"910","possible_hits":"1",}, {"lineNum":" 938","line":" testing.expect(maxInt(i16) == 32767);","class":"lineCov","hits":"1","order":"911","possible_hits":"1",}, {"lineNum":" 939","line":" testing.expect(maxInt(i32) == 2147483647);","class":"lineCov","hits":"1","order":"912","possible_hits":"1",}, {"lineNum":" 940","line":" testing.expect(maxInt(i63) == 4611686018427387903);","class":"lineCov","hits":"1","order":"913","possible_hits":"1",}, {"lineNum":" 941","line":" testing.expect(maxInt(i64) == 9223372036854775807);","class":"lineCov","hits":"1","order":"914","possible_hits":"1",}, {"lineNum":" 942","line":" testing.expect(maxInt(i128) == 170141183460469231731687303715884105727);","class":"lineCov","hits":"1","order":"915","possible_hits":"1",}, {"lineNum":" 943","line":""}, {"lineNum":" 944","line":" testing.expect(minInt(u0) == 0);","class":"lineCov","hits":"1","order":"916","possible_hits":"1",}, {"lineNum":" 945","line":" testing.expect(minInt(u1) == 0);","class":"lineCov","hits":"1","order":"917","possible_hits":"1",}, {"lineNum":" 946","line":" testing.expect(minInt(u8) == 0);","class":"lineCov","hits":"1","order":"918","possible_hits":"1",}, {"lineNum":" 947","line":" testing.expect(minInt(u16) == 0);","class":"lineCov","hits":"1","order":"919","possible_hits":"1",}, {"lineNum":" 948","line":" testing.expect(minInt(u32) == 0);","class":"lineCov","hits":"1","order":"920","possible_hits":"1",}, {"lineNum":" 949","line":" testing.expect(minInt(u63) == 0);","class":"lineCov","hits":"1","order":"921","possible_hits":"1",}, {"lineNum":" 950","line":" testing.expect(minInt(u64) == 0);","class":"lineCov","hits":"1","order":"922","possible_hits":"1",}, {"lineNum":" 951","line":" testing.expect(minInt(u128) == 0);","class":"lineCov","hits":"1","order":"923","possible_hits":"1",}, {"lineNum":" 952","line":""}, {"lineNum":" 953","line":" testing.expect(minInt(i0) == 0);","class":"lineCov","hits":"1","order":"924","possible_hits":"1",}, {"lineNum":" 954","line":" testing.expect(minInt(i1) == -1);","class":"lineCov","hits":"1","order":"925","possible_hits":"1",}, {"lineNum":" 955","line":" testing.expect(minInt(i8) == -128);","class":"lineCov","hits":"1","order":"926","possible_hits":"1",}, {"lineNum":" 956","line":" testing.expect(minInt(i16) == -32768);","class":"lineCov","hits":"1","order":"927","possible_hits":"1",}, {"lineNum":" 957","line":" testing.expect(minInt(i32) == -2147483648);","class":"lineCov","hits":"1","order":"928","possible_hits":"1",}, {"lineNum":" 958","line":" testing.expect(minInt(i63) == -4611686018427387904);","class":"lineCov","hits":"1","order":"929","possible_hits":"1",}, {"lineNum":" 959","line":" testing.expect(minInt(i64) == -9223372036854775808);","class":"lineCov","hits":"1","order":"930","possible_hits":"1",}, {"lineNum":" 960","line":" testing.expect(minInt(i128) == -170141183460469231731687303715884105728);","class":"lineCov","hits":"1","order":"931","possible_hits":"1",}, {"lineNum":" 961","line":"}"}, {"lineNum":" 962","line":""}, {"lineNum":" 963","line":"test \"max value type\" {","class":"lineCov","hits":"2","order":"932","possible_hits":"2",}, {"lineNum":" 964","line":" const x: u32 = maxInt(i32);"}, {"lineNum":" 965","line":" testing.expect(x == 2147483647);","class":"lineCov","hits":"1","order":"933","possible_hits":"1",}, {"lineNum":" 966","line":"}"}, {"lineNum":" 967","line":""}, {"lineNum":" 968","line":"pub fn mulWide(comptime T: type, a: T, b: T) std.meta.Int(T.is_signed, T.bit_count * 2) {","class":"lineCov","hits":"4","order":"936","possible_hits":"4",}, {"lineNum":" 969","line":" const ResultInt = std.meta.Int(T.is_signed, T.bit_count * 2);"}, {"lineNum":" 970","line":" return @as(ResultInt, a) * @as(ResultInt, b);","class":"lineCov","hits":"4","order":"937","possible_hits":"4",}, {"lineNum":" 971","line":"}"}, {"lineNum":" 972","line":""}, {"lineNum":" 973","line":"test \"math.mulWide\" {","class":"lineCov","hits":"2","order":"934","possible_hits":"2",}, {"lineNum":" 974","line":" testing.expect(mulWide(u8, 5, 5) == 25);","class":"lineCov","hits":"1","order":"935","possible_hits":"1",}, {"lineNum":" 975","line":" testing.expect(mulWide(i8, 5, -5) == -25);","class":"lineCov","hits":"1","order":"938","possible_hits":"1",}, {"lineNum":" 976","line":" testing.expect(mulWide(u8, 100, 100) == 10000);","class":"lineCov","hits":"1","order":"939","possible_hits":"1",}, {"lineNum":" 977","line":"}"}, {"lineNum":" 978","line":""}, {"lineNum":" 979","line":"/// See also `CompareOperator`."}, {"lineNum":" 980","line":"pub const Order = enum {"}, {"lineNum":" 981","line":" /// Less than (`<`)"}, {"lineNum":" 982","line":" lt,"}, {"lineNum":" 983","line":""}, {"lineNum":" 984","line":" /// Equal (`==`)"}, {"lineNum":" 985","line":" eq,"}, {"lineNum":" 986","line":""}, {"lineNum":" 987","line":" /// Greater than (`>`)"}, {"lineNum":" 988","line":" gt,"}, {"lineNum":" 989","line":""}, {"lineNum":" 990","line":" pub fn invert(self: Order) Order {"}, {"lineNum":" 991","line":" return switch (self) {"}, {"lineNum":" 992","line":" .lt => .gt,"}, {"lineNum":" 993","line":" .eq => .eq,"}, {"lineNum":" 994","line":" .gt => .gt,"}, {"lineNum":" 995","line":" };"}, {"lineNum":" 996","line":" }"}, {"lineNum":" 997","line":""}, {"lineNum":" 998","line":" pub fn compare(self: Order, op: CompareOperator) bool {"}, {"lineNum":" 999","line":" return switch (self) {"}, {"lineNum":" 1000","line":" .lt => switch (op) {"}, {"lineNum":" 1001","line":" .lt => true,"}, {"lineNum":" 1002","line":" .lte => true,"}, {"lineNum":" 1003","line":" .eq => false,"}, {"lineNum":" 1004","line":" .gte => false,"}, {"lineNum":" 1005","line":" .gt => false,"}, {"lineNum":" 1006","line":" .neq => true,"}, {"lineNum":" 1007","line":" },"}, {"lineNum":" 1008","line":" .eq => switch (op) {"}, {"lineNum":" 1009","line":" .lt => false,"}, {"lineNum":" 1010","line":" .lte => true,"}, {"lineNum":" 1011","line":" .eq => true,"}, {"lineNum":" 1012","line":" .gte => true,"}, {"lineNum":" 1013","line":" .gt => false,"}, {"lineNum":" 1014","line":" .neq => false,"}, {"lineNum":" 1015","line":" },"}, {"lineNum":" 1016","line":" .gt => switch (op) {"}, {"lineNum":" 1017","line":" .lt => false,"}, {"lineNum":" 1018","line":" .lte => false,"}, {"lineNum":" 1019","line":" .eq => false,"}, {"lineNum":" 1020","line":" .gte => true,"}, {"lineNum":" 1021","line":" .gt => true,"}, {"lineNum":" 1022","line":" .neq => true,"}, {"lineNum":" 1023","line":" },"}, {"lineNum":" 1024","line":" };"}, {"lineNum":" 1025","line":" }"}, {"lineNum":" 1026","line":"};"}, {"lineNum":" 1027","line":""}, {"lineNum":" 1028","line":"/// Given two numbers, this function returns the order they are with respect to each other."}, {"lineNum":" 1029","line":"pub fn order(a: var, b: var) Order {","class":"lineCov","hits":"4","order":"1433","possible_hits":"4",}, {"lineNum":" 1030","line":" if (a == b) {","class":"lineCov","hits":"4","order":"1434","possible_hits":"4",}, {"lineNum":" 1031","line":" return .eq;","class":"lineCov","hits":"4","order":"1439","possible_hits":"4",}, {"lineNum":" 1032","line":" } else if (a < b) {","class":"lineCov","hits":"4","order":"1435","possible_hits":"4",}, {"lineNum":" 1033","line":" return .lt;","class":"lineCov","hits":"4","order":"1436","possible_hits":"4",}, {"lineNum":" 1034","line":" } else if (a > b) {","class":"linePartCov","hits":"1","order":"7866","possible_hits":"4",}, {"lineNum":" 1035","line":" return .gt;","class":"linePartCov","hits":"1","order":"7867","possible_hits":"4",}, {"lineNum":" 1036","line":" } else {"}, {"lineNum":" 1037","line":" unreachable;","class":"lineNoCov","hits":"0","possible_hits":"4",}, {"lineNum":" 1038","line":" }"}, {"lineNum":" 1039","line":"}"}, {"lineNum":" 1040","line":""}, {"lineNum":" 1041","line":"/// See also `Order`."}, {"lineNum":" 1042","line":"pub const CompareOperator = enum {"}, {"lineNum":" 1043","line":" /// Less than (`<`)"}, {"lineNum":" 1044","line":" lt,"}, {"lineNum":" 1045","line":""}, {"lineNum":" 1046","line":" /// Less than or equal (`<=`)"}, {"lineNum":" 1047","line":" lte,"}, {"lineNum":" 1048","line":""}, {"lineNum":" 1049","line":" /// Equal (`==`)"}, {"lineNum":" 1050","line":" eq,"}, {"lineNum":" 1051","line":""}, {"lineNum":" 1052","line":" /// Greater than or equal (`>=`)"}, {"lineNum":" 1053","line":" gte,"}, {"lineNum":" 1054","line":""}, {"lineNum":" 1055","line":" /// Greater than (`>`)"}, {"lineNum":" 1056","line":" gt,"}, {"lineNum":" 1057","line":""}, {"lineNum":" 1058","line":" /// Not equal (`!=`)"}, {"lineNum":" 1059","line":" neq,"}, {"lineNum":" 1060","line":"};"}, {"lineNum":" 1061","line":""}, {"lineNum":" 1062","line":"/// This function does the same thing as comparison operators, however the"}, {"lineNum":" 1063","line":"/// operator is a runtime-known enum value. Works on any operands that"}, {"lineNum":" 1064","line":"/// support comparison operators."}, {"lineNum":" 1065","line":"pub fn compare(a: var, op: CompareOperator, b: var) bool {","class":"lineCov","hits":"7","order":"942","possible_hits":"7",}, {"lineNum":" 1066","line":" return switch (op) {","class":"linePartCov","hits":"23","order":"943","possible_hits":"49",}, {"lineNum":" 1067","line":" .lt => a < b,","class":"linePartCov","hits":"4","order":"944","possible_hits":"7",}, {"lineNum":" 1068","line":" .lte => a <= b,","class":"linePartCov","hits":"3","order":"951","possible_hits":"7",}, {"lineNum":" 1069","line":" .eq => a == b,","class":"linePartCov","hits":"2","order":"963","possible_hits":"7",}, {"lineNum":" 1070","line":" .neq => a != b,","class":"lineNoCov","hits":"0","possible_hits":"7",}, {"lineNum":" 1071","line":" .gt => a > b,","class":"linePartCov","hits":"4","order":"946","possible_hits":"7",}, {"lineNum":" 1072","line":" .gte => a >= b,","class":"linePartCov","hits":"3","order":"948","possible_hits":"7",}, {"lineNum":" 1073","line":" };"}, {"lineNum":" 1074","line":"}"}, {"lineNum":" 1075","line":""}, {"lineNum":" 1076","line":"test \"compare between signed and unsigned\" {","class":"lineCov","hits":"2","order":"940","possible_hits":"2",}, {"lineNum":" 1077","line":" testing.expect(compare(@as(i8, -1), .lt, @as(u8, 255)));","class":"lineCov","hits":"1","order":"941","possible_hits":"1",}, {"lineNum":" 1078","line":" testing.expect(compare(@as(i8, 2), .gt, @as(u8, 1)));","class":"lineCov","hits":"1","order":"945","possible_hits":"1",}, {"lineNum":" 1079","line":" testing.expect(!compare(@as(i8, -1), .gte, @as(u8, 255)));","class":"lineCov","hits":"1","order":"947","possible_hits":"1",}, {"lineNum":" 1080","line":" testing.expect(compare(@as(u8, 255), .gt, @as(i8, -1)));","class":"lineCov","hits":"1","order":"949","possible_hits":"1",}, {"lineNum":" 1081","line":" testing.expect(!compare(@as(u8, 255), .lte, @as(i8, -1)));","class":"lineCov","hits":"1","order":"950","possible_hits":"1",}, {"lineNum":" 1082","line":" testing.expect(compare(@as(i8, -1), .lt, @as(u9, 255)));","class":"lineCov","hits":"1","order":"952","possible_hits":"1",}, {"lineNum":" 1083","line":" testing.expect(!compare(@as(i8, -1), .gte, @as(u9, 255)));","class":"lineCov","hits":"1","order":"953","possible_hits":"1",}, {"lineNum":" 1084","line":" testing.expect(compare(@as(u9, 255), .gt, @as(i8, -1)));","class":"lineCov","hits":"1","order":"954","possible_hits":"1",}, {"lineNum":" 1085","line":" testing.expect(!compare(@as(u9, 255), .lte, @as(i8, -1)));","class":"lineCov","hits":"1","order":"955","possible_hits":"1",}, {"lineNum":" 1086","line":" testing.expect(compare(@as(i9, -1), .lt, @as(u8, 255)));","class":"lineCov","hits":"1","order":"956","possible_hits":"1",}, {"lineNum":" 1087","line":" testing.expect(!compare(@as(i9, -1), .gte, @as(u8, 255)));","class":"lineCov","hits":"1","order":"957","possible_hits":"1",}, {"lineNum":" 1088","line":" testing.expect(compare(@as(u8, 255), .gt, @as(i9, -1)));","class":"lineCov","hits":"1","order":"958","possible_hits":"1",}, {"lineNum":" 1089","line":" testing.expect(!compare(@as(u8, 255), .lte, @as(i9, -1)));","class":"lineCov","hits":"1","order":"959","possible_hits":"1",}, {"lineNum":" 1090","line":" testing.expect(compare(@as(u8, 1), .lt, @as(u8, 2)));","class":"lineCov","hits":"1","order":"960","possible_hits":"1",}, {"lineNum":" 1091","line":" testing.expect(@bitCast(u8, @as(i8, -1)) == @as(u8, 255));","class":"lineCov","hits":"1","order":"961","possible_hits":"1",}, {"lineNum":" 1092","line":" testing.expect(!compare(@as(u8, 255), .eq, @as(i8, -1)));","class":"lineCov","hits":"1","order":"962","possible_hits":"1",}, {"lineNum":" 1093","line":" testing.expect(compare(@as(u8, 1), .eq, @as(u8, 1)));","class":"lineCov","hits":"1","order":"964","possible_hits":"1",}, {"lineNum":" 1094","line":"}"}, ]}; var percent_low = 25;var percent_high = 75; var header = { "command" : "test", "date" : "2020-05-19 01:29:25", "instrumented" : 443, "covered" : 438,}; var merged_data = [];