g_math 0.6.8

Multi-domain fixed-point arithmetic with geometric extension: Lie groups, manifolds, ODE solvers, tensors, fiber bundles — pure Rust, zero-float, deterministic
Documentation
// GENERATED by scripts/generate_weight_bits_refs.py (exact rationals, no floats).

pub const BINARY16_RAW_F2: u64 = 0x142a82d4633fcb50;
pub const BINARY16_RAW_F10: u64 = 0xa7179cdbb537a077;
pub const BINARY16_RAW_F16: u64 = 0x2cb9e362019e87eb;
pub const BINARY16_RAW_F24: u64 = 0xbe07d7443b8517ec;
pub const BINARY16_RAW_F30: u64 = 0xfd1149e172e4b4cb;
pub const BINARY16_RAW_F32: u64 = 0x5ebbc2e20eb45f8b;
pub const BINARY16_RAW_F64: u64 = 0x9d81236a778be29f;
pub const BINARY16_RAW_F100: u64 = 0xb192c34a16e06aca;
pub const BINARY16_TQ19: u64 = 0xa5db69af6bd81b8a;
pub const BFLOAT16_RAW_F2: u64 = 0x03eb4134373414d0;
pub const BFLOAT16_RAW_F10: u64 = 0x23e36baccee96cd0;
pub const BFLOAT16_RAW_F16: u64 = 0x65e2fba729cd6ed0;
pub const BFLOAT16_RAW_F24: u64 = 0x536bd3eb6f22c6d0;
pub const BFLOAT16_RAW_F30: u64 = 0xba8db3ff9c3ec8d0;
pub const BFLOAT16_RAW_F32: u64 = 0xf153fc01a9f81ed0;
pub const BFLOAT16_RAW_F64: u64 = 0x0309096e2c4d7ed0;
pub const BFLOAT16_RAW_F100: u64 = 0x4c56c62f361d8ad0;
pub const BFLOAT16_TQ19: u64 = 0x119b8970989b2797;
pub const RAW_SPLITS: [u32; 8] = [2, 10, 16, 24, 30, 32, 64, 100];

pub const RAW_SPOTS: &[(HalfKind, u16, u32, i128)] = &[
    (HalfKind::BFloat16, 0x3f80, 10, 1024),
    (HalfKind::BFloat16, 0x3f80, 64, 18446744073709551616),
    (HalfKind::BFloat16, 0xbf80, 10, -1024),
    (HalfKind::BFloat16, 0xbf80, 64, -18446744073709551616),
    (HalfKind::BFloat16, 0x3dcd, 10, 102),
    (HalfKind::BFloat16, 0x3dcd, 64, 1846475847221903360),
    (HalfKind::BFloat16, 0x0001, 10, 0),
    (HalfKind::BFloat16, 0x0001, 64, 0),
    (HalfKind::BFloat16, 0x4049, 10, 3216),
    (HalfKind::BFloat16, 0x4049, 64, 57934305606494060544),
    (HalfKind::Binary16, 0x3c00, 10, 1024),
    (HalfKind::Binary16, 0x3c00, 64, 18446744073709551616),
    (HalfKind::Binary16, 0xc000, 10, -2048),
    (HalfKind::Binary16, 0xc000, 64, -36893488147419103232),
    (HalfKind::Binary16, 0x3555, 10, 341),
    (HalfKind::Binary16, 0x3555, 64, 6147413491360727040),
    (HalfKind::Binary16, 0x0001, 10, 0),
    (HalfKind::Binary16, 0x0001, 64, 1099511627776),
    (HalfKind::Binary16, 0x7bff, 10, 67076096),
    (HalfKind::Binary16, 0x7bff, 64, 1208335523804270469054464),
];

