rust-igraph 0.6.0

Pure-Rust, high-performance graph & network analysis library — 1200+ APIs, zero unsafe, igraph-compatible
Documentation
//! Precomputed lookup tables for isomorphism class determination.
//!
//! Generated from igraph C source (isoclasses.c). Do not edit manually.

#![allow(clippy::unreadable_literal)]

pub(in crate::algorithms::motifs) const ISOCLASS_3_IDX: [u32; 9] = [0, 4, 16, 1, 0, 32, 2, 8, 0];

pub(in crate::algorithms::motifs) const ISOCLASS_4_IDX: [u32; 16] = [
    0, 8, 64, 512, 1, 0, 128, 1024, 2, 16, 0, 2048, 4, 32, 256, 0,
];

pub(in crate::algorithms::motifs) const ISOCLASS_3U_IDX: [u32; 9] = [0, 1, 2, 1, 0, 4, 2, 4, 0];

pub(in crate::algorithms::motifs) const ISOCLASS_4U_IDX: [u32; 16] =
    [0, 1, 2, 8, 1, 0, 4, 16, 2, 4, 0, 32, 8, 16, 32, 0];

pub(in crate::algorithms::motifs) const ISOCLASS_5U_IDX: [u32; 25] = [
    0, 1, 2, 8, 64, 1, 0, 4, 16, 128, 2, 4, 0, 32, 256, 8, 16, 32, 0, 512, 64, 128, 256, 512, 0,
];

pub(in crate::algorithms::motifs) const ISOCLASS2_3: [u8; 64] = [
    0, 1, 1, 2, 1, 3, 4, 5, 1, 4, 6, 7, 2, 5, 7, 8, 1, 4, 3, 5, 6, 9, 9, 10, 4, 11, 9, 12, 7, 12,
    13, 14, 1, 6, 4, 7, 4, 9, 11, 12, 3, 9, 9, 13, 5, 10, 12, 14, 2, 7, 5, 8, 7, 13, 12, 14, 5, 12,
    10, 14, 8, 14, 14, 15,
];

pub(in crate::algorithms::motifs) const ISOCLASS2_3U: [u8; 8] = [0, 1, 1, 2, 1, 2, 2, 3];

pub(in crate::algorithms::motifs) const ISOCLASS2_4U: [u8; 64] = [
    0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 4, 5, 6, 6, 7, 1, 2, 5, 6, 2, 4, 6, 7, 2, 3, 6, 7, 6, 7, 8, 9,
    1, 5, 2, 6, 2, 6, 4, 7, 2, 6, 3, 7, 6, 8, 7, 9, 2, 6, 6, 8, 3, 7, 7, 9, 4, 7, 7, 9, 7, 9, 9,
    10,
];

