primal-estimate 0.3.1

State-of-the-art estimation of upper and lower bounds for π(n) (the number of primes below n) and p_k (the k-th prime).
Documentation
// created with small_prime_props.rs
pub const SMALL_PRIME_PI: [u8; 1619] = [
    0, 0, /*2*/1, /*3*/2, 2, /*5*/3, 3, /*7*/4, 4, 4, 4, /*11*/5, 5, /*13*/6, 6, 6, 6,
    /*17*/7, 7, /*19*/8, 8, 8, 8, /*23*/9, 9, 9, 9, 9, 9, /*29*/10, 10, /*31*/11, 11, 11,
    11, 11, 11, /*37*/12, 12, 12, 12, /*41*/13, 13, /*43*/14, 14, 14, 14, /*47*/15, 15,
    15, 15, 15, 15, /*53*/16, 16, 16, 16, 16, 16, /*59*/17, 17, /*61*/18, 18, 18, 18, 18,
    18, /*67*/19, 19, 19, 19, /*71*/20, 20, /*73*/21, 21, 21, 21, 21, 21, /*79*/22, 22,
    22, 22, /*83*/23, 23, 23, 23, 23, 23, /*89*/24, 24, 24, 24, 24, 24, 24, 24, /*97*/
    25, 25, 25, 25, /*101*/26, 26, /*103*/27, 27, 27, 27, /*107*/28, 28, /*109*/29, 29,
    29, 29, /*113*/30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, /*127*/31, 31,
    31, 31, /*131*/32, 32, 32, 32, 32, 32, /*137*/33, 33, /*139*/34, 34, 34, 34, 34, 34,
    34, 34, 34, 34, /*149*/35, 35, /*151*/36, 36, 36, 36, 36, 36, /*157*/37, 37, 37, 37,
    37, 37, /*163*/38, 38, 38, 38, /*167*/39, 39, 39, 39, 39, 39, /*173*/40, 40, 40, 40,
    40, 40, /*179*/41, 41, /*181*/42, 42, 42, 42, 42, 42, 42, 42, 42, 42, /*191*/43, 43,
    /*193*/44, 44, 44, 44, /*197*/45, 45, /*199*/46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
    46, 46, /*211*/47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, /*223*/48, 48, 48, 48,
    /*227*/49, 49, /*229*/50, 50, 50, 50, /*233*/51, 51, 51, 51, 51, 51, /*239*/52, 52,
    /*241*/53, 53, 53, 53, 53, 53, 53, 53, 53, 53, /*251*/54, 54, 54, 54, 54, 54, /*257*/
    55, 55, 55, 55, 55, 55, /*263*/56, 56, 56, 56, 56, 56, /*269*/57, 57, /*271*/58, 58,
    58, 58, 58, 58, /*277*/59, 59, 59, 59, /*281*/60, 60, /*283*/61, 61, 61, 61, 61, 61,
    61, 61, 61, 61, /*293*/62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
    /*307*/63, 63, 63, 63, /*311*/64, 64, /*313*/65, 65, 65, 65, /*317*/66, 66, 66, 66,
    66, 66, 66, 66, 66, 66, 66, 66, 66, 66, /*331*/67, 67, 67, 67, 67, 67, /*337*/68, 68,
    68, 68, 68, 68, 68, 68, 68, 68, /*347*/69, 69, /*349*/70, 70, 70, 70, /*353*/71, 71,
    71, 71, 71, 71, /*359*/72, 72, 72, 72, 72, 72, 72, 72, /*367*/73, 73, 73, 73, 73, 73,
    /*373*/74, 74, 74, 74, 74, 74, /*379*/75, 75, 75, 75, /*383*/76, 76, 76, 76, 76, 76,
    /*389*/77, 77, 77, 77, 77, 77, 77, 77, /*397*/78, 78, 78, 78, /*401*/79, 79, 79, 79,
    79, 79, 79, 79, /*409*/80, 80, 80, 80, 80, 80, 80, 80, 80, 80, /*419*/81, 81, /*421*/
    82, 82, 82, 82, 82, 82, 82, 82, 82, 82, /*431*/83, 83, /*433*/84, 84, 84, 84, 84, 84,
    /*439*/85, 85, 85, 85, /*443*/86, 86, 86, 86, 86, 86, /*449*/87, 87, 87, 87, 87, 87,
    87, 87, /*457*/88, 88, 88, 88, /*461*/89, 89, /*463*/90, 90, 90, 90, /*467*/91, 91,
    91, 91, 91, 91, 91, 91, 91, 91, 91, 91, /*479*/92, 92, 92, 92, 92, 92, 92, 92,
    /*487*/93, 93, 93, 93, /*491*/94, 94, 94, 94, 94, 94, 94, 94, /*499*/95, 95, 95, 95,
    /*503*/96, 96, 96, 96, 96, 96, /*509*/97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
    /*521*/98, 98, /*523*/99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
    99, 99, /*541*/100, 100, 100, 100, 100, 100, /*547*/101, 101, 101, 101, 101, 101,
    101, 101, 101, 101, /*557*/102, 102, 102, 102, 102, 102, /*563*/103, 103, 103, 103,
    103, 103, /*569*/104, 104, /*571*/105, 105, 105, 105, 105, 105, /*577*/106, 106, 106,
    106, 106, 106, 106, 106, 106, 106, /*587*/107, 107, 107, 107, 107, 107, /*593*/108,
    108, 108, 108, 108, 108, /*599*/109, 109, /*601*/110, 110, 110, 110, 110, 110,
    /*607*/111, 111, 111, 111, 111, 111, /*613*/112, 112, 112, 112, /*617*/113, 113,
    /*619*/114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, /*631*/115, 115,
    115, 115, 115, 115, 115, 115, 115, 115, /*641*/116, 116, /*643*/117, 117, 117, 117,
    /*647*/118, 118, 118, 118, 118, 118, /*653*/119, 119, 119, 119, 119, 119, /*659*/
    120, 120, /*661*/121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, /*673*/
    122, 122, 122, 122, /*677*/123, 123, 123, 123, 123, 123, /*683*/124, 124, 124, 124,
    124, 124, 124, 124, /*691*/125, 125, 125, 125, 125, 125, 125, 125, 125, 125, /*701*/
    126, 126, 126, 126, 126, 126, 126, 126, /*709*/127, 127, 127, 127, 127, 127, 127,
    127, 127, 127, /*719*/128, 128, 128, 128, 128, 128, 128, 128, /*727*/129, 129, 129,
    129, 129, 129, /*733*/130, 130, 130, 130, 130, 130, /*739*/131, 131, 131, 131,
    /*743*/132, 132, 132, 132, 132, 132, 132, 132, /*751*/133, 133, 133, 133, 133, 133,
    /*757*/134, 134, 134, 134, /*761*/135, 135, 135, 135, 135, 135, 135, 135, /*769*/
    136, 136, 136, 136, /*773*/137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
    137, 137, 137, /*787*/138, 138, 138, 138, 138, 138, 138, 138, 138, 138, /*797*/139,
    139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, /*809*/140, 140, /*811*/141,
    141, 141, 141, 141, 141, 141, 141, 141, 141, /*821*/142, 142, /*823*/143, 143, 143,
    143, /*827*/144, 144, /*829*/145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
    /*839*/146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, /*853*/
    147, 147, 147, 147, /*857*/148, 148, /*859*/149, 149, 149, 149, /*863*/150, 150, 150,
    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, /*877*/151, 151, 151, 151,
    /*881*/152, 152, /*883*/153, 153, 153, 153, /*887*/154, 154, 154, 154, 154, 154, 154,
    154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, /*907*/155, 155,
    155, 155, /*911*/156, 156, 156, 156, 156, 156, 156, 156, /*919*/157, 157, 157, 157,
    157, 157, 157, 157, 157, 157, /*929*/158, 158, 158, 158, 158, 158, 158, 158, /*937*/
    159, 159, 159, 159, /*941*/160, 160, 160, 160, 160, 160, /*947*/161, 161, 161, 161,
    161, 161, /*953*/162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
    162, /*967*/163, 163, 163, 163, /*971*/164, 164, 164, 164, 164, 164, /*977*/165, 165,
    165, 165, 165, 165, /*983*/166, 166, 166, 166, 166, 166, 166, 166, /*991*/167, 167,
    167, 167, 167, 167, /*997*/168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
    168, /*1009*/169, 169, 169, 169, /*1013*/170, 170, 170, 170, 170, 170, /*1019*/171,
    171, /*1021*/172, 172, 172, 172, 172, 172, 172, 172, 172, 172, /*1031*/173, 173,
    /*1033*/174, 174, 174, 174, 174, 174, /*1039*/175, 175, 175, 175, 175, 175, 175, 175,
    175, 175, /*1049*/176, 176, /*1051*/177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
    /*1061*/178, 178, /*1063*/179, 179, 179, 179, 179, 179, /*1069*/180, 180, 180, 180,
    180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, /*1087*/181,
    181, 181, 181, /*1091*/182, 182, /*1093*/183, 183, 183, 183, /*1097*/184, 184, 184,
    184, 184, 184, /*1103*/185, 185, 185, 185, 185, 185, /*1109*/186, 186, 186, 186, 186,
    186, 186, 186, /*1117*/187, 187, 187, 187, 187, 187, /*1123*/188, 188, 188, 188, 188,
    188, /*1129*/189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
    189, 189, 189, 189, 189, 189, 189, 189, /*1151*/190, 190, /*1153*/191, 191, 191, 191,
    191, 191, 191, 191, 191, 191, /*1163*/192, 192, 192, 192, 192, 192, 192, 192,
    /*1171*/193, 193, 193, 193, 193, 193, 193, 193, 193, 193, /*1181*/194, 194, 194, 194,
    194, 194, /*1187*/195, 195, 195, 195, 195, 195, /*1193*/196, 196, 196, 196, 196, 196,
    196, 196, /*1201*/197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
    /*1213*/198, 198, 198, 198, /*1217*/199, 199, 199, 199, 199, 199, /*1223*/200, 200,
    200, 200, 200, 200, /*1229*/201, 201, /*1231*/202, 202, 202, 202, 202, 202, /*1237*/
    203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, /*1249*/204, 204, 204,
    204, 204, 204, 204, 204, 204, 204, /*1259*/205, 205, 205, 205, 205, 205, 205, 205,
    205, 205, 205, 205, 205, 205, 205, 205, 205, 205, /*1277*/206, 206, /*1279*/207, 207,
    207, 207, /*1283*/208, 208, 208, 208, 208, 208, /*1289*/209, 209, /*1291*/210, 210,
    210, 210, 210, 210, /*1297*/211, 211, 211, 211, /*1301*/212, 212, /*1303*/213, 213,
    213, 213, /*1307*/214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
    /*1319*/215, 215, /*1321*/216, 216, 216, 216, 216, 216, /*1327*/217, 217, 217, 217,
    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
    217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, /*1361*/218, 218,
    218, 218, 218, 218, /*1367*/219, 219, 219, 219, 219, 219, /*1373*/220, 220, 220, 220,
    220, 220, 220, 220, /*1381*/221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
    221, 221, 221, 221, 221, 221, 221, /*1399*/222, 222, 222, 222, 222, 222, 222, 222,
    222, 222, /*1409*/223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
    223, /*1423*/224, 224, 224, 224, /*1427*/225, 225, /*1429*/226, 226, 226, 226,
    /*1433*/227, 227, 227, 227, 227, 227, /*1439*/228, 228, 228, 228, 228, 228, 228, 228,
    /*1447*/229, 229, 229, 229, /*1451*/230, 230, /*1453*/231, 231, 231, 231, 231, 231,
    /*1459*/232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, /*1471*/233, 233,
    233, 233, 233, 233, 233, 233, 233, 233, /*1481*/234, 234, /*1483*/235, 235, 235, 235,
    /*1487*/236, 236, /*1489*/237, 237, 237, 237, /*1493*/238, 238, 238, 238, 238, 238,
    /*1499*/239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, /*1511*/240, 240,
    240, 240, 240, 240, 240, 240, 240, 240, 240, 240, /*1523*/241, 241, 241, 241, 241,
    241, 241, 241, /*1531*/242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
    /*1543*/243, 243, 243, 243, 243, 243, /*1549*/244, 244, 244, 244, /*1553*/245, 245,
    245, 245, 245, 245, /*1559*/246, 246, 246, 246, 246, 246, 246, 246, /*1567*/247, 247,
    247, 247, /*1571*/248, 248, 248, 248, 248, 248, 248, 248, /*1579*/249, 249, 249, 249,
    /*1583*/250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
    /*1597*/251, 251, 251, 251, /*1601*/252, 252, 252, 252, 252, 252, /*1607*/253, 253,
    /*1609*/254, 254, 254, 254, /*1613*/255, 255, 255, 255, 255, 255,];
pub const SMALL_PRIME_LIMIT: usize = 255;
pub const SMALL_PRIMES: [u8; 54] = [
    2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79,
    83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167,
    173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251,];