pub const Q_ROWS: usize = 5;
pub const Q_COLS: usize = 9;
pub const BFLOAT16_BITS: &[u16] = &[1, 14995, 48268, 48675, 15365, 48043, 48427, 48002, 15494, 49051, 15629, 47790, 15508, 15753, 48299, 15368, 15498, 15266, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 48273, 15641, 49037, 48144, 48385, 48289, 48532, 48932, 47917, 49039, 16265, 15526, 47644, 47619, 48771, 15749, 15757, 16171];
pub const BFLOAT16_BIG_BITS: &[u16] = &[1, 14955, 48701, 15470, 48072, 49002, 48567, 48232, 48533, 15054, 16378, 15911, 15872, 47623, 48276, 47702, 48007, 15465, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 47928, 48723, 48884, 48181, 15551, 15775, 16207, 15889, 15663, 15614, 16032, 49143, 15320, 16210, 15368, 48912, 16130, 47902];
pub const BFLOAT16_TQ19_DATA: &[i16] = &[0, 22, -336, -3133, 160, -103, -822, -78, 322, -23835, 678, -26, 356, 1317, -411, 163, 332, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, -348, 735, -21682, -173, -620, -387, -1422, -12609, -52, -21990, 21067, 399, -12, -10, -5036, 1278, 1355, 13148];
pub const BFLOAT16_RS19_DATA: &[i16] = &[0, 208, -3170, -29524, 1506, -968, -7743, -736, 3034, -29524, 839, -32, 440, 1631, -509, 202, 411, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, -474, 1001, -29524, -236, -844, -527, -1937, -17170, -71, -29524, 28285, 536, -16, -13, -6762, 1716, 1819, 17652];
pub const BFLOAT16_RS19_SCALES: &[u64] = &[455788753, 3467350027, 0, 3154170024, 3198910024];
pub const BFLOAT16_TQ5_DATA: &[i8] = &[0, 1, -13, -121, 6, -4, -32, -3, 12, -121, 3, 0, 2, 7, -2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 4, -121, -1, -3, -2, -8, -70, 0, -121, 116, 2, 0, 0, -28, 7, 7, 72];
pub const BFLOAT16_TQ5_SCALES: &[u64] = &[5650178, 42982950, 0, 39100619, 39655238];
pub const BFLOAT16_BIG_RS19_DATA: &[i16] = &[0, 29, -5962, 469, -197, -29524, -2886, -457, -2350, 24, 29524, 2465, 1890, -8, -273, -12, -62, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, -7524, -17401, -403, 851, 2835, 29524, 5170, 1560, 474, 4781, -29524, 101, 12551, 127, -8606, 7769, -37];
pub const BFLOAT16_BIG_RS19_SCALES: &[u64] = &[2617290020, 5592500043, 0, 2315295018, 5525390042];
pub const BFLOAT16_BIG_TQ5_DATA: &[i8] = &[0, 0, -24, 2, -1, -121, -12, -2, -10, 0, 121, 10, 8, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -71, -2, 3, 12, 121, 21, 6, 2, 20, -121, 0, 51, 1, -35, 32, 0];
pub const BFLOAT16_BIG_TQ5_SCALES: &[u64] = &[32445195, 69327339, 0, 28701518, 68495411];
pub const BINARY16_BITS: &[u16] = &[1, 12475, 46244, 37091, 9227, 44217, 45208, 45418, 4457, 46349, 37199, 4173, 10416, 40290, 6475, 11490, 38284, 41355, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 46477, 14692, 11299, 10241, 47295, 45368, 6271, 46108, 48526, 46119, 6155, 44391, 7244, 12639, 6489, 15529, 8235, 37164];
pub const BINARY16_BIG_BITS: &[u16] = &[1, 6299, 4317, 7516, 5338, 5602, 41024, 43306, 41523, 9093, 10721, 12865, 40681, 8823, 47119, 4662, 44987, 39103, 0, 32768, 0, 32768, 0, 32768, 0, 32768, 0, 9540, 45126, 17868, 12591, 41728, 11386, 50606, 5268, 14784, 44420, 11486, 10978, 5253, 9176, 41989, 4824, 37505, 44159];
pub const BINARY16_TQ19_DATA: &[i16] = &[0, 2910, -5709, -12, 311, -1452, -2826, -3330, 13, -6213, -13, 10, 721, -103, 51, 1502, -27, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6829, 13263, 1272, 616, -11677, -3210, 43, -5055, -27333, -5108, 39, -1661, 83, 3304, 51, 22931, 160, -12];
pub const BINARY16_RS19_DATA: &[i16] = &[0, 15048, -29524, -61, 1608, -7511, -14613, -17222, 67, -29524, -61, 49, 3425, -492, 242, 7136, -127, -1013, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7376, 14326, 1374, 665, -12613, -3467, 47, -5460, -29524, -6577, 50, -2139, 106, 4254, 66, 29524, 206, -16];
pub const BINARY16_RS19_SCALES: &[u64] = &[830486256, 903887819, 0, 3976267530, 3335926276];
pub const BINARY16_TQ5_DATA: &[i8] = &[0, 62, -121, 0, 7, -31, -60, -71, 0, -121, 0, 0, 14, -2, 1, 29, -1, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, 59, 6, 3, -52, -14, 0, -22, -121, -27, 0, -9, 0, 17, 0, 121, 1, 0];
pub const BINARY16_TQ5_SCALES: &[u64] = &[10295110, 11205031, 0, 49291738, 41353758];
pub const BINARY16_BIG_RS19_DATA: &[i16] = &[0, 1646, 434, 3830, 867, 1051, -6075, -29524, -8861, 855, 2673, 11373, -393, 735, -29524, 44, -7029, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, -680, 29524, 825, -70, 356, -28927, 6, 3661, -29524, 26053, 18421, 378, 5248, -5379, 286, -272, -24067];
pub const BINARY16_BIG_RS19_SCALES: &[u64] = &[115520079, 1452651886, 0, 16598540127, 246769064];
pub const BINARY16_BIG_TQ5_DATA: &[i8] = &[0, 7, 2, 16, 4, 4, -25, -121, -36, 4, 11, 47, -2, 3, -121, 0, -29, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 121, 3, 0, 1, -119, 0, 15, -121, 107, 75, 2, 22, -22, 1, -1, -99];
pub const BINARY16_BIG_TQ5_SCALES: &[u64] = &[1432043, 18007776, 0, 205763542, 3059069];
pub const GAP_ROWS: usize = 32;
pub const BFLOAT16_GAP_BITS: &[u16] = &[469, 48196, 15684, 48674, 48821, 15723, 16065, 49036, 15728, 47913, 48688, 16080, 16246, 16133, 48612, 48552, 48654, 33237, 411, 33153, 33126, 33150, 33102, 33329, 33359, 33225, 141, 128, 35109, 4554, 39535, 8852, 43833, 13278, 48131, 17576, 17536, 48181, 13290, 43807, 8916, 39433, 4542, 35187, 1, 1, 32769, 127, 128, 16256, 49024, 0, 469, 33237, 45791, 45060, 49995, 15066, 34867, 11300, 11970, 39919, 46011, 39899, 13080, 41368, 36183, 50245, 39358, 9539, 50425, 3375, 7448, 36055, 3338, 553, 15852, 0, 5557, 8211, 47176, 48422, 34872, 5404, 8052, 35640, 4726, 49404, 12896, 37942, 14433, 34903, 42866, 17608, 1149, 7109, 12719, 16304, 42, 41625, 7633, 48759, 48806, 50299, 38659, 32790, 42898, 39561, 4583, 1, 44130, 45574, 14656, 2268, 16378, 48261, 44135, 46973, 1214, 12170, 41455, 36443, 48106, 13251, 40628, 35452, 1762, 13102, 14740, 1480, 12100, 7978, 46158, 39168, 1465, 6513, 0, 32807, 91, 32768, 16729, 17628, 13077, 13571, 38273, 38186, 37435, 13146, 50528, 0, 7377, 12111, 41613, 35253, 46805, 7320, 49206, 41131, 8509, 6011, 10397, 44190, 3297, 6741, 0, 5359, 37749, 2, 43676, 42377, 48577, 3287, 12893, 41909, 37764, 46284, 50022, 35696, 14300, 11295, 16149, 34419, 35852, 35101, 45576, 50779, 35860, 42166, 33255, 6998, 35306, 10975, 33957, 41965, 13672, 16994, 0, 44968, 35779, 757, 1295, 11196, 1646, 35574, 47246, 49041, 45062, 1118, 41216, 41071, 6444, 46525, 40367, 3631, 44284, 37162, 10240, 41206, 39243, 12523, 46325, 35311, 50315, 8557, 10649, 42779, 3161, 2044, 35411, 44190, 2622, 41555, 9641, 36770, 265, 49770, 38754, 31, 11378, 4320, 125, 45411, 2757, 48934, 41480, 33570, 17242, 4310, 3362, 32768, 9739, 6415, 48209, 32839, 49276, 46440, 0, 39918, 46747, 5965, 40613, 0, 6982, 7084, 36675, 44382, 36903, 33503, 16208, 6927, 47039, 35700, 49718, 4224, 35189, 40469, 5939, 7074, 32785, 37641, 2829, 11243, 11577, 45390, 12809, 17333, 4704, 17394];
pub const BFLOAT16_GAP_RS19_DATA: &[i16] = &[0, -323, 1292, -4270, -9543, 1549, 10175, -29524, 1582, -79, -5281, 12482, 29524, 15962, -3420, -2520, -4261, 0, 11054, -9200, -8201, -9057, -7345, -25245, -29524, -14334, 2514, 0, 0, 0, 0, 0, 0, 0, 0, 29524, 29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29524, -29524, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11679, 0, 0, -29524, 0, 0, 0, 0, 0, 29524, 0, 0, 0, -12, -152, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 29524, 0, 0, 0, 25, 0, 0, 0, -7, -10, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 29524, -245, 0, -62, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 4, 29524, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 228, 29524, 0, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 1, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29524, 0, 0, 0, 0, 0, 0, 0, 0, -2, -29524, 0, 0, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29524, 0, 0, -14, 0, 0, 0, -29524, 0, 0, 2, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 29524, 0, 0, 0, 0, 0, -96, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29524, 0, 0, 0, -29524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22082, 0, 29524];
pub const BFLOAT16_GAP_RS19_SCALES: &[u64] = &[3131800024, 2751510021, 0, 3848355869461, 2932080662446, 2863360022, 581262084450, 5703813163665, 329957503, 22548960173, 4581376035072, 2874813462008, 5592500043, 20447578, 808291, 5039513638579, 10262282318562, 8142680062, 269838127, 658572805042, 40132854067232, 161779841238, 3243650025, 4032, 3184056344375, 0, 167506561282, 624212484779, 11274480086, 2326480018, 130282880997, 1385866250609];
pub const BFLOAT16_GAP_TQ5_DATA: &[i8] = &[0, -1, 5, -18, -39, 6, 42, -121, 6, 0, -22, 51, 121, 65, -14, -10, -17, 0, 45, -38, -34, -37, -30, -103, -121, -59, 10, 0, 0, 0, 0, 0, 0, 0, 0, 121, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, -121, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, -121, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, -1, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 121, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 121];
pub const BFLOAT16_GAP_TQ5_SCALES: &[u64] = &[38823310, 34109051, 0, 47706083023, 36347491827, 35495597, 7205606290, 70707230195, 4090313, 279527830, 56792955980, 35637579878, 69327339, 253478, 10020, 62472251578, 127216221396, 100940605, 3345044, 8163987422, 497506294386, 2005501258, 40209857, 50, 39471104406, 0, 2076492453, 7738040252, 139763915, 28840173, 1615049686, 17179869184];