pub(in crate::algorithms::motifs) const ISOCLASS2_5U: [u8; 1024] = [
    0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 4, 5, 6, 6, 7, 1, 2, 5, 6, 2, 4, 6, 7, 2, 3, 6, 7, 6, 7, 8, 9,
    1, 5, 2, 6, 2, 6, 4, 7, 2, 6, 3, 7, 6, 8, 7, 9, 2, 6, 6, 8, 3, 7, 7, 9, 4, 7, 7, 9, 7, 9, 9,
    10, 1, 2, 2, 4, 5, 6, 6, 7, 2, 4, 4, 11, 12, 13, 13, 14, 5, 6, 12, 13, 12, 13, 15, 16, 6, 7,
    13, 14, 15, 16, 17, 18, 5, 12, 6, 13, 12, 15, 13, 16, 6, 13, 7, 14, 15, 17, 16, 18, 12, 15, 15,
    17, 19, 20, 20, 21, 13, 16, 16, 18, 20, 21, 21, 22, 1, 2, 5, 6, 2, 4, 6, 7, 5, 6, 12, 13, 12,
    13, 15, 16, 2, 4, 12, 13, 4, 11, 13, 14, 6, 7, 15, 16, 13, 14, 17, 18, 5, 12, 12, 15, 6, 13,
    13, 16, 12, 15, 19, 20, 15, 17, 20, 21, 6, 13, 15, 17, 7, 14, 16, 18, 13, 16, 20, 21, 16, 18,
    21, 22, 2, 3, 6, 7, 6, 7, 8, 9, 6, 7, 13, 14, 15, 16, 17, 18, 6, 7, 15, 16, 13, 14, 17, 18, 8,
    9, 17, 18, 17, 18, 23, 24, 12, 19, 15, 20, 15, 20, 17, 21, 15, 20, 20, 25, 26, 27, 27, 28, 15,
    20, 26, 27, 20, 25, 27, 28, 17, 21, 27, 28, 27, 28, 29, 30, 1, 5, 2, 6, 2, 6, 4, 7, 5, 12, 6,
    13, 12, 15, 13, 16, 5, 12, 12, 15, 6, 13, 13, 16, 12, 19, 15, 20, 15, 20, 17, 21, 2, 12, 4, 13,
    4, 13, 11, 14, 6, 15, 7, 16, 13, 17, 14, 18, 6, 15, 13, 17, 7, 16, 14, 18, 13, 20, 16, 21, 16,
    21, 18, 22, 2, 6, 3, 7, 6, 8, 7, 9, 6, 13, 7, 14, 15, 17, 16, 18, 12, 15, 19, 20, 15, 17, 20,
    21, 15, 20, 20, 25, 26, 27, 27, 28, 6, 15, 7, 16, 13, 17, 14, 18, 8, 17, 9, 18, 17, 23, 18, 24,
    15, 26, 20, 27, 20, 27, 25, 28, 17, 27, 21, 28, 27, 29, 28, 30, 2, 6, 6, 8, 3, 7, 7, 9, 12, 15,
    15, 17, 19, 20, 20, 21, 6, 13, 15, 17, 7, 14, 16, 18, 15, 20, 26, 27, 20, 25, 27, 28, 6, 15,
    13, 17, 7, 16, 14, 18, 15, 26, 20, 27, 20, 27, 25, 28, 8, 17, 17, 23, 9, 18, 18, 24, 17, 27,
    27, 29, 21, 28, 28, 30, 4, 7, 7, 9, 7, 9, 9, 10, 13, 16, 16, 18, 20, 21, 21, 22, 13, 16, 20,
    21, 16, 18, 21, 22, 17, 21, 27, 28, 27, 28, 29, 30, 13, 20, 16, 21, 16, 21, 18, 22, 17, 27, 21,
    28, 27, 29, 28, 30, 17, 27, 27, 29, 21, 28, 28, 30, 23, 29, 29, 31, 29, 31, 31, 32, 1, 5, 5,
    12, 5, 12, 12, 19, 2, 6, 6, 13, 12, 15, 15, 20, 2, 6, 12, 15, 6, 13, 15, 20, 4, 7, 13, 16, 13,
    16, 17, 21, 2, 12, 6, 15, 6, 15, 13, 20, 4, 13, 7, 16, 13, 17, 16, 21, 4, 13, 13, 17, 7, 16,
    16, 21, 11, 14, 14, 18, 14, 18, 18, 22, 2, 6, 6, 13, 12, 15, 15, 20, 3, 7, 7, 14, 19, 20, 20,
    25, 6, 8, 15, 17, 15, 17, 26, 27, 7, 9, 16, 18, 20, 21, 27, 28, 6, 15, 8, 17, 15, 26, 17, 27,
    7, 16, 9, 18, 20, 27, 21, 28, 13, 17, 17, 23, 20, 27, 27, 29, 14, 18, 18, 24, 25, 28, 28, 30,
    2, 6, 12, 15, 6, 13, 15, 20, 6, 8, 15, 17, 15, 17, 26, 27, 3, 7, 19, 20, 7, 14, 20, 25, 7, 9,
    20, 21, 16, 18, 27, 28, 6, 15, 15, 26, 8, 17, 17, 27, 13, 17, 20, 27, 17, 23, 27, 29, 7, 16,
    20, 27, 9, 18, 21, 28, 14, 18, 25, 28, 18, 24, 28, 30, 4, 7, 13, 16, 13, 16, 17, 21, 7, 9, 16,
    18, 20, 21, 27, 28, 7, 9, 20, 21, 16, 18, 27, 28, 9, 10, 21, 22, 21, 22, 29, 30, 13, 20, 17,
    27, 17, 27, 23, 29, 16, 21, 21, 28, 27, 29, 29, 31, 16, 21, 27, 29, 21, 28, 29, 31, 18, 22, 28,
    30, 28, 30, 31, 32, 2, 12, 6, 15, 6, 15, 13, 20, 6, 15, 8, 17, 15, 26, 17, 27, 6, 15, 15, 26,
    8, 17, 17, 27, 13, 20, 17, 27, 17, 27, 23, 29, 3, 19, 7, 20, 7, 20, 14, 25, 7, 20, 9, 21, 16,
    27, 18, 28, 7, 20, 16, 27, 9, 21, 18, 28, 14, 25, 18, 28, 18, 28, 24, 30, 4, 13, 7, 16, 13, 17,
    16, 21, 7, 16, 9, 18, 20, 27, 21, 28, 13, 17, 20, 27, 17, 23, 27, 29, 16, 21, 21, 28, 27, 29,
    29, 31, 7, 20, 9, 21, 16, 27, 18, 28, 9, 21, 10, 22, 21, 29, 22, 30, 16, 27, 21, 29, 21, 29,
    28, 31, 18, 28, 22, 30, 28, 31, 30, 32, 4, 13, 13, 17, 7, 16, 16, 21, 13, 17, 17, 23, 20, 27,
    27, 29, 7, 16, 20, 27, 9, 18, 21, 28, 16, 21, 27, 29, 21, 28, 29, 31, 7, 20, 16, 27, 9, 21, 18,
    28, 16, 27, 21, 29, 21, 29, 28, 31, 9, 21, 21, 29, 10, 22, 22, 30, 18, 28, 28, 31, 22, 30, 30,
    32, 11, 14, 14, 18, 14, 18, 18, 22, 14, 18, 18, 24, 25, 28, 28, 30, 14, 18, 25, 28, 18, 24, 28,
    30, 18, 22, 28, 30, 28, 30, 31, 32, 14, 25, 18, 28, 18, 28, 24, 30, 18, 28, 22, 30, 28, 31, 30,
    32, 18, 28, 28, 31, 22, 30, 30, 32, 24, 30, 30, 32, 30, 32, 32, 33,
];

