phonopy/c/spglib/sitesym_database.c

1184 lines
65 KiB
C

/* Copyright (C) 2011 Atsushi Togo */
/* All rights reserved. */
/* This file is part of spglib. */
/* Redistribution and use in source and binary forms, with or without */
/* modification, are permitted provided that the following conditions */
/* are met: */
/* * Redistributions of source code must retain the above copyright */
/* notice, this list of conditions and the following disclaimer. */
/* * Redistributions in binary form must reproduce the above copyright */
/* notice, this list of conditions and the following disclaimer in */
/* the documentation and/or other materials provided with the */
/* distribution. */
/* * Neither the name of the phonopy project nor the names of its */
/* contributors may be used to endorse or promote products derived */
/* from this software without specific prior written permission. */
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE */
/* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, */
/* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER */
/* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT */
/* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN */
/* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
/* POSSIBILITY OF SUCH DAMAGE. */
static const int position_wyckoff[] =
{ 0, /* The first element is dummy. */
1, 2, 11, 16, 21, 26, 27, 28, 29, 32,
35, 38, 41, 44, 47, 50, 53, 56, 59, 62,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
76, 78, 80, 82, 84, 86, 88, 90, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 125, 140, 155,
161, 167, 173, 183, 193, 203, 213, 223, 233, 243,
253, 263, 270, 277, 284, 291, 298, 305, 312, 319,
326, 331, 336, 341, 346, 351, 356, 361, 366, 371,
377, 383, 389, 395, 401, 407, 413, 419, 425, 431,
437, 443, 449, 455, 461, 467, 473, 479, 500, 505,
510, 515, 518, 521, 524, 525, 528, 531, 534, 546,
558, 570, 581, 592, 596, 605, 614, 623, 626, 629,
632, 635, 638, 641, 646, 651, 656, 660, 664, 668,
672, 676, 680, 681, 682, 683, 684, 685, 686, 689,
692, 695, 698, 701, 704, 706, 708, 710, 712, 714,
716, 719, 722, 725, 726, 727, 728, 729, 730, 731,
734, 737, 740, 746, 752, 758, 760, 762, 764, 766,
768, 770, 774, 778, 782, 788, 794, 800, 806, 812,
818, 822, 826, 830, 834, 838, 842, 845, 848, 851,
854, 857, 860, 862, 864, 866, 868, 870, 872, 877,
882, 887, 889, 891, 893, 898, 903, 908, 911, 914,
917, 920, 923, 926, 929, 932, 935, 962, 975, 988,
1006, 1024, 1042, 1055, 1068, 1081, 1094, 1107, 1125, 1137,
1149, 1161, 1173, 1185, 1197, 1202, 1207, 1212, 1217, 1222,
1227, 1236, 1245, 1254, 1263, 1272, 1281, 1287, 1293, 1299,
1305, 1311, 1317, 1326, 1335, 1344, 1349, 1354, 1359, 1364,
1369, 1374, 1379, 1384, 1389, 1397, 1405, 1413, 1420, 1427,
1434, 1441, 1448, 1455, 1459, 1463, 1467, 1471, 1475, 1479,
1482, 1485, 1489, 1493, 1497, 1501, 1505, 1509, 1517, 1525,
1533, 1541, 1549, 1557, 1564, 1571, 1578, 1585, 1592, 1599,
1617, 1635, 1653, 1666, 1679, 1692, 1707, 1722, 1737, 1752,
1767, 1782, 1791, 1800, 1809, 1818, 1827, 1836, 1845, 1854,
1863, 1872, 1881, 1890, 1906, 1914, 1922, 1937, 1948, 1959,
1970, 1976, 1982, 1992, 2002, 2012, 2022, 2032, 2042, 2046,
2047, 2051, 2052, 2055, 2057, 2065, 2072, 2084, 2095, 2102,
2109, 2116, 2123, 2132, 2138, 2144, 2160, 2167, 2171, 2173,
2189, 2196, 2200, 2202, 2213, 2220, 2227, 2231, 2236, 2240,
2244, 2247, 2253, 2256, 2261, 2265, 2268, 2270, 2285, 2299,
2305, 2310, 2322, 2332, 2341, 2350, 2360, 2369, 2379, 2384,
2405, 2419, 2433, 2447, 2458, 2469, 2481, 2490, 2501, 2512,
2519, 2526, 2544, 2560, 2571, 2582, 2596, 2610, 2619, 2630,
2638, 2646, 2656, 2666, 2681, 2694, 2703, 2712, 2719, 2726,
2730, 2731, 2732, 2734, 2736, 2743, 2749, 2755, 2767, 2774,
2777, 2780, 2783, 2786, 2792, 2798, 2803, 2807, 2811, 2814,
2817, 2820, 2822, 2824, 2836, 2845, 2855, 2862, 2871, 2880,
2886, 2892, 2896, 2897, 2898, 2901, 2904, 2907, 2919, 2931,
2940, 2954, 2957, 2960, 2971, 2982, 2991, 2997, 3001, 3005,
3009, 3024, 3036, 3048, 3057, 3075, 3088, 3100, 3112, 3122,
3130, 3136, 3138, 3141, 3153, 3161, 3169, 3178, 3185, 3192,
3200, 3204, 3209, 3220, 3233, 3243, 3251, 3261, 3266, 3271,
3280, 3290, 3299, 3307, 3316, 3324, 3329, 3343, 3352, 3361,
3373, 3385, 3397, 3409, 3419, 3428, 3437, 3445, 3453, 3465,
3473, };
static const int coordinates_first[] =
{ 0,
63923, 63923, 657239062, 27383062, 630995062,
656145562, 629901562, 26289562, 1139062, 45562,
63923, 630995197, 629901697, 1139197, 45697,
63923, 656145563, 26289563, 629901563, 45563,
63923, 27401287, 1157287, 26307787, 63787,
63923, 63923, 63923, 63923, 1139197,
45697, 63923, 629901697, 45697, 63923,
629901697, 45697, 63923, 629901563, 45563,
63923, 26289563, 45563, 63923, 26289563,
45563, 63923, 26307787, 63787, 63923,
1157287, 63787, 63923, 1157287, 63787,
63923, 26307788, 63788, 63923, 1157422,
63922, 63923, 629901698, 45698, 63923,
63923, 63923, 63923, 63923, 63923,
63923, 63923, 63923, 63923, 63788,
63923, 63788, 63923, 63788, 63923,
63922, 63923, 63922, 63923, 63922,
63923, 45698, 63923, 45698, 63923,
45698, 63923, 63923, 63923, 63923,
63923, 63923, 63923, 63923, 63923,
63923, 63923, 63923, 63923, 63923,
63923, 63923, 63923, 63923, 63923,
26307788, 63788, 630995197, 1139197, 629901697,
45697, 657239062, 630995062, 27383062, 656145562,
629901562, 1139062, 26289562, 45562, 63923,
1157422, 63922, 656145563, 629901563, 26289563,
45563, 657239062, 656145562, 630995062, 27383062,
26289562, 629901562, 1139062, 45562, 63923,
629901698, 45698, 27401287, 26307787, 1157287,
63787, 657239062, 27383062, 656145562, 630995062,
1139062, 26289562, 629901562, 45562, 63923,
13185788, 630995062, 1139062, 629901562, 45562,
63923, 610672, 656145562, 629901562, 26289562,
45562, 63923, 314973698, 27383062, 26289562,
1139062, 45562, 63923, 63788, 1139197,
45697, 329189062, 328095562, 27383062, 1139062,
26289562, 45562, 63923, 63788, 629901697,
45697, 643570312, 13714312, 656145562, 629901562,
26289562, 45562, 63923, 63788, 1139197,
45697, 329735812, 328642312, 27383062, 1139062,
26289562, 45562, 63923, 63922, 629901563,
45563, 643570312, 13714312, 630995062, 629901562,
1139062, 45562, 63923, 63922, 26289563,
45563, 341764312, 315520312, 27383062, 26289562,
1139062, 45562, 63923, 63922, 629901563,
45563, 958498312, 328642312, 630995062, 629901562,
1139062, 45562, 63923, 45698, 26307787,
63787, 341764312, 315520312, 656145562, 26289562,
629901562, 45562, 63923, 45698, 1157287,
63787, 329189062, 328095562, 630995062, 1139062,
629901562, 45562, 63923, 45698, 26307787,
63787, 354886312, 328642312, 656145562, 26289562,
629901562, 45562, 63923, 630448447, 592447,
629901562, 26289562, 656145562, 45562, 63923,
945376447, 315520447, 629901562, 26289562, 656145562,
45562, 63923, 945923197, 944829697, 1139062,
26289562, 27383062, 45562, 63923, 341217563,
314973563, 26289562, 1139062, 27383062, 45562,
63923, 354339563, 328095563, 26289562, 1139062,
27383062, 45562, 63923, 669267563, 39411563,
629901562, 1139062, 630995062, 45562, 63923,
14279287, 13185787, 1139062, 629901562, 630995062,
45562, 63923, 14826037, 13732537, 1139062,
629901562, 630995062, 45562, 63923, 27948037,
1704037, 26289562, 629901562, 656145562, 45562,
63923, 630995062, 1139062, 629901562, 45562,
63923, 1139062, 630995062, 629901562, 45562,
63923, 630995062, 629901562, 1139062, 45562,
63923, 656145562, 629901562, 26289562, 45562,
63923, 629901562, 656145562, 26289562, 45562,
63923, 656145562, 26289562, 629901562, 45562,
63923, 27383062, 26289562, 1139062, 45562,
63923, 26289562, 27383062, 1139062, 45562,
63923, 27383062, 1139062, 26289562, 45562,
63923, 592447, 329189062, 328095562, 26289562,
45562, 63923, 315520447, 670907812, 39958312,
26289562, 45562, 63923, 314973697, 984742312,
354886312, 26289562, 45562, 63923, 944829697,
643570312, 13714312, 26289562, 45562, 63923,
315520447, 959045062, 328095562, 26289562, 45562,
63923, 592447, 329735812, 328642312, 26289562,
45562, 63923, 314973563, 643570312, 13714312,
1139062, 45562, 63923, 328095563, 972713812,
316613812, 1139062, 45562, 63923, 13167563,
355979812, 329735812, 1139062, 45562, 63923,
39411563, 341764312, 315520312, 1139062, 45562,
63923, 328095563, 669814312, 13714312, 1139062,
45562, 63923, 314973563, 958498312, 328642312,
1139062, 45562, 63923, 13185787, 341764312,
315520312, 629901562, 45562, 63923, 13732537,
985289062, 957951562, 629901562, 45562, 63923,
610537, 959591812, 958498312, 629901562, 45562,
63923, 1704037, 329189062, 328095562, 629901562,
45562, 63923, 13732537, 342857812, 315520312,
629901562, 45562, 63923, 13185787, 354886312,
328642312, 629901562, 45562, 63923, 656145563,
26289563, 629901563, 45563, 630995197, 629901697,
1139197, 45697, 27401287, 26307787, 1157287,
63787, 657239062, 27383062, 630995062, 656145562,
1139062, 26289562, 629901562, 45562, 63923,
630448447, 592447, 26307787, 63787, 63923,
341217563, 314973563, 1139197, 45697, 63923,
14279287, 13185787, 629901563, 45563, 63923,
26289563, 45563, 63923, 1157287, 63787,
63923, 629901697, 45697, 63923, 63923,
592447, 63787, 63923, 314973563, 45697,
63923, 13185787, 45563, 63923, 328095563,
26289563, 45563, 1139197, 45697, 1157287,
63787, 1139062, 630995062, 26289562, 45562,
63923, 13732537, 1157287, 63787, 629901563,
45563, 629901697, 45697, 629901562, 656145562,
1139062, 45562, 63923, 315520447, 629901697,
45697, 26307787, 63787, 26289563, 45563,
26289562, 27383062, 629901562, 45562, 63923,
13732537, 315520447, 328095563, 45563, 45697,
63787, 329735812, 328642312, 1139062, 45562,
63923, 26289563, 45563, 629901697, 45697,
1157287, 63787, 26289562, 1139062, 629901562,
45562, 63923, 13167563, 314973697, 610537,
63923, 629901698, 45698, 26307788, 63788,
656145563, 629901563, 26289563, 45563, 63923,
26307788, 63788, 1157422, 63922, 27401287,
26307787, 1157287, 63787, 63923, 1157422,
63922, 629901698, 45698, 630995197, 1139197,
629901697, 45697, 63923, 629901698, 45698,
63923, 26307788, 63788, 63923, 26307788,
63788, 63923, 1157422, 63922, 63923,
1157422, 63922, 63923, 629901698, 45698,
63923, 656145563, 629901563, 26289563, 45563,
63923, 27401287, 26307787, 1157287, 63787,
63923, 630995197, 1139197, 629901697, 45697,
63923, 314973698, 26289563, 45563, 63923,
13185788, 629901563, 45563, 63923, 13185788,
1157287, 63787, 63923, 610672, 26307787,
63787, 63923, 610672, 629901697, 45697,
63923, 314973698, 1139197, 45697, 63923,
63923, 63923, 63923, 63923, 63923,
63923, 629901563, 45563, 63923, 26289563,
45563, 63923, 26307787, 63787, 63923,
1157287, 63787, 63923, 1139197, 45697,
63923, 629901697, 45697, 63923, 45698,
63923, 63788, 63923, 63788, 63923,
63922, 63923, 63922, 63923, 45698,
63923, 26289563, 45563, 63923, 1157287,
63787, 63923, 629901697, 45697, 63923,
63923, 63923, 63923, 63923, 63923,
63923, 26289563, 45563, 63923, 1157287,
63787, 63923, 629901697, 45697, 63923,
45698, 63788, 328095563, 26289563, 45563,
63923, 63788, 63922, 13732537, 1157287,
63787, 63923, 63922, 45698, 315520447,
629901697, 45697, 63923, 45698, 63923,
63788, 63923, 63788, 63923, 63922,
63923, 63922, 63923, 45698, 63923,
328095563, 26289563, 45563, 63923, 13732537,
1157287, 63787, 63923, 315520447, 629901697,
45697, 63923, 629901698, 45698, 63788,
629901563, 45563, 63923, 26307788, 63788,
45698, 26289563, 45563, 63923, 26307788,
63788, 63922, 26307787, 63787, 63923,
1157422, 63922, 63788, 1157287, 63787,
63923, 1157422, 63922, 45698, 1139197,
45697, 63923, 629901698, 45698, 63922,
629901697, 45697, 63923, 13185788, 629901563,
45563, 63923, 314973698, 26289563, 45563,
63923, 610672, 26307787, 63787, 63923,
13185788, 1157287, 63787, 63923, 314973698,
1139197, 45697, 63923, 610672, 629901697,
45697, 63923, 314973698, 45563, 63923,
13185788, 45563, 63923, 13185788, 63787,
63923, 610672, 63787, 63923, 610672,
45697, 63923, 314973698, 45697, 63923,
45563, 63923, 45563, 63923, 63787,
63923, 63787, 63923, 45697, 63923,
45697, 63923, 63788, 45698, 328095563,
45563, 63923, 63922, 63788, 13732537,
63787, 63923, 45698, 63922, 315520447,
45697, 63923, 45563, 63923, 63787,
63923, 45697, 63923, 45698, 63788,
26289563, 45563, 63923, 63788, 63922,
1157287, 63787, 63923, 63922, 45698,
629901697, 45697, 63923, 26289563, 45563,
63923, 1157287, 63787, 63923, 629901697,
45697, 63923, 314973698, 45563, 63923,
13185788, 45563, 63923, 13185788, 63787,
63923, 610672, 63787, 63923, 610672,
45697, 63923, 314973698, 45697, 63923,
1157422, 63922, 26307788, 63788, 629901698,
45698, 656145563, 629901563, 26289563, 45563,
630995197, 629901697, 1139197, 45697, 27401287,
26307787, 1157287, 63787, 657239062, 27383062,
656145562, 26289562, 630995062, 1139062, 629901562,
45562, 63923, 26289563, 45563, 629901697,
45697, 1157287, 63787, 985835812, 328642312,
26289562, 1139062, 629901562, 45562, 63923,
354339563, 328095563, 945376447, 315520447, 14826037,
13732537, 45562, 657239062, 354886312, 329735812,
958498312, 328642312, 63923, 63922, 629901563,
26289563, 656145563, 45563, 630448447, 592447,
26854537, 610537, 656692312, 26836312, 630448312,
592312, 629901562, 26289562, 656145562, 45562,
63923, 45698, 26307787, 1157287, 27401287,
63787, 341217563, 314973563, 316067197, 314973697,
342311062, 316067062, 341217562, 314973562, 26289562,
1139062, 27383062, 45562, 63923, 63788,
1139197, 629901697, 630995197, 45697, 14279287,
13185787, 643023563, 13167563, 644117062, 643023562,
14261062, 13167562, 1139062, 629901562, 630995062,
45562, 63923, 26289563, 45563, 1139197,
45697, 1157287, 63787, 329189062, 328095562,
1139062, 630995062, 629901562, 45562, 63923,
354339563, 328095563, 316067197, 314973697, 14279287,
13185787, 1139062, 45562, 329189062, 959045062,
957951562, 328095562, 63923, 1157287, 63787,
629901563, 45563, 629901697, 45697, 643570312,
13714312, 629901562, 656145562, 26289562, 45562,
63923, 14826037, 13732537, 643023563, 13167563,
630448447, 592447, 629901562, 45562, 643570312,
669814312, 39958312, 13714312, 63923, 629901697,
45697, 26307787, 63787, 26289563, 45563,
341764312, 315520312, 26289562, 27383062, 1139062,
45562, 63923, 945376447, 315520447, 26854537,
610537, 341217563, 314973563, 26289562, 45562,
341764312, 342857812, 316613812, 315520312, 45563,
629901562, 630995062, 1139062, 45562, 63923,
314973698, 26307788, 63788, 1139197, 45697,
341217563, 314973563, 27383062, 1139062, 26289562,
45562, 63923, 13185788, 629901698, 45698,
1157287, 63787, 643023563, 13167563, 630995062,
1139062, 629901562, 45562, 63923, 13185788,
1157422, 63922, 629901563, 45563, 14279287,
13185787, 630995062, 629901562, 1139062, 45562,
63923, 610672, 26307788, 63788, 629901697,
45697, 26854537, 610537, 656145562, 629901562,
26289562, 45562, 63923, 610672, 629901698,
45698, 26307787, 63787, 630448447, 592447,
656145562, 26289562, 629901562, 45562, 63923,
314973698, 1157422, 63922, 26289563, 45563,
316067197, 314973697, 27383062, 26289562, 1139062,
45562, 63923, 13732537, 314973563, 1139062,
45562, 63923, 316613947, 13167563, 1139062,
45562, 63923, 315520447, 13185787, 629901562,
45562, 63923, 957951563, 610537, 629901562,
45562, 63923, 328095563, 592447, 26289562,
45562, 63923, 39976537, 314973697, 26289562,
45562, 63923, 45698, 315520447, 26307787,
63787, 26289562, 656145562, 629901562, 45562,
63923, 63788, 14826037, 629901697, 45697,
629901562, 656145562, 26289562, 45562, 63923,
63788, 328095563, 1139197, 45697, 1139062,
27383062, 26289562, 45562, 63923, 63922,
945376447, 26289563, 45563, 26289562, 27383062,
1139062, 45562, 63923, 63922, 13732537,
629901563, 45563, 629901562, 630995062, 1139062,
45562, 63923, 45698, 354339563, 1157287,
63787, 1139062, 630995062, 629901562, 45562,
63923, 341217563, 314973563, 592447, 26289562,
45562, 63923, 643023563, 13167563, 1704037,
629901562, 45562, 63923, 14279287, 13185787,
314973563, 1139062, 45562, 63923, 26854537,
610537, 944829697, 26289562, 45562, 63923,
630448447, 592447, 13185787, 629901562, 45562,
63923, 316067197, 314973697, 39411563, 1139062,
45562, 63923, 1157422, 63922, 26289563,
45563, 27383062, 26289562, 1139062, 45562,
63923, 629901698, 45698, 1157287, 63787,
630995062, 1139062, 629901562, 45562, 63923,
26307788, 63788, 629901697, 45697, 656145562,
629901562, 26289562, 45562, 63923, 354339563,
328095563, 1139062, 45562, 63923, 14826037,
13732537, 629901562, 45562, 63923, 945376447,
315520447, 26289562, 45562, 63923, 610672,
13185787, 629901562, 45562, 63923, 1704172,
314973697, 26289562, 45562, 63923, 314973698,
592447, 26289562, 45562, 63923, 944829698,
13167563, 1139062, 45562, 63923, 13185788,
314973563, 1139062, 45562, 63923, 39429788,
610537, 629901562, 45562, 63923, 63922,
26289563, 45563, 27383062, 26289562, 1139062,
45562, 63923, 45698, 1157287, 63787,
630995062, 1139062, 629901562, 45562, 63923,
63788, 629901697, 45697, 656145562, 629901562,
26289562, 45562, 63923, 63788, 45698,
329189062, 328095562, 26289563, 45563, 63923,
13185788, 314973698, 1139062, 45562, 354339563,
328095563, 63923, 63922, 63788, 643570312,
13714312, 1157287, 63787, 63923, 610672,
13185788, 629901562, 45562, 14826037, 13732537,
63923, 45698, 63922, 341764312, 315520312,
629901697, 45697, 63923, 314973698, 610672,
26289562, 45562, 945376447, 315520447, 63923,
592447, 26289562, 45562, 63923, 1704037,
629901562, 45562, 63923, 314973563, 1139062,
45562, 63923, 944829697, 26289562, 45562,
63923, 13185787, 629901562, 45562, 63923,
39411563, 1139062, 45562, 63923, 1139062,
45562, 63923, 1139062, 45562, 63923,
13185788, 1139062, 45562, 63923, 314973698,
1139062, 45562, 63923, 610672, 629901562,
45562, 63923, 13185788, 629901562, 45562,
63923, 314973698, 26289562, 45562, 63923,
610672, 26289562, 45562, 63923, 610672,
45698, 63787, 328095562, 592447, 26289562,
45562, 63923, 1704172, 63788, 45697,
328095562, 1704037, 629901562, 45562, 63923,
314973698, 63788, 45697, 13714312, 314973563,
1139062, 45562, 63923, 944829698, 63922,
45563, 13714312, 944829697, 26289562, 45562,
63923, 13185788, 63922, 45563, 315520312,
13185787, 629901562, 45562, 63923, 39429788,
45698, 63787, 315520312, 39411563, 1139062,
45562, 63923, 45698, 315520447, 63787,
328095562, 629901562, 45562, 63923, 63788,
14826037, 45697, 328095562, 26289562, 45562,
63923, 63788, 328095563, 45697, 13714312,
26289562, 45562, 63923, 63922, 945376447,
45563, 13714312, 1139062, 45562, 63923,
63922, 13732537, 45563, 315520312, 1139062,
45562, 63923, 45698, 354339563, 63787,
315520312, 629901562, 45562, 63923, 1157422,
63922, 63788, 45698, 328095563, 26289563,
45563, 1139197, 45697, 1157287, 63787,
329189062, 328095562, 1139062, 630995062, 629901562,
45562, 63923, 629901698, 45698, 63922,
63788, 13732537, 1157287, 63787, 629901563,
45563, 629901697, 45697, 643570312, 13714312,
629901562, 656145562, 26289562, 45562, 63923,
26307788, 63788, 45698, 63922, 315520447,
629901697, 45697, 26307787, 63787, 26289563,
45563, 341764312, 315520312, 26289562, 27383062,
1139062, 45562, 63923, 63922, 328095563,
26289563, 45563, 592447, 610537, 354339562,
328095562, 26289562, 45562, 26836312, 592312,
63923, 45698, 13732537, 1157287, 63787,
314973563, 314973697, 14807812, 13714312, 1139062,
45562, 316067062, 314973562, 63923, 63788,
315520447, 629901697, 45697, 13185787, 13167563,
945376312, 315520312, 629901562, 45562, 643023562,
13167562, 63923, 13185788, 45698, 314973563,
316067197, 314973697, 1157287, 63787, 13167563,
329189062, 328095562, 1139062, 45562, 316067062,
314973562, 63923, 314973698, 63788, 13167563,
14279287, 13185787, 1139197, 45697, 314973563,
329189062, 328095562, 1139062, 45562, 14261062,
13167562, 63923, 610672, 63788, 13185787,
643023563, 13167563, 629901697, 45697, 610537,
643570312, 13714312, 629901562, 45562, 643023562,
13167562, 63923, 13185788, 63922, 610537,
630448447, 592447, 629901563, 45563, 13185787,
643570312, 13714312, 629901562, 45562, 630448312,
592312, 63923, 314973698, 63922, 592447,
26854537, 610537, 26289563, 45563, 314973697,
341764312, 315520312, 26289562, 45562, 26836312,
592312, 63923, 610672, 45698, 314973697,
341217563, 314973563, 26307787, 63787, 592447,
341764312, 315520312, 26289562, 45562, 341217562,
314973562, 63923, 328095563, 45563, 45697,
63787, 13714312, 315520312, 1139062, 45562,
63923, 314973563, 13167563, 592447, 13732537,
45562, 354339562, 14807812, 13714312, 63923,
328095563, 45563, 63787, 45697, 316613812,
14807812, 1139062, 45562, 63923, 13167563,
314973563, 1704037, 316613947, 45562, 957951562,
315520312, 316613812, 63923, 13732537, 63787,
45563, 45697, 315520312, 328095562, 629901562,
45562, 63923, 13185787, 610537, 314973563,
315520447, 45562, 14807812, 945376312, 315520312,
63923, 13732537, 63787, 45697, 45563,
957951562, 945376312, 629901562, 45562, 63923,
610537, 13185787, 944829697, 957951563, 45562,
39958312, 328095562, 957951562, 63923, 315520447,
45697, 63787, 45563, 328095562, 13714312,
26289562, 45562, 63923, 592447, 314973697,
13185787, 328095563, 45562, 945376312, 354339562,
328095562, 63923, 315520447, 45697, 45563,
63787, 39958312, 354339562, 26289562, 45562,
63923, 314973697, 592447, 39411563, 39976537,
45562, 316613812, 13714312, 39958312, 63923,
63922, 63788, 45698, 13732537, 315520447,
328095563, 45563, 45697, 63787, 328642312,
328095562, 315520312, 13714312, 1139062, 45562,
63923, 45563, 45697, 63787, 821537437,
164343937, 1139062, 45562, 63923, 164070563,
157783072, 6898162, 657239062, 45562, 165437437,
164343937, 63923, 63922, 63788, 45698,
328642312, 629901563, 45563, 1139197, 45697,
26307787, 63787, 630995062, 656145562, 27383062,
45562, 63923, 63922, 26289563, 45563,
592447, 610537, 328642312, 629901562, 45562,
630448312, 592312, 63923, 45698, 1157287,
63787, 314973563, 314973697, 328642312, 26289562,
45562, 341217562, 314973562, 63923, 63788,
629901697, 45697, 13185787, 13167563, 328642312,
1139062, 45562, 14261062, 13167562, 63923,
13167563, 314973697, 610537, 328642312, 45562,
63923, 314973563, 13185787, 1685947, 329735812,
45562, 63923, 13185788, 45698, 315520447,
63787, 13167563, 329735812, 328642312, 1139062,
45562, 63923, 314973698, 63788, 14826037,
45697, 314973563, 328642312, 329735812, 1139062,
45562, 63923, 610672, 63788, 328095563,
45697, 610537, 958498312, 328642312, 629901562,
45562, 63923, 13185788, 63922, 945376447,
45563, 13185787, 328642312, 958498312, 629901562,
45562, 63923, 314973698, 63922, 13732537,
45563, 314973697, 354886312, 328642312, 26289562,
45562, 63923, 610672, 45698, 354339563,
63787, 592447, 328642312, 354886312, 26289562,
45562, 63923, 26289563, 656145563, 45563,
63923, 63923, 26289563, 656145563, 45563,
63923, 63923, 26289563, 45563, 63923,
45563, 63923, 26289563, 656145563, 45563,
657239062, 656145562, 1139062, 45562, 63923,
26289563, 45563, 27929812, 26836312, 1139062,
45562, 63923, 1157422, 63922, 26289563,
656145563, 45563, 27383062, 26289562, 657239062,
656145562, 1139062, 45562, 63923, 63922,
26289563, 656145563, 45563, 656692312, 592312,
27383062, 26289562, 656145562, 45562, 63923,
45563, 329189062, 328095562, 26289563, 1139062,
45562, 63923, 354339563, 1139062, 45562,
328095563, 355433062, 354339562, 63923, 45563,
26289563, 329735812, 328642312, 1139062, 45562,
63923, 328095563, 957951563, 1139062, 45562,
329735812, 328642312, 63923, 63922, 26289563,
328642312, 45563, 26836312, 26289562, 1139062,
45562, 63923, 45563, 14534437, 13440937,
1139062, 45562, 63923, 13167563, 1139062,
45562, 14534437, 13440937, 63923, 26307787,
1157287, 27401287, 63787, 1157692, 64192,
26289563, 656145563, 45563, 630995062, 629901562,
657239062, 656145562, 1139062, 45562, 63923,
1157692, 64192, 45563, 26289563, 1139062,
45562, 63923, 884317, 629901697, 45697,
63923, 64192, 63923, 1704442, 610942,
26307787, 1157287, 27401287, 63787, 26289563,
656145563, 45563, 656692312, 592312, 27383062,
26289562, 656145562, 45562, 63923, 1157692,
64192, 26289563, 45563, 1139062, 45562,
63923, 1431067, 629901697, 45697, 63923,
64192, 63923, 26854942, 1157287, 63787,
64192, 26289563, 45563, 26836312, 26289562,
1139062, 45562, 63923, 13459162, 63382,
64192, 45563, 1139062, 45562, 63923,
26307788, 63788, 64193, 629901563, 656145563,
45563, 63923, 26308193, 629901563, 45563,
63923, 64193, 26289563, 656145563, 45563,
63923, 64193, 26289563, 45563, 63923,
26289563, 656145563, 45563, 63923, 26289563,
45563, 63923, 26307788, 63788, 26289563,
656145563, 45563, 63923, 26289563, 45563,
63923, 63788, 64193, 26289563, 45563,
63923, 26308193, 629901563, 45563, 63923,
45698, 45563, 63923, 45563, 63923,
64193, 26289563, 26307787, 1157287, 27401287,
63787, 656145563, 45563, 630995062, 629901562,
656145562, 1139062, 657239062, 45562, 63923,
26289563, 656145563, 45563, 592447, 26854537,
630448447, 610537, 656145562, 45562, 26836312,
656692312, 630448312, 592312, 63923, 26308193,
45563, 26289563, 1139062, 45562, 63923,
26289563, 45563, 1139062, 45562, 63923,
26307788, 63788, 1157692, 64192, 26289563,
656145563, 45563, 1139062, 657239062, 656145562,
45562, 63923, 26289563, 656145563, 45563,
1704442, 610942, 656145562, 45562, 656692312,
592312, 63923, 27401692, 26308192, 26289563,
45563, 27383062, 26289562, 1139062, 45562,
63923, 26289563, 26854942, 26854132, 45563,
27929812, 26836312, 1139062, 45562, 63923,
63788, 26854942, 64192, 26289563, 45563,
27929812, 26836312, 1139062, 45562, 63923,
26308192, 26289563, 45563, 610942, 26289562,
26836312, 45562, 592312, 63923, 64193,
26289563, 1157287, 63787, 45563, 26836312,
26289562, 1139062, 45562, 63923, 13459162,
45563, 1139062, 45562, 63923, 26307788,
63788, 64193, 1157422, 63922, 27401287,
26307787, 1157287, 63787, 1157692, 64192,
26289563, 656145563, 45563, 26289562, 27383062,
657239062, 656145562, 1139062, 45562, 63923,
63922, 26854537, 610537, 610942, 26289563,
656145563, 45563, 26836312, 26289562, 656145562,
656692312, 45562, 592312, 63923, 26308193,
1157287, 63787, 1157692, 64192, 26289563,
45563, 329189062, 328095562, 27383062, 26289562,
1139062, 45562, 63923, 63383, 14279287,
13185787, 1157692, 64192, 957951563, 328095563,
1139062, 45562, 959045062, 957951562, 329189062,
328095562, 63923, 1157287, 63787, 64192,
629901563, 328642312, 45563, 630448312, 629901562,
1139062, 45562, 63923, 39976537, 13732537,
610942, 354339563, 45562, 328095563, 354339562,
355979812, 329735812, 328642312, 63923, 26308193,
1157422, 63922, 27401692, 26308192, 26289563,
45563, 26289562, 27383062, 1139062, 45562,
63923, 63922, 26854942, 26289563, 45563,
26836312, 26289562, 1139062, 45562, 63923,
26308193, 45698, 1157692, 64192, 45563,
329189062, 328095562, 26289563, 1139062, 45562,
63923, 64193, 314973698, 1156882, 63382,
957951563, 1139062, 45562, 328095563, 959045062,
957951562, 63923, 610942, 45563, 328095562,
26289563, 45562, 592312, 63923, 610132,
957951563, 45562, 328095563, 957951562, 958498312,
63923, 63922, 629901698, 45698, 610942,
26307787, 1157287, 27401287, 63787, 26289563,
656145563, 45563, 656692312, 592312, 27383062,
26289562, 656145562, 45562, 63923, 64193,
63922, 26854537, 610537, 26289563, 1157692,
64192, 656145563, 45563, 26289562, 26836312,
656692312, 656145562, 592312, 45562, 63923,
26308192, 1704037, 610537, 45563, 26289563,
328642312, 45562, 26289562, 592312, 26836312,
63923, 610942, 14279287, 13185787, 957951563,
328095563, 45562, 959591812, 328642312, 957951562,
328095562, 63923, 64193, 27948442, 26854942,
1157287, 63787, 26289563, 45563, 985835812,
328642312, 26836312, 26289562, 1139062, 45562,
63923, 63383, 1157692, 64192, 13732537,
14826037, 328095563, 957951563, 45562, 1139062,
328095562, 328642312, 958498312, 354886312, 63923,
63922, 26854942, 26289563, 45563, 26836312,
26289562, 592312, 45562, 63923, 64193,
63922, 26289563, 63382, 64192, 45563,
26836312, 26289562, 1139062, 45562, 63923,
45698, 64192, 328642312, 26289563, 45563,
1139062, 45562, 63923, 314973698, 610132,
45562, 328095563, 957951563, 958498312, 959591812,
63923, 26308193, 1704442, 610942, 45563,
26289563, 329735812, 328642312, 45562, 592312,
63923, 64193, 63382, 1156882, 957951563,
328095563, 45562, 1139062, 959591812, 957951562,
63923, 45698, 64193, 63922, 26854942,
26307787, 63787, 64192, 26289563, 328642312,
45563, 26836312, 26289562, 1139062, 45562,
63923, 26308193, 63922, 610537, 610942,
26308192, 26289563, 45563, 328642312, 26289562,
45562, 26836312, 592312, 63923, 45698,
64192, 13459162, 45563, 14534437, 13440937,
1139062, 45562, 63923, 45698, 15099817,
63787, 13167563, 1139062, 45562, 13987687,
39684937, 63923, 610942, 315247072, 45563,
13440937, 592312, 45562, 63923, 13459567,
610537, 13167563, 45562, 13440937, 13987687,
63923, 857349563, 454941563, 45563, 63923,
63923, 63923, 45563, 63923, 64201,
63923, 630995062, 629901562, 454941563, 45563,
1139062, 45562, 63923, 629901562, 630995062,
45563, 1139062, 45562, 63923, 27383062,
629901562, 64201, 657239062, 45562, 63923,
1156882, 63382, 857349563, 454941563, 45563,
858443062, 857349562, 456035062, 454941562, 1139062,
45562, 63923, 1157287, 63787, 454941563,
45563, 1139062, 45562, 63923, 1885882,
792382, 63923, 1886287, 792787, 63923,
427882, 1521382, 63923, 428287, 1521787,
63923, 1157287, 63787, 45563, 1139062,
45562, 63923, 629901694, 45694, 64201,
657239062, 45562, 63923, 63383, 857349563,
454941563, 45563, 63923, 63788, 454941563,
45563, 63923, 857349563, 454941563, 45563,
63923, 454941563, 45563, 63923, 63383,
45563, 63923, 64193, 64201, 63923,
45563, 63923, 64201, 63923, 63788,
1156882, 63382, 454941563, 630995062, 629901562,
45563, 456035062, 454941562, 1139062, 45562,
63923, 610132, 629901562, 454941563, 45563,
857896312, 455488312, 45562, 592312, 63923,
63383, 1157287, 63787, 630995062, 629901562,
454941563, 45563, 1139062, 45562, 63923,
610537, 629901562, 454941563, 45563, 45562,
592312, 63923, 63383, 1157287, 63787,
629901562, 630995062, 45563, 1139062, 45562,
63923, 64193, 1156882, 63382, 27383062,
629901562, 64201, 657239062, 45562, 63923,
610537, 629901562, 45563, 45562, 592312,
63923, 26854132, 629901562, 64201, 45562,
328642312, 63923, 629901563, 454941563, 45563,
63923, 63923, 63923, 656145563, 45563,
63923, 656145563, 45563, 63923, 454941563,
45563, 63923, 1157422, 63922, 857349563,
454941563, 45563, 858443062, 857349562, 456035062,
454941562, 1139062, 45562, 63923, 1157422,
63922, 629901563, 454941563, 630995062, 629901562,
45563, 456035062, 454941562, 1139062, 45562,
63923, 610672, 629901562, 454941563, 45563,
857896312, 455488312, 45562, 592312, 63923,
1156882, 63382, 1157287, 63787, 629901563,
454941563, 630995062, 629901562, 45563, 456035062,
454941562, 1139062, 45562, 63923, 611347,
63787, 63923, 1704847, 63787, 63923,
1158097, 64597, 1157287, 63787, 629901563,
45563, 630995062, 629901562, 1139062, 45562,
63923, 1158097, 64597, 1157287, 63787,
629901563, 45563, 630995062, 629901562, 1139062,
45562, 63923, 611347, 63787, 454941563,
45563, 456581812, 455488312, 592312, 45562,
63923, 63383, 63788, 629901563, 454941563,
45563, 63923, 629901563, 454941563, 45563,
63923, 63788, 454941563, 45563, 63923,
63383, 454941563, 45563, 63923, 63383,
1157422, 63922, 1156882, 63382, 857349563,
454941563, 45563, 858443062, 857349562, 456035062,
454941562, 1139062, 45562, 63923, 610672,
63382, 857349563, 454941563, 45563, 857896312,
857349562, 455488312, 454941562, 592312, 45562,
63923, 1157422, 63922, 63788, 454941563,
1157287, 63787, 45563, 456035062, 454941562,
1139062, 45562, 63923, 610672, 63787,
454941563, 45563, 857896312, 455488312, 592312,
45562, 63923, 1157422, 63922, 64598,
63788, 1158097, 64597, 1157287, 63787,
629901563, 454941563, 630995062, 629901562, 45563,
456035062, 454941562, 1139062, 45562, 63923,
63922, 611347, 610537, 629901563, 454941563,
629901562, 630448312, 45563, 454941562, 455488312,
45562, 592312, 63923, 63788, 610672,
64597, 454941563, 610537, 629901562, 45563,
454941562, 455488312, 45562, 592312, 63923,
64598, 610672, 63787, 611347, 629901562,
454941563, 45563, 456581812, 455488312, 592312,
45562, 63923, 27401287, 26307787, 1157287,
63787, 64201, 629901562, 27383062, 657239062,
45562, 63923, 13732537, 63787, 64201,
985835812, 328642312, 657239062, 45562, 63923,
26307787, 63787, 64201, 27383062, 45562,
63923, 64201, 63923, 610537, 64201,
63923, 629901698, 45698, 64201, 27401287,
26307787, 1157287, 63787, 629901562, 27383062,
657239062, 45562, 63923, 26307787, 63787,
64201, 27383062, 985835812, 328642312, 45562,
63923, 39976537, 13732537, 64201, 355979812,
657239062, 45562, 328642312, 63923, 45698,
13732537, 64201, 63787, 13714312, 328642312,
657239062, 45562, 63923, 63787, 64201,
821537437, 164343937, 657239062, 45562, 63923,
6898162, 64201, 657239062, 45562, 821537437,
164343937, 63923, 45698, 64201, 1157287,
63787, 328642312, 27383062, 45562, 63923,
64201, 657239062, 45562, 63923, 610537,
64201, 328642312, 45562, 63923, 629901700,
45700, 26307787, 64201, 27401287, 63787,
629901562, 27383062, 657239062, 45562, 63923,
316067200, 316067194, 26307787, 1157287, 63787,
64201, 341217562, 316067062, 27383062, 985835812,
328642312, 45562, 63923, 13732537, 629901700,
45700, 64201, 63787, 13714312, 328642312,
657239062, 45562, 63923, 158056444, 63787,
64201, 821537437, 164343937, 657239062, 45562,
63923, 316067194, 45700, 26307787, 64201,
63787, 341217562, 328642312, 27383062, 45562,
63923, 158056444, 64201, 821537437, 164343937,
63923, 158056450, 64201, 1150134187, 492940687,
63923, 158056444, 158056450, 610537, 64201,
787912312, 158056312, 1150134187, 164343937, 63923,
64193, 26307787, 27401287, 63787, 64201,
629901562, 27383062, 657239062, 45562, 63923,
64193, 13732537, 63787, 64201, 985835812,
328642312, 657239062, 45562, 63923, 64193,
26307787, 63787, 341217562, 64201, 27383062,
45562, 63923, 1157287, 26307787, 63787,
64201, 316067062, 341217562, 27383062, 45562,
63923, 13732537, 63787, 64201, 314973562,
13714312, 328642312, 45562, 63923, 610537,
64201, 1102840312, 472984312, 63923, 64193,
629901698, 45698, 629901700, 45700, 26307787,
64201, 27401287, 63787, 629901562, 27383062,
657239062, 45562, 63923, 45700, 1157287,
64201, 63787, 316067062, 328642312, 27383062,
45562, 63923, 314973700, 39976537, 64201,
13732537, 39958312, 45562, 958498312, 328642312,
63923, 45698, 316067200, 64201, 26307787,
1157287, 63787, 328642312, 341217562, 316067062,
27383062, 45562, 63923, 64193, 316067200,
316067194, 1157287, 63787, 316067062, 64201,
27383062, 985835812, 328642312, 45562, 63923,
64193, 629901694, 630995200, 14826037, 13732537,
644663812, 64201, 355979812, 657239062, 45562,
328642312, 63923, 64193, 45698, 629901700,
45700, 13732537, 64201, 63787, 13714312,
328642312, 657239062, 45562, 63923, 45698,
314973700, 64201, 13732537, 63787, 13714312,
314973562, 45562, 328642312, 63923, 158056444,
64193, 63787, 64201, 821537437, 164343937,
657239062, 45562, 63923, 45694, 64193,
6898162, 64201, 657239062, 45562, 492940687,
164343937, 63923, 158056444, 63787, 64201,
314973562, 492940687, 164343937, 45562, 63923,
314973694, 6898162, 64201, 1109127937, 45562,
328642312, 164343937, 63923, 64193, 45698,
316067194, 45700, 1157287, 64201, 63787,
316067062, 328642312, 27383062, 45562, 63923,
158056444, 610537, 64201, 472984312, 158056312,
164343937, 45562, };
static const int num_sitesym[] =
{ 0,
1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2, 1, 1, 1, 1, 2, 1, 1, 1, 1,
2, 1, 1, 1, 1, 2, 2, 2, 4, 2,
2, 4, 2, 2, 4, 2, 2, 4, 2, 2,
4, 2, 2, 4, 2, 2, 4, 2, 2, 4,
2, 2, 4, 2, 2, 2, 1, 1, 2, 1,
1, 2, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 4, 2, 4, 2, 4, 2, 4,
2, 4, 2, 4, 2, 4, 2, 4, 2, 4,
2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
1, 1, 1, 1, 4, 2, 2, 2, 2, 2,
2, 1, 1, 1, 1, 1, 1, 1, 1, 4,
2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
1, 1, 1, 1, 4, 2, 2, 2, 2, 2,
4, 2, 2, 2, 2, 2, 4, 2, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 4, 2, 2, 2, 2, 2, 2, 4,
2, 2, 2, 2, 2, 2, 4, 2, 2, 2,
2, 2, 2, 4, 2, 2, 2, 2, 2, 2,
4, 2, 2, 2, 2, 2, 2, 4, 2, 2,
2, 2, 2, 2, 4, 2, 2, 2, 2, 2,
2, 4, 2, 2, 2, 2, 2, 2, 4, 2,
2, 2, 2, 2, 2, 4, 2, 2, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 2,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 4, 8, 4, 4, 4, 4, 4, 8, 4,
4, 4, 4, 4, 8, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 4, 8, 4, 4, 4, 4, 4, 8, 4,
4, 4, 4, 4, 8, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 4, 8, 4, 4, 4, 4, 4, 8, 4,
4, 4, 4, 4, 8, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 4, 8, 4, 4, 4, 4, 4, 4, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 1, 1, 1, 1, 1, 1, 1, 1, 4,
2, 2, 2, 2, 4, 2, 2, 2, 2, 4,
2, 2, 2, 2, 4, 2, 2, 4, 2, 2,
4, 2, 2, 4, 8, 4, 4, 8, 4, 4,
8, 4, 4, 8, 4, 4, 4, 4, 4, 4,
4, 2, 2, 2, 2, 8, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2, 2, 8, 4, 4,
4, 4, 4, 4, 4, 2, 2, 2, 2, 16,
8, 8, 8, 8, 8, 8, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 2, 2, 2,
2, 8, 4, 4, 4, 4, 2, 2, 2, 2,
1, 1, 1, 1, 4, 2, 2, 2, 2, 1,
1, 1, 1, 4, 2, 2, 2, 2, 1, 1,
1, 1, 4, 2, 2, 4, 2, 2, 4, 2,
2, 4, 2, 2, 4, 2, 2, 4, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 2,
4, 2, 2, 2, 2, 4, 2, 2, 2, 4,
2, 2, 2, 4, 2, 2, 2, 4, 2, 2,
2, 4, 2, 2, 2, 4, 2, 2, 2, 4,
4, 4, 4, 4, 4, 4, 2, 2, 4, 2,
2, 4, 2, 2, 4, 2, 2, 4, 2, 2,
4, 2, 2, 4, 2, 4, 2, 4, 2, 4,
2, 4, 2, 4, 2, 4, 2, 2, 4, 2,
2, 4, 2, 2, 4, 4, 4, 4, 4, 4,
4, 2, 2, 4, 2, 2, 4, 2, 2, 8,
4, 4, 4, 2, 2, 8, 4, 4, 4, 2,
2, 8, 4, 4, 4, 2, 2, 8, 4, 8,
4, 8, 4, 8, 4, 8, 4, 8, 4, 8,
4, 4, 4, 8, 4, 4, 4, 8, 4, 4,
4, 8, 4, 4, 4, 2, 2, 8, 4, 4,
4, 2, 2, 8, 4, 4, 4, 2, 2, 8,
4, 4, 4, 2, 2, 8, 4, 4, 4, 2,
2, 8, 4, 4, 4, 2, 2, 8, 4, 4,
4, 8, 4, 4, 4, 8, 4, 4, 4, 8,
4, 4, 4, 8, 4, 4, 4, 8, 4, 4,
4, 8, 4, 4, 8, 4, 4, 8, 4, 4,
8, 4, 4, 8, 4, 4, 8, 4, 4, 8,
4, 8, 4, 8, 4, 8, 4, 8, 4, 8,
4, 16, 8, 8, 8, 4, 16, 8, 8, 8,
4, 16, 8, 8, 8, 4, 16, 8, 16, 8,
16, 8, 8, 4, 4, 2, 2, 8, 4, 4,
2, 2, 8, 4, 4, 2, 2, 8, 4, 4,
8, 4, 4, 8, 4, 4, 8, 4, 4, 8,
4, 4, 8, 4, 4, 8, 4, 4, 8, 4,
4, 8, 4, 4, 8, 4, 4, 4, 4, 4,
4, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 2, 2, 8, 4, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2, 2, 8, 4, 4,
4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
2, 2, 2, 2, 2, 8, 4, 4, 4, 4,
4, 4, 4, 4, 4, 2, 2, 2, 2, 2,
2, 2, 2, 8, 4, 4, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2, 2, 2, 2, 2,
2, 8, 4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 2, 2, 8, 4, 4, 4, 4, 4,
4, 4, 4, 2, 2, 2, 2, 8, 4, 4,
4, 4, 4, 4, 4, 4, 2, 2, 2, 2,
8, 4, 4, 4, 4, 4, 4, 4, 4, 2,
2, 2, 2, 8, 4, 4, 4, 4, 4, 4,
4, 4, 2, 2, 2, 2, 8, 4, 4, 4,
4, 4, 4, 4, 4, 2, 2, 2, 2, 4,
2, 2, 2, 2, 8, 4, 4, 4, 4, 4,
2, 2, 2, 2, 2, 2, 8, 4, 4, 4,
4, 4, 2, 2, 2, 2, 2, 2, 8, 4,
4, 4, 4, 4, 2, 2, 2, 2, 2, 2,
8, 4, 4, 4, 4, 4, 2, 2, 2, 2,
2, 2, 8, 4, 4, 4, 4, 4, 2, 2,
2, 2, 2, 2, 8, 4, 4, 4, 4, 4,
2, 2, 2, 2, 2, 2, 8, 4, 4, 4,
4, 8, 4, 4, 4, 4, 8, 4, 4, 4,
4, 8, 4, 4, 4, 4, 8, 4, 4, 4,
4, 8, 4, 4, 4, 4, 8, 4, 4, 4,
4, 2, 2, 2, 2, 8, 4, 4, 4, 4,
2, 2, 2, 2, 8, 4, 4, 4, 4, 2,
2, 2, 2, 8, 4, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 2, 2, 2,
2, 8, 4, 4, 4, 4, 2, 2, 2, 2,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 4, 8, 4, 4, 4, 4, 4, 8, 4,
4, 4, 4, 4, 8, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 8, 4, 4, 4,
4, 2, 2, 2, 2, 8, 4, 4, 4, 4,
2, 2, 2, 2, 8, 4, 4, 4, 4, 2,
2, 2, 2, 8, 4, 4, 4, 4, 8, 4,
4, 4, 4, 8, 4, 4, 4, 4, 8, 4,
4, 4, 4, 8, 4, 4, 4, 4, 8, 4,
4, 4, 4, 8, 4, 4, 4, 4, 8, 4,
4, 4, 4, 8, 4, 4, 4, 4, 8, 4,
4, 4, 2, 2, 2, 2, 8, 4, 4, 4,
2, 2, 2, 2, 8, 4, 4, 4, 2, 2,
2, 2, 8, 4, 4, 4, 4, 2, 2, 8,
4, 4, 4, 4, 2, 2, 8, 4, 4, 4,
4, 2, 2, 8, 4, 4, 4, 4, 2, 2,
8, 4, 4, 4, 4, 2, 2, 8, 4, 4,
4, 4, 2, 2, 8, 4, 4, 4, 8, 4,
4, 4, 8, 4, 4, 4, 8, 4, 4, 4,
8, 4, 4, 4, 8, 4, 4, 4, 8, 4,
4, 8, 4, 4, 8, 4, 4, 4, 8, 4,
4, 4, 8, 4, 4, 4, 8, 4, 4, 4,
8, 4, 4, 4, 8, 4, 4, 4, 16, 8,
8, 8, 8, 4, 4, 4, 16, 8, 8, 8,
8, 4, 4, 4, 16, 8, 8, 8, 8, 4,
4, 4, 16, 8, 8, 8, 8, 4, 4, 4,
16, 8, 8, 8, 8, 4, 4, 4, 16, 8,
8, 8, 8, 4, 4, 4, 16, 8, 8, 8,
8, 4, 4, 16, 8, 8, 8, 8, 4, 4,
16, 8, 8, 8, 8, 4, 4, 16, 8, 8,
8, 8, 4, 4, 16, 8, 8, 8, 8, 4,
4, 16, 8, 8, 8, 8, 4, 4, 16, 8,
8, 8, 8, 8, 4, 4, 4, 4, 4, 4,
4, 4, 2, 2, 2, 2, 16, 8, 8, 8,
8, 8, 4, 4, 4, 4, 4, 4, 4, 4,
2, 2, 2, 2, 16, 8, 8, 8, 8, 8,
4, 4, 4, 4, 4, 4, 4, 4, 2, 2,
2, 2, 16, 8, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 16, 8, 8, 8, 8,
8, 8, 4, 4, 4, 4, 4, 4, 16, 8,
8, 8, 8, 8, 8, 4, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 4, 16, 8, 8, 8,
8, 8, 8, 8, 4, 4, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 4, 16, 8, 8, 8,
8, 8, 8, 8, 4, 4, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 4, 16, 8, 8, 8,
8, 8, 8, 8, 4, 4, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 8, 8, 4, 4,
16, 8, 8, 8, 8, 8, 8, 4, 4, 16,
8, 8, 8, 8, 8, 8, 4, 4, 16, 8,
8, 8, 8, 8, 8, 4, 4, 16, 8, 8,
8, 8, 8, 8, 4, 4, 16, 8, 8, 8,
8, 8, 8, 4, 4, 16, 8, 8, 8, 8,
8, 8, 4, 4, 16, 8, 8, 8, 8, 8,
8, 4, 4, 16, 8, 8, 8, 8, 8, 8,
4, 4, 16, 8, 8, 8, 8, 8, 8, 4,
4, 16, 8, 8, 8, 8, 8, 8, 4, 4,
16, 8, 8, 8, 8, 8, 8, 4, 4, 32,
16, 16, 16, 16, 16, 16, 8, 8, 8, 8,
8, 8, 8, 4, 4, 32, 16, 16, 16, 16,
16, 8, 8, 32, 16, 16, 16, 16, 16, 8,
8, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 4, 2, 2, 2, 2, 16, 8, 8, 8,
8, 8, 8, 4, 4, 4, 4, 16, 8, 8,
8, 8, 8, 8, 4, 4, 4, 4, 16, 8,
8, 8, 8, 8, 8, 4, 4, 4, 4, 16,
8, 8, 8, 8, 8, 16, 8, 8, 8, 8,
8, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 16, 8, 8, 8, 8, 4, 4, 4, 4,
4, 4, 2, 1, 1, 4, 4, 2, 2, 2,
4, 8, 4, 2, 8, 4, 4, 2, 2, 2,
1, 1, 1, 1, 8, 4, 4, 2, 2, 2,
2, 8, 4, 4, 4, 2, 2, 2, 2, 1,
1, 1, 1, 8, 4, 4, 4, 4, 2, 2,
2, 2, 2, 2, 8, 4, 4, 4, 2, 2,
2, 8, 4, 4, 4, 2, 2, 2, 8, 4,
4, 4, 4, 2, 2, 8, 4, 4, 4, 4,
2, 2, 16, 8, 8, 8, 4, 4, 4, 2,
2, 16, 8, 8, 8, 4, 4, 16, 8, 8,
8, 4, 4, 8, 4, 4, 4, 4, 4, 4,
4, 2, 2, 2, 2, 1, 1, 1, 1, 8,
4, 4, 4, 2, 2, 2, 8, 4, 4, 4,
8, 4, 8, 4, 4, 4, 4, 4, 4, 4,
4, 4, 2, 2, 2, 2, 2, 2, 8, 4,
4, 4, 4, 2, 2, 8, 4, 4, 4, 8,
4, 16, 8, 8, 8, 8, 8, 4, 4, 4,
2, 2, 16, 8, 8, 8, 8, 4, 4, 8,
4, 4, 4, 2, 1, 1, 8, 4, 2, 2,
8, 4, 4, 2, 2, 8, 4, 4, 2, 8,
4, 2, 2, 8, 4, 2, 8, 4, 4, 2,
2, 2, 8, 4, 4, 16, 8, 8, 4, 2,
16, 8, 4, 4, 16, 8, 4, 16, 8, 8,
4, 4, 4, 4, 4, 4, 2, 2, 2, 2,
1, 1, 1, 1, 8, 4, 4, 4, 4, 4,
4, 4, 2, 2, 2, 2, 2, 2, 8, 4,
4, 2, 2, 2, 8, 4, 4, 2, 2, 8,
4, 4, 4, 4, 2, 2, 2, 1, 1, 1,
1, 8, 4, 4, 4, 4, 4, 2, 2, 2,
2, 8, 4, 4, 4, 4, 2, 2, 2, 2,
8, 4, 4, 4, 4, 2, 2, 2, 2, 16,
8, 8, 8, 4, 4, 2, 2, 2, 2, 16,
8, 8, 8, 8, 4, 4, 4, 4, 16, 8,
8, 8, 8, 4, 4, 4, 2, 2, 16, 8,
8, 4, 4, 16, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 4, 2, 2, 2, 2,
1, 1, 1, 1, 16, 8, 8, 8, 8, 8,
4, 4, 4, 4, 2, 2, 2, 2, 16, 8,
8, 8, 8, 8, 4, 4, 4, 4, 2, 2,
2, 2, 16, 8, 8, 8, 8, 8, 4, 4,
4, 4, 2, 2, 2, 2, 16, 8, 8, 8,
8, 8, 4, 4, 4, 2, 2, 16, 8, 8,
8, 8, 8, 4, 4, 4, 2, 2, 16, 8,
8, 8, 4, 4, 4, 4, 2, 2, 2, 2,
16, 8, 8, 8, 4, 4, 4, 2, 2, 16,
8, 8, 8, 8, 4, 4, 4, 2, 2, 2,
16, 8, 8, 8, 8, 4, 4, 4, 2, 2,
2, 16, 8, 8, 8, 4, 4, 4, 16, 8,
8, 8, 4, 4, 4, 16, 8, 8, 8, 8,
4, 4, 4, 4, 4, 4, 4, 2, 2, 2,
2, 2, 2, 16, 8, 8, 8, 8, 8, 4,
4, 4, 4, 4, 4, 2, 2, 2, 2, 16,
8, 8, 8, 8, 8, 8, 4, 4, 4, 4,
16, 8, 8, 8, 8, 8, 8, 4, 4, 4,
4, 16, 8, 8, 8, 8, 8, 8, 4, 4,
4, 4, 4, 2, 2, 16, 8, 8, 8, 8,
8, 8, 4, 4, 4, 4, 4, 2, 2, 16,
8, 8, 8, 8, 4, 4, 4, 4, 16, 8,
8, 8, 4, 4, 4, 4, 4, 2, 2, 16,
8, 8, 8, 4, 4, 2, 2, 16, 8, 8,
8, 4, 4, 2, 2, 16, 8, 8, 8, 8,
4, 4, 4, 4, 4, 16, 8, 8, 8, 8,
4, 4, 4, 4, 4, 32, 16, 16, 16, 16,
8, 8, 8, 8, 8, 4, 4, 4, 2, 2,
32, 16, 16, 16, 16, 8, 8, 8, 8, 4,
4, 4, 4, 32, 16, 16, 16, 8, 8, 8,
4, 4, 32, 16, 16, 16, 8, 8, 8, 4,
4, 32, 16, 16, 16, 16, 8, 8, 32, 16,
16, 16, 16, 8, 8, 3, 1, 1, 1, 3,
3, 9, 3, 3, 1, 6, 3, 3, 2, 2,
1, 1, 18, 9, 9, 6, 3, 3, 6, 3,
3, 2, 1, 1, 6, 3, 3, 2, 2, 2,
1, 1, 1, 1, 1, 1, 6, 3, 3, 2,
2, 1, 1, 6, 3, 3, 6, 3, 3, 6,
3, 3, 6, 3, 3, 18, 9, 9, 6, 3,
3, 6, 3, 3, 2, 1, 1, 6, 3, 1,
1, 1, 6, 3, 2, 1, 6, 2, 2, 2,
6, 2, 2, 18, 9, 3, 6, 3, 1, 18,
6, 6, 2, 12, 6, 6, 6, 4, 3, 3,
2, 2, 2, 1, 1, 12, 6, 6, 4, 4,
2, 2, 2, 2, 12, 6, 6, 6, 3, 3,
2, 2, 1, 1, 12, 6, 6, 4, 4, 2,
2, 36, 18, 18, 18, 9, 9, 6, 3, 3,
12, 6, 6, 6, 3, 3, 2, 1, 1, 36,
18, 18, 12, 6, 6, 12, 6, 6, 4, 2,
2, 6, 3, 2, 1, 6, 6, 6, 3, 3,
6, 3, 3, 6, 2, 2, 6, 3, 3, 2,
2, 2, 1, 1, 1, 1, 1, 1, 12, 6,
6, 6, 4, 3, 3, 2, 2, 2, 1, 1,
12, 6, 6, 4, 4, 2, 2, 2, 2, 12,
6, 6, 6, 6, 6, 4, 3, 3, 2, 2,
2, 1, 1, 12, 6, 6, 12, 6, 6, 12,
6, 6, 6, 6, 6, 6, 3, 3, 3, 3,
12, 6, 6, 6, 6, 6, 6, 3, 3, 3,
3, 12, 6, 6, 4, 4, 2, 2, 2, 2,
12, 6, 6, 3, 2, 1, 12, 6, 4, 2,
12, 6, 4, 2, 12, 6, 2, 2, 12, 6,
6, 6, 3, 3, 2, 2, 2, 1, 1, 1,
1, 1, 1, 12, 6, 6, 4, 4, 4, 2,
2, 2, 2, 2, 2, 12, 6, 6, 6, 4,
3, 3, 2, 2, 2, 1, 1, 12, 6, 6,
4, 4, 2, 2, 2, 2, 24, 12, 12, 12,
12, 6, 6, 6, 6, 6, 4, 3, 3, 2,
2, 2, 1, 1, 24, 12, 12, 12, 12, 8,
6, 6, 4, 4, 4, 2, 2, 24, 12, 12,
12, 8, 6, 6, 4, 4, 4, 2, 2, 24,
12, 12, 12, 6, 6, 4, 4, 2, 2, 2,
2, 12, 6, 6, 6, 6, 4, 3, 3, 1,
1, 48, 24, 24, 16, 4, 4, 4, 4, 24,
12, 12, 8, 6, 2, 12, 4, 24, 12, 8,
24, 12, 12, 8, 6, 6, 6, 6, 3, 3,
1, 1, 24, 12, 12, 8, 6, 4, 4, 2,
24, 12, 12, 8, 6, 4, 4, 2, 96, 48,
48, 32, 24, 24, 8, 4, 4, 96, 48, 32,
16, 16, 8, 8, 96, 48, 32, 16, 16, 8,
8, 48, 24, 16, 12, 12, 8, 6, 2, 24,
8, 4, 4, 48, 24, 16, 8, 8, 24, 12,
12, 12, 8, 6, 6, 3, 3, 1, 1, 24,
12, 12, 12, 12, 12, 8, 6, 6, 6, 4,
4, 2, 96, 48, 48, 48, 32, 24, 24, 8,
4, 4, 96, 48, 48, 32, 16, 16, 8, 8,
48, 24, 24, 24, 16, 12, 12, 8, 6, 2,
24, 12, 8, 4, 4, 24, 12, 8, 4, 4,
48, 24, 24, 24, 16, 12, 12, 8, 8, 24,
12, 12, 6, 6, 4, 3, 3, 1, 1, 96,
48, 24, 24, 16, 4, 4, 4, 4, 48, 24,
24, 12, 12, 8, 6, 2, 24, 12, 12, 12,
8, 6, 6, 6, 2, 96, 48, 48, 32, 24,
24, 8, 8, 48, 24, 16, 12, 12, 48, 24,
24, 24, 12, 12, 12, 8, 6, 6, 3, 3,
1, 1, 48, 24, 24, 16, 12, 12, 8, 6,
2, 48, 24, 24, 16, 12, 12, 8, 6, 2,
48, 24, 24, 16, 12, 12, 12, 8, 6, 6,
6, 2, 48, 24, 24, 24, 24, 12, 12, 8,
6, 4, 4, 2, 48, 24, 24, 24, 24, 12,
12, 8, 6, 4, 4, 2, 192, 96, 96, 48,
48, 48, 32, 24, 24, 8, 4, 4, 192, 96,
96, 64, 48, 48, 24, 24, 8, 8, 192, 96,
96, 48, 32, 16, 16, 8, 8, 192, 96, 96,
48, 32, 16, 16, 8, 8, 192, 96, 96, 64,
48, 32, 32, 16, 192, 96, 96, 64, 48, 32,
32, 16, 96, 48, 48, 48, 24, 24, 16, 12,
12, 8, 6, 2, 96, 48, 48, 32, 24, 24,
16, 16, };
int ssmdb_get_coordinate(int rot[3][3],
double trans[3],
const int index)
{
int i, rot_enc, trans_enc;
int rows[3], trans_int[3];
/* Orbits are compressed using ternary numerical system for */
/* rotation and base-24 system for translation. Elements of the first coloum */
/* of rotation matrix can be one of {-2,-1,0,1,2} and the other elements can */
/* be one of {-1,0,1}. Translation can have one of */
/* {0,2,3,4,6,8,9,10,12,14,15,16,18,20,21,22} */
/* divided by 24. Therefore 45^3 * 24^3 = 1259712000 different values can */
/* enough map Wyckoff positions. */
rot_enc = coordinates_first[index] % 91125; /* = 45**3 */
rows[0] = rot_enc / 2025; /* = 45**2 */
rows[1] = (rot_enc % 2025) / 45;
rows[2] = rot_enc % 45;
for (i = 0; i < 3; i++) {
rot[i][0] = rows[i] / 9 - 2;
rot[i][1] = (rows[i] % 9) / 3 - 1;
rot[i][2] = rows[i] % 3 - 1;
}
trans_enc = coordinates_first[index] / 91125; /* = 45**3 */
trans_int[0] = trans_enc / 576;
trans_int[1] = (trans_enc % 576) / 24 ;
trans_int[2] = trans_enc % 24 ;
for (i = 0; i < 3; i++) {
trans[i] = ((double) trans_int[i]) / 24;
}
return num_sitesym[index];
}
void ssmdb_get_wyckoff_indices(int indices[2], const int index)
{
indices[0] = position_wyckoff[index];
indices[1] = position_wyckoff[index + 1] - position_wyckoff[index];
}