g_math 0.6.5

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];