pub(in crate::algorithms::motifs) const ISOCLASS2_4: [u8; 4096] = [
    0, 1, 1, 2, 1, 2, 2, 3, 1, 4, 5, 6, 5, 6, 7, 8, 1, 5, 9, 10, 11, 12, 13, 14, 2, 6, 10, 15, 12,
    16, 17, 18, 1, 5, 11, 12, 9, 10, 13, 14, 2, 6, 12, 16, 10, 15, 17, 18, 2, 7, 13, 17, 13, 17,
    19, 20, 3, 8, 14, 18, 14, 18, 20, 21, 1, 5, 4, 6, 5, 7, 6, 8, 9, 22, 22, 23, 24, 25, 25, 26, 5,
    27, 22, 28, 29, 30, 31, 32, 10, 28, 33, 34, 35, 36, 37, 38, 11, 29, 39, 40, 41, 42, 43, 44, 13,
    31, 45, 46, 47, 48, 49, 50, 12, 30, 45, 51, 52, 53, 54, 55, 14, 32, 56, 57, 58, 59, 60, 61, 1,
    9, 5, 10, 11, 13, 12, 14, 5, 22, 27, 28, 29, 31, 30, 32, 4, 22, 22, 33, 39, 45, 45, 56, 6, 23,
    28, 34, 40, 46, 51, 57, 5, 24, 29, 35, 41, 47, 52, 58, 7, 25, 30, 36, 42, 48, 53, 59, 6, 25,
    31, 37, 43, 49, 54, 60, 8, 26, 32, 38, 44, 50, 55, 61, 2, 10, 6, 15, 12, 17, 16, 18, 10, 33,
    28, 34, 35, 37, 36, 38, 6, 28, 23, 34, 40, 51, 46, 57, 15, 34, 34, 62, 63, 64, 64, 65, 12, 35,
    40, 63, 66, 67, 68, 69, 17, 37, 51, 64, 67, 70, 71, 72, 16, 36, 46, 64, 68, 71, 73, 74, 18, 38,
    57, 65, 69, 72, 74, 75, 1, 11, 5, 12, 9, 13, 10, 14, 11, 39, 29, 40, 41, 43, 42, 44, 5, 29, 24,
    35, 41, 52, 47, 58, 12, 40, 35, 63, 66, 68, 67, 69, 9, 41, 41, 66, 76, 77, 77, 78, 13, 43, 52,
    68, 77, 79, 80, 81, 10, 42, 47, 67, 77, 80, 82, 83, 14, 44, 58, 69, 78, 81, 83, 84, 2, 12, 6,
    16, 10, 17, 15, 18, 13, 45, 31, 46, 47, 49, 48, 50, 7, 30, 25, 36, 42, 53, 48, 59, 17, 51, 37,
    64, 67, 71, 70, 72, 13, 52, 43, 68, 77, 80, 79, 81, 19, 54, 54, 73, 82, 85, 85, 86, 17, 53, 49,
    71, 80, 87, 85, 88, 20, 55, 60, 74, 83, 88, 89, 90, 2, 13, 7, 17, 13, 19, 17, 20, 12, 45, 30,
    51, 52, 54, 53, 55, 6, 31, 25, 37, 43, 54, 49, 60, 16, 46, 36, 64, 68, 73, 71, 74, 10, 47, 42,
    67, 77, 82, 80, 83, 17, 49, 53, 71, 80, 85, 87, 88, 15, 48, 48, 70, 79, 85, 85, 89, 18, 50, 59,
    72, 81, 86, 88, 90, 3, 14, 8, 18, 14, 20, 18, 21, 14, 56, 32, 57, 58, 60, 59, 61, 8, 32, 26,
    38, 44, 55, 50, 61, 18, 57, 38, 65, 69, 74, 72, 75, 14, 58, 44, 69, 78, 83, 81, 84, 20, 60, 55,
    74, 83, 89, 88, 90, 18, 59, 50, 72, 81, 88, 86, 90, 21, 61, 61, 75, 84, 90, 90, 91, 1, 5, 5, 7,
    4, 6, 6, 8, 9, 22, 24, 25, 22, 23, 25, 26, 11, 29, 41, 42, 39, 40, 43, 44, 13, 31, 47, 48, 45,
    46, 49, 50, 5, 27, 29, 30, 22, 28, 31, 32, 10, 28, 35, 36, 33, 34, 37, 38, 12, 30, 52, 53, 45,
    51, 54, 55, 14, 32, 58, 59, 56, 57, 60, 61, 9, 24, 22, 25, 22, 25, 23, 26, 76, 92, 92, 93, 92,
    93, 93, 94, 41, 95, 96, 97, 98, 99, 100, 101, 77, 102, 103, 104, 105, 106, 107, 108, 41, 95,
    98, 99, 96, 97, 100, 101, 77, 102, 105, 106, 103, 104, 107, 108, 66, 109, 110, 111, 110, 111,
    112, 113, 78, 114, 115, 116, 115, 116, 117, 118, 11, 41, 29, 42, 39, 43, 40, 44, 41, 96, 95,
    97, 98, 100, 99, 101, 39, 98, 98, 119, 120, 121, 121, 122, 43, 100, 123, 124, 121, 125, 126,
    127, 29, 95, 128, 129, 98, 123, 130, 131, 42, 97, 129, 132, 119, 124, 133, 134, 40, 99, 130,
    133, 121, 126, 135, 136, 44, 101, 131, 134, 122, 127, 136, 137, 13, 47, 31, 48, 45, 49, 46, 50,
    77, 103, 102, 104, 105, 107, 106, 108, 43, 123, 100, 124, 121, 126, 125, 127, 79, 138, 138,
    139, 140, 141, 141, 142, 52, 143, 130, 144, 110, 145, 146, 147, 80, 148, 149, 150, 151, 152,
    153, 154, 68, 155, 146, 156, 157, 158, 159, 160, 81, 161, 162, 163, 164, 165, 166, 167, 5, 29,
    27, 30, 22, 31, 28, 32, 41, 98, 95, 99, 96, 100, 97, 101, 29, 128, 95, 129, 98, 130, 123, 131,
    52, 130, 143, 144, 110, 146, 145, 147, 24, 95, 95, 109, 92, 102, 102, 114, 47, 123, 143, 155,
    103, 138, 148, 161, 35, 129, 143, 168, 105, 149, 169, 170, 58, 131, 171, 172, 115, 162, 173,
    174, 10, 35, 28, 36, 33, 37, 34, 38, 77, 105, 102, 106, 103, 107, 104, 108, 42, 129, 97, 132,
    119, 133, 124, 134, 80, 149, 148, 150, 151, 153, 152, 154, 47, 143, 123, 155, 103, 148, 138,
    161, 82, 169, 169, 175, 176, 177, 177, 178, 67, 168, 145, 179, 151, 180, 181, 182, 83, 170,
    173, 183, 184, 185, 186, 187, 12, 52, 30, 53, 45, 54, 51, 55, 66, 110, 109, 111, 110, 112, 111,
    113, 40, 130, 99, 133, 121, 135, 126, 136, 68, 146, 155, 156, 157, 159, 158, 160, 35, 143, 129,
    168, 105, 169, 149, 170, 67, 145, 168, 179, 151, 181, 180, 182, 63, 144, 144, 188, 140, 189,
    189, 190, 69, 147, 172, 191, 164, 192, 193, 194, 14, 58, 32, 59, 56, 60, 57, 61, 78, 115, 114,
    116, 115, 117, 116, 118, 44, 131, 101, 134, 122, 136, 127, 137, 81, 162, 161, 163, 164, 166,
    165, 167, 58, 171, 131, 172, 115, 173, 162, 174, 83, 173, 170, 183, 184, 186, 185, 187, 69,
    172, 147, 191, 164, 193, 192, 194, 84, 174, 174, 195, 196, 197, 197, 198, 1, 9, 11, 13, 5, 10,
    12, 14, 5, 22, 29, 31, 27, 28, 30, 32, 5, 24, 41, 47, 29, 35, 52, 58, 7, 25, 42, 48, 30, 36,
    53, 59, 4, 22, 39, 45, 22, 33, 45, 56, 6, 23, 40, 46, 28, 34, 51, 57, 6, 25, 43, 49, 31, 37,
    54, 60, 8, 26, 44, 50, 32, 38, 55, 61, 11, 41, 39, 43, 29, 42, 40, 44, 41, 96, 98, 100, 95, 97,
    99, 101, 29, 95, 98, 123, 128, 129, 130, 131, 42, 97, 119, 124, 129, 132, 133, 134, 39, 98,
    120, 121, 98, 119, 121, 122, 43, 100, 121, 125, 123, 124, 126, 127, 40, 99, 121, 126, 130, 133,
    135, 136, 44, 101, 122, 127, 131, 134, 136, 137, 9, 76, 41, 77, 41, 77, 66, 78, 24, 92, 95,
    102, 95, 102, 109, 114, 22, 92, 96, 103, 98, 105, 110, 115, 25, 93, 97, 104, 99, 106, 111, 116,
    22, 92, 98, 105, 96, 103, 110, 115, 25, 93, 99, 106, 97, 104, 111, 116, 23, 93, 100, 107, 100,
    107, 112, 117, 26, 94, 101, 108, 101, 108, 113, 118, 13, 77, 43, 79, 52, 80, 68, 81, 47, 103,
    123, 138, 143, 148, 155, 161, 31, 102, 100, 138, 130, 149, 146, 162, 48, 104, 124, 139, 144,
    150, 156, 163, 45, 105, 121, 140, 110, 151, 157, 164, 49, 107, 126, 141, 145, 152, 158, 165,
    46, 106, 125, 141, 146, 153, 159, 166, 50, 108, 127, 142, 147, 154, 160, 167, 5, 41, 29, 52,
    24, 47, 35, 58, 29, 98, 128, 130, 95, 123, 129, 131, 27, 95, 95, 143, 95, 143, 143, 171, 30,
    99, 129, 144, 109, 155, 168, 172, 22, 96, 98, 110, 92, 103, 105, 115, 31, 100, 130, 146, 102,
    138, 149, 162, 28, 97, 123, 145, 102, 148, 169, 173, 32, 101, 131, 147, 114, 161, 170, 174, 12,
    66, 40, 68, 35, 67, 63, 69, 52, 110, 130, 146, 143, 145, 144, 147, 30, 109, 99, 155, 129, 168,
    144, 172, 53, 111, 133, 156, 168, 179, 188, 191, 45, 110, 121, 157, 105, 151, 140, 164, 54,
    112, 135, 159, 169, 181, 189, 192, 51, 111, 126, 158, 149, 180, 189, 193, 55, 113, 136, 160,
    170, 182, 190, 194, 10, 77, 42, 80, 47, 82, 67, 83, 35, 105, 129, 149, 143, 169, 168, 170, 28,
    102, 97, 148, 123, 169, 145, 173, 36, 106, 132, 150, 155, 175, 179, 183, 33, 103, 119, 151,
    103, 176, 151, 184, 37, 107, 133, 153, 148, 177, 180, 185, 34, 104, 124, 152, 138, 177, 181,
    186, 38, 108, 134, 154, 161, 178, 182, 187, 14, 78, 44, 81, 58, 83, 69, 84, 58, 115, 131, 162,
    171, 173, 172, 174, 32, 114, 101, 161, 131, 170, 147, 174, 59, 116, 134, 163, 172, 183, 191,
    195, 56, 115, 122, 164, 115, 184, 164, 196, 60, 117, 136, 166, 173, 186, 193, 197, 57, 116,
    127, 165, 162, 185, 192, 197, 61, 118, 137, 167, 174, 187, 194, 198, 2, 10, 12, 17, 6, 15, 16,
    18, 10, 33, 35, 37, 28, 34, 36, 38, 12, 35, 66, 67, 40, 63, 68, 69, 17, 37, 67, 70, 51, 64, 71,
    72, 6, 28, 40, 51, 23, 34, 46, 57, 15, 34, 63, 64, 34, 62, 64, 65, 16, 36, 68, 71, 46, 64, 73,
    74, 18, 38, 69, 72, 57, 65, 74, 75, 13, 47, 45, 49, 31, 48, 46, 50, 77, 103, 105, 107, 102,
    104, 106, 108, 52, 143, 110, 145, 130, 144, 146, 147, 80, 148, 151, 152, 149, 150, 153, 154,
    43, 123, 121, 126, 100, 124, 125, 127, 79, 138, 140, 141, 138, 139, 141, 142, 68, 155, 157,
    158, 146, 156, 159, 160, 81, 161, 164, 165, 162, 163, 166, 167, 13, 77, 52, 80, 43, 79, 68, 81,
    47, 103, 143, 148, 123, 138, 155, 161, 45, 105, 110, 151, 121, 140, 157, 164, 49, 107, 145,
    152, 126, 141, 158, 165, 31, 102, 130, 149, 100, 138, 146, 162, 48, 104, 144, 150, 124, 139,
    156, 163, 46, 106, 146, 153, 125, 141, 159, 166, 50, 108, 147, 154, 127, 142, 160, 167, 19, 82,
    54, 85, 54, 85, 73, 86, 82, 176, 169, 177, 169, 177, 175, 178, 54, 169, 112, 181, 135, 189,
    159, 192, 85, 177, 181, 199, 189, 200, 201, 202, 54, 169, 135, 189, 112, 181, 159, 192, 85,
    177, 189, 200, 181, 199, 201, 202, 73, 175, 159, 201, 159, 201, 203, 204, 86, 178, 192, 202,
    192, 202, 204, 205, 7, 42, 30, 53, 25, 48, 36, 59, 42, 119, 129, 133, 97, 124, 132, 134, 30,
    129, 109, 168, 99, 144, 155, 172, 53, 133, 168, 188, 111, 156, 179, 191, 25, 97, 99, 111, 93,
    104, 106, 116, 48, 124, 144, 156, 104, 139, 150, 163, 36, 132, 155, 179, 106, 150, 175, 183,
    59, 134, 172, 191, 116, 163, 183, 195, 17, 67, 51, 71, 37, 70, 64, 72, 80, 151, 149, 153, 148,
    152, 150, 154, 53, 168, 111, 179, 133, 188, 156, 191, 87, 180, 180, 206, 180, 206, 206, 207,
    49, 145, 126, 158, 107, 152, 141, 165, 85, 181, 189, 201, 177, 199, 200, 202, 71, 179, 158,
    208, 153, 206, 201, 209, 88, 182, 193, 209, 185, 210, 211, 212, 17, 80, 53, 87, 49, 85, 71, 88,
    67, 151, 168, 180, 145, 181, 179, 182, 51, 149, 111, 180, 126, 189, 158, 193, 71, 153, 179,
    206, 158, 201, 208, 209, 37, 148, 133, 180, 107, 177, 153, 185, 70, 152, 188, 206, 152, 199,
    206, 210, 64, 150, 156, 206, 141, 200, 201, 211, 72, 154, 191, 207, 165, 202, 209, 212, 20, 83,
    55, 88, 60, 89, 74, 90, 83, 184, 170, 185, 173, 186, 183, 187, 55, 170, 113, 182, 136, 190,
    160, 194, 88, 185, 182, 210, 193, 211, 209, 212, 60, 173, 136, 193, 117, 186, 166, 197, 89,
    186, 190, 211, 186, 213, 211, 214, 74, 183, 160, 209, 166, 211, 204, 215, 90, 187, 194, 212,
    197, 214, 215, 216, 1, 11, 9, 13, 5, 12, 10, 14, 11, 39, 41, 43, 29, 40, 42, 44, 9, 41, 76, 77,
    41, 66, 77, 78, 13, 43, 77, 79, 52, 68, 80, 81, 5, 29, 41, 52, 24, 35, 47, 58, 12, 40, 66, 68,
    35, 63, 67, 69, 10, 42, 77, 80, 47, 67, 82, 83, 14, 44, 78, 81, 58, 69, 83, 84, 5, 29, 22, 31,
    27, 30, 28, 32, 41, 98, 96, 100, 95, 99, 97, 101, 24, 95, 92, 102, 95, 109, 102, 114, 47, 123,
    103, 138, 143, 155, 148, 161, 29, 128, 98, 130, 95, 129, 123, 131, 52, 130, 110, 146, 143, 144,
    145, 147, 35, 129, 105, 149, 143, 168, 169, 170, 58, 131, 115, 162, 171, 172, 173, 174, 5, 41,
    24, 47, 29, 52, 35, 58, 29, 98, 95, 123, 128, 130, 129, 131, 22, 96, 92, 103, 98, 110, 105,
    115, 31, 100, 102, 138, 130, 146, 149, 162, 27, 95, 95, 143, 95, 143, 143, 171, 30, 99, 109,
    155, 129, 144, 168, 172, 28, 97, 102, 148, 123, 145, 169, 173, 32, 101, 114, 161, 131, 147,
    170, 174, 7, 42, 25, 48, 30, 53, 36, 59, 42, 119, 97, 124, 129, 133, 132, 134, 25, 97, 93, 104,
    99, 111, 106, 116, 48, 124, 104, 139, 144, 156, 150, 163, 30, 129, 99, 144, 109, 168, 155, 172,
    53, 133, 111, 156, 168, 188, 179, 191, 36, 132, 106, 150, 155, 179, 175, 183, 59, 134, 116,
    163, 172, 191, 183, 195, 4, 39, 22, 45, 22, 45, 33, 56, 39, 120, 98, 121, 98, 121, 119, 122,
    22, 98, 92, 105, 96, 110, 103, 115, 45, 121, 105, 140, 110, 157, 151, 164, 22, 98, 96, 110, 92,
    105, 103, 115, 45, 121, 110, 157, 105, 140, 151, 164, 33, 119, 103, 151, 103, 151, 176, 184,
    56, 122, 115, 164, 115, 164, 184, 196, 6, 40, 23, 46, 28, 51, 34, 57, 43, 121, 100, 125, 123,
    126, 124, 127, 25, 99, 93, 106, 97, 111, 104, 116, 49, 126, 107, 141, 145, 158, 152, 165, 31,
    130, 100, 146, 102, 149, 138, 162, 54, 135, 112, 159, 169, 189, 181, 192, 37, 133, 107, 153,
    148, 180, 177, 185, 60, 136, 117, 166, 173, 193, 186, 197, 6, 43, 25, 49, 31, 54, 37, 60, 40,
    121, 99, 126, 130, 135, 133, 136, 23, 100, 93, 107, 100, 112, 107, 117, 46, 125, 106, 141, 146,
    159, 153, 166, 28, 123, 97, 145, 102, 169, 148, 173, 51, 126, 111, 158, 149, 189, 180, 193, 34,
    124, 104, 152, 138, 181, 177, 186, 57, 127, 116, 165, 162, 192, 185, 197, 8, 44, 26, 50, 32,
    55, 38, 61, 44, 122, 101, 127, 131, 136, 134, 137, 26, 101, 94, 108, 101, 113, 108, 118, 50,
    127, 108, 142, 147, 160, 154, 167, 32, 131, 101, 147, 114, 170, 161, 174, 55, 136, 113, 160,
    170, 190, 182, 194, 38, 134, 108, 154, 161, 182, 178, 187, 61, 137, 118, 167, 174, 194, 187,
    198, 2, 12, 10, 17, 6, 16, 15, 18, 13, 45, 47, 49, 31, 46, 48, 50, 13, 52, 77, 80, 43, 68, 79,
    81, 19, 54, 82, 85, 54, 73, 85, 86, 7, 30, 42, 53, 25, 36, 48, 59, 17, 51, 67, 71, 37, 64, 70,
    72, 17, 53, 80, 87, 49, 71, 85, 88, 20, 55, 83, 88, 60, 74, 89, 90, 10, 35, 33, 37, 28, 36, 34,
    38, 77, 105, 103, 107, 102, 106, 104, 108, 47, 143, 103, 148, 123, 155, 138, 161, 82, 169, 176,
    177, 169, 175, 177, 178, 42, 129, 119, 133, 97, 132, 124, 134, 80, 149, 151, 153, 148, 150,
    152, 154, 67, 168, 151, 180, 145, 179, 181, 182, 83, 170, 184, 185, 173, 183, 186, 187, 12, 66,
    35, 67, 40, 68, 63, 69, 52, 110, 143, 145, 130, 146, 144, 147, 45, 110, 105, 151, 121, 157,
    140, 164, 54, 112, 169, 181, 135, 159, 189, 192, 30, 109, 129, 168, 99, 155, 144, 172, 53, 111,
    168, 179, 133, 156, 188, 191, 51, 111, 149, 180, 126, 158, 189, 193, 55, 113, 170, 182, 136,
    160, 190, 194, 17, 67, 37, 70, 51, 71, 64, 72, 80, 151, 148, 152, 149, 153, 150, 154, 49, 145,
    107, 152, 126, 158, 141, 165, 85, 181, 177, 199, 189, 201, 200, 202, 53, 168, 133, 188, 111,
    179, 156, 191, 87, 180, 180, 206, 180, 206, 206, 207, 71, 179, 153, 206, 158, 208, 201, 209,
    88, 182, 185, 210, 193, 209, 211, 212, 6, 40, 28, 51, 23, 46, 34, 57, 43, 121, 123, 126, 100,
    125, 124, 127, 31, 130, 102, 149, 100, 146, 138, 162, 54, 135, 169, 189, 112, 159, 181, 192,
    25, 99, 97, 111, 93, 106, 104, 116, 49, 126, 145, 158, 107, 141, 152, 165, 37, 133, 148, 180,
    107, 153, 177, 185, 60, 136, 173, 193, 117, 166, 186, 197, 15, 63, 34, 64, 34, 64, 62, 65, 79,
    140, 138, 141, 138, 141, 139, 142, 48, 144, 104, 150, 124, 156, 139, 163, 85, 189, 177, 200,
    181, 201, 199, 202, 48, 144, 124, 156, 104, 150, 139, 163, 85, 189, 181, 201, 177, 200, 199,
    202, 70, 188, 152, 206, 152, 206, 199, 210, 89, 190, 186, 211, 186, 211, 213, 214, 16, 68, 36,
    71, 46, 73, 64, 74, 68, 157, 155, 158, 146, 159, 156, 160, 46, 146, 106, 153, 125, 159, 141,
    166, 73, 159, 175, 201, 159, 203, 201, 204, 36, 155, 132, 179, 106, 175, 150, 183, 71, 158,
    179, 208, 153, 201, 206, 209, 64, 156, 150, 206, 141, 201, 200, 211, 74, 160, 183, 209, 166,
    204, 211, 215, 18, 69, 38, 72, 57, 74, 65, 75, 81, 164, 161, 165, 162, 166, 163, 167, 50, 147,
    108, 154, 127, 160, 142, 167, 86, 192, 178, 202, 192, 204, 202, 205, 59, 172, 134, 191, 116,
    183, 163, 195, 88, 193, 182, 209, 185, 211, 210, 212, 72, 191, 154, 207, 165, 209, 202, 212,
    90, 194, 187, 212, 197, 215, 214, 216, 2, 13, 13, 19, 7, 17, 17, 20, 12, 45, 52, 54, 30, 51,
    53, 55, 10, 47, 77, 82, 42, 67, 80, 83, 17, 49, 80, 85, 53, 71, 87, 88, 6, 31, 43, 54, 25, 37,
    49, 60, 16, 46, 68, 73, 36, 64, 71, 74, 15, 48, 79, 85, 48, 70, 85, 89, 18, 50, 81, 86, 59, 72,
    88, 90, 12, 52, 45, 54, 30, 53, 51, 55, 66, 110, 110, 112, 109, 111, 111, 113, 35, 143, 105,
    169, 129, 168, 149, 170, 67, 145, 151, 181, 168, 179, 180, 182, 40, 130, 121, 135, 99, 133,
    126, 136, 68, 146, 157, 159, 155, 156, 158, 160, 63, 144, 140, 189, 144, 188, 189, 190, 69,
    147, 164, 192, 172, 191, 193, 194, 10, 77, 47, 82, 42, 80, 67, 83, 35, 105, 143, 169, 129, 149,
    168, 170, 33, 103, 103, 176, 119, 151, 151, 184, 37, 107, 148, 177, 133, 153, 180, 185, 28,
    102, 123, 169, 97, 148, 145, 173, 36, 106, 155, 175, 132, 150, 179, 183, 34, 104, 138, 177,
    124, 152, 181, 186, 38, 108, 161, 178, 134, 154, 182, 187, 17, 80, 49, 85, 53, 87, 71, 88, 67,
    151, 145, 181, 168, 180, 179, 182, 37, 148, 107, 177, 133, 180, 153, 185, 70, 152, 152, 199,
    188, 206, 206, 210, 51, 149, 126, 189, 111, 180, 158, 193, 71, 153, 158, 201, 179, 206, 208,
    209, 64, 150, 141, 200, 156, 206, 201, 211, 72, 154, 165, 202, 191, 207, 209, 212, 6, 43, 31,
    54, 25, 49, 37, 60, 40, 121, 130, 135, 99, 126, 133, 136, 28, 123, 102, 169, 97, 145, 148, 173,
    51, 126, 149, 189, 111, 158, 180, 193, 23, 100, 100, 112, 93, 107, 107, 117, 46, 125, 146, 159,
    106, 141, 153, 166, 34, 124, 138, 181, 104, 152, 177, 186, 57, 127, 162, 192, 116, 165, 185,
    197, 16, 68, 46, 73, 36, 71, 64, 74, 68, 157, 146, 159, 155, 158, 156, 160, 36, 155, 106, 175,
    132, 179, 150, 183, 71, 158, 153, 201, 179, 208, 206, 209, 46, 146, 125, 159, 106, 153, 141,
    166, 73, 159, 159, 203, 175, 201, 201, 204, 64, 156, 141, 201, 150, 206, 200, 211, 74, 160,
    166, 204, 183, 209, 211, 215, 15, 79, 48, 85, 48, 85, 70, 89, 63, 140, 144, 189, 144, 189, 188,
    190, 34, 138, 104, 177, 124, 181, 152, 186, 64, 141, 150, 200, 156, 201, 206, 211, 34, 138,
    124, 181, 104, 177, 152, 186, 64, 141, 156, 201, 150, 200, 206, 211, 62, 139, 139, 199, 139,
    199, 199, 213, 65, 142, 163, 202, 163, 202, 210, 214, 18, 81, 50, 86, 59, 88, 72, 90, 69, 164,
    147, 192, 172, 193, 191, 194, 38, 161, 108, 178, 134, 182, 154, 187, 72, 165, 154, 202, 191,
    209, 207, 212, 57, 162, 127, 192, 116, 185, 165, 197, 74, 166, 160, 204, 183, 211, 209, 215,
    65, 163, 142, 202, 163, 210, 202, 214, 75, 167, 167, 205, 195, 212, 212, 216, 3, 14, 14, 20, 8,
    18, 18, 21, 14, 56, 58, 60, 32, 57, 59, 61, 14, 58, 78, 83, 44, 69, 81, 84, 20, 60, 83, 89, 55,
    74, 88, 90, 8, 32, 44, 55, 26, 38, 50, 61, 18, 57, 69, 74, 38, 65, 72, 75, 18, 59, 81, 88, 50,
    72, 86, 90, 21, 61, 84, 90, 61, 75, 90, 91, 14, 58, 56, 60, 32, 59, 57, 61, 78, 115, 115, 117,
    114, 116, 116, 118, 58, 171, 115, 173, 131, 172, 162, 174, 83, 173, 184, 186, 170, 183, 185,
    187, 44, 131, 122, 136, 101, 134, 127, 137, 81, 162, 164, 166, 161, 163, 165, 167, 69, 172,
    164, 193, 147, 191, 192, 194, 84, 174, 196, 197, 174, 195, 197, 198, 14, 78, 58, 83, 44, 81,
    69, 84, 58, 115, 171, 173, 131, 162, 172, 174, 56, 115, 115, 184, 122, 164, 164, 196, 60, 117,
    173, 186, 136, 166, 193, 197, 32, 114, 131, 170, 101, 161, 147, 174, 59, 116, 172, 183, 134,
    163, 191, 195, 57, 116, 162, 185, 127, 165, 192, 197, 61, 118, 174, 187, 137, 167, 194, 198,
    20, 83, 60, 89, 55, 88, 74, 90, 83, 184, 173, 186, 170, 185, 183, 187, 60, 173, 117, 186, 136,
    193, 166, 197, 89, 186, 186, 213, 190, 211, 211, 214, 55, 170, 136, 190, 113, 182, 160, 194,
    88, 185, 193, 211, 182, 210, 209, 212, 74, 183, 166, 211, 160, 209, 204, 215, 90, 187, 197,
    214, 194, 212, 215, 216, 8, 44, 32, 55, 26, 50, 38, 61, 44, 122, 131, 136, 101, 127, 134, 137,
    32, 131, 114, 170, 101, 147, 161, 174, 55, 136, 170, 190, 113, 160, 182, 194, 26, 101, 101,
    113, 94, 108, 108, 118, 50, 127, 147, 160, 108, 142, 154, 167, 38, 134, 161, 182, 108, 154,
    178, 187, 61, 137, 174, 194, 118, 167, 187, 198, 18, 69, 57, 74, 38, 72, 65, 75, 81, 164, 162,
    166, 161, 165, 163, 167, 59, 172, 116, 183, 134, 191, 163, 195, 88, 193, 185, 211, 182, 209,
    210, 212, 50, 147, 127, 160, 108, 154, 142, 167, 86, 192, 192, 204, 178, 202, 202, 205, 72,
    191, 165, 209, 154, 207, 202, 212, 90, 194, 197, 215, 187, 212, 214, 216, 18, 81, 59, 88, 50,
    86, 72, 90, 69, 164, 172, 193, 147, 192, 191, 194, 57, 162, 116, 185, 127, 192, 165, 197, 74,
    166, 183, 211, 160, 204, 209, 215, 38, 161, 134, 182, 108, 178, 154, 187, 72, 165, 191, 209,
    154, 202, 207, 212, 65, 163, 163, 210, 142, 202, 202, 214, 75, 167, 195, 212, 167, 205, 212,
    216, 21, 84, 61, 90, 61, 90, 75, 91, 84, 196, 174, 197, 174, 197, 195, 198, 61, 174, 118, 187,
    137, 194, 167, 198, 90, 197, 187, 214, 194, 215, 212, 216, 61, 174, 137, 194, 118, 187, 167,
    198, 90, 197, 194, 215, 187, 214, 212, 216, 75, 195, 167, 212, 167, 212, 205, 216, 91, 198,
    198, 216, 198, 216, 216, 217,
];

pub(in crate::algorithms::motifs) const ISOGRAPHS_3: [u32; 16] =
    [0, 1, 3, 5, 6, 7, 10, 11, 15, 21, 23, 25, 27, 30, 31, 63];

pub(in crate::algorithms::motifs) const ISOGRAPHS_3U: [u32; 4] = [0, 1, 3, 7];

pub(in crate::algorithms::motifs) const ISOGRAPHS_4U: [u32; 11] =
    [0, 1, 3, 7, 11, 12, 13, 15, 30, 31, 63];

pub(in crate::algorithms::motifs) const ISOGRAPHS_5U: [u32; 34] = [
    0, 1, 3, 7, 11, 12, 13, 15, 30, 31, 63, 75, 76, 77, 79, 86, 87, 94, 95, 116, 117, 119, 127,
    222, 223, 235, 236, 237, 239, 254, 255, 507, 511, 1023,
];

pub(in crate::algorithms::motifs) const ISOGRAPHS_4: [u32; 218] = [
    0, 1, 3, 7, 9, 10, 11, 14, 15, 18, 19, 20, 21, 22, 23, 27, 29, 30, 31, 54, 55, 63, 73, 75, 76,
    77, 79, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 106, 107,
    108, 109, 110, 111, 115, 116, 117, 118, 119, 122, 123, 124, 125, 126, 127, 219, 220, 221, 223,
    228, 229, 230, 231, 237, 238, 239, 246, 247, 255, 292, 293, 295, 301, 302, 303, 310, 311, 319,
    365, 367, 373, 375, 382, 383, 511, 585, 587, 591, 593, 594, 595, 596, 597, 598, 599, 601, 602,
    603, 604, 605, 606, 607, 625, 626, 627, 630, 631, 633, 634, 635, 638, 639, 659, 660, 661, 663,
    666, 667, 669, 670, 671, 674, 675, 678, 679, 683, 686, 687, 694, 695, 703, 729, 731, 732, 733,
    735, 737, 739, 741, 742, 743, 745, 746, 747, 748, 749, 750, 751, 753, 755, 756, 757, 758, 759,
    761, 762, 763, 764, 765, 766, 767, 819, 822, 823, 826, 827, 830, 831, 875, 876, 877, 879, 883,
    885, 886, 887, 891, 892, 893, 894, 895, 947, 949, 951, 955, 957, 958, 959, 1019, 1020, 1021,
    1023, 1755, 1757, 1758, 1759, 1782, 1783, 1791, 1883, 1887, 1907, 1911, 1917, 1918, 1919, 2029,
    2031, 2039, 2047, 4095,
];

pub(in crate::algorithms::motifs) const CLASSEDGES_3: [u8; 12] =
    [1, 2, 0, 2, 2, 1, 0, 1, 2, 0, 1, 0];

pub(in crate::algorithms::motifs) const CLASSEDGES_3U: [u8; 6] = [1, 2, 0, 2, 0, 1];

pub(in crate::algorithms::motifs) const CLASSEDGES_4: [u8; 24] = [
    2, 3, 1, 3, 0, 3, 3, 2, 1, 2, 0, 2, 3, 1, 2, 1, 0, 1, 3, 0, 2, 0, 1, 0,
];

pub(in crate::algorithms::motifs) const CLASSEDGES_4U: [u8; 12] =
    [2, 3, 1, 3, 0, 3, 1, 2, 0, 2, 0, 1];

pub(in crate::algorithms::motifs) const CLASSEDGES_5U: [u8; 20] =
    [3, 4, 2, 4, 1, 4, 0, 4, 2, 3, 1, 3, 0, 3, 1, 2, 0, 2, 0, 1];