diff --git a/devmods/3d-field-quotients.txt b/devmods/3d-field-quotients.txt new file mode 100644 index 00000000..986eacc4 --- /dev/null +++ b/devmods/3d-field-quotients.txt @@ -0,0 +1,80 @@ +336h: D29C2418 p=3, f=3, n=10, q=5,1 +336h: 7769A558 p=5, f=25, n=650, q=50 +336h: 640FB3D4 p=7, f=7, n=28, q=14,1 +336h: C734F868 p=7, f=7, n=28, q=14,1 +336h: E3F6B7BC p=7, f=49, n=672, q=336,28,16 +336h: 885F1184 p=7, f=49, n=672, q=336,42,28,16 + +344h: B23AF1F4 p=3, f=3, n=5, q=1 +344h: 4F9920E0 p=3, f=3, n=5, q=1 +344h: 6DBBAAA0 p=3, f=3, n=10, q=5,1 +344h: F81E97B0 p=3, f=3, n=10, q=5,1 +344h: F790CEA4 p=3, f=3, n=30, q=6,3 +344h: C95EC8B8 p=3, f=3, n=30, q=3 +344h: 16518434 p=3, f=9, n=16, q=8,4,2 +344h: 558C8ED0 p=5, f=5, n=600, q=20,25 +344h: 1EC39944 p=5, f=5, n=600, q=20,25 +344h: AF042EA8 p=5, f=25, n=2400, q=1200,600,60,40 +344h: EC29DCEC p=5, f=25, n=2600, q=1300,650,100 +344h: D26948E0 p=5, f=25, n=2600, q=1300,650,100 + +345h: F978E264 p=3, f=3, n=30, q=6,3 +345h: 02ADCAA4 p=3, f=3, n=30, q=6,3 +345h: 7EFE8D98 p=5, f=25, n=650, q=50,25 +345h: F447F75C p=11, f=11, n=55, q=5 +345h: 58A698B8 p=19, f=19, n=285, q=15 +345h: 6FA03030 p=19, f=19, n=285, q=57,15 + +353h: 1566EBAC p=5, f=25, n=130, q=10 +353h: 5A2E2B88 p=11, f=11, n=11, q=1 + +354h: 58A8E850 p=5, f=5, n=2, q=1 +354h: 363D8DA4 p=11, f=11, n=22, q=11,2 +354h: 9CD5E744 p=11, f=11, n=22, q=11,2 +354h: F04BA28C p=19, f=19, n=114, q=57,6 + +355h: AF448B14 p=5, f=5, n=1 +355h: F42F2904 p=5, f=5, n=1 +355h: 47F0C740 p=5, f=5, n=120, q=6,4 +355h: 7BAFB45C p=11, f=11, n=11, q=1 +355h: 6453A3FC p=11, f=11, n=11, q=1 + +435h: EB201050 p=5, f=25, n=650, q=25 +435h: 65CE0C00 p=11, f=11, n=55, q=11,5 +435h: 5641E95C p=11, f=11, n=55, q=11,5 + +436h: 235F7508 p=2, f=4, n=2, q=1 +436h: C02F2A80 p=2, f=4, n=2, q=1 +436h: DFC6B8C0 p=2, f=4, n=8, q=4,2 +436h: 4D3C8B14 p=3, f=9, n=8, q=1 +436h: FF82A214 p=5, f=25, n=650, q=50,25 +436h: 4546E270 p=5, f=25, n=650, q=25 +436h: C4884090 p=7, f=7, n=28, q=14,4,2 +436h: 5230B364 p=7, f=7, n=28, q=14,2 +436h: 2D051038 p=7, f=7, n=14, q=7,2 +436h: F0997060 p=7, f=7, n=14, q=7,2 +436h: 1D1227CC p=7, f=49, n=672, q=336,112,42,14,12 +436h: B2B4B3D4 p=7, f=49, n=672, q=336,14,12 +436h: 6C29B2A4 p=13, f=13, n=91, q=13,7 +436h: 06F4054C p=13, f=13, n=91, q=13,7 +436h: DE4912E0 p=13, f=13, n=182, q=91,13,7 +436h: 417466F0 p=13, f=13, n=182, q=91,13,7 + +534h: 0C62E214 p=5, f=25, n=130, q=10 +534h: 72414D0C p=5, f=25, n=260, q=10 +534h: 831E2D74 p=11, f=11, n=22, q=2 +534h: 5FC4CFF0 p=11, f=11, n=22, q=2 + +535h: DCC3CACE p=5, f=5, n=1 +535h: F78E1C56 p=5, f=5, n=1 +535h: 9EF7A9C4 p=5, f=5, n=120, q=10,8,6,4 +535h: 5254DA16 p=19, f=19, n=57, q=3 +535h: A5C8752E p=19, f=19, n=57, q=3 + +536h: BB5AEE10 p=5, f=5, n=120, q=8,6,4 +536h: 61385498 p=5, f=5, n=2, q=1 +536h: B009EB44 p=5, f=5, n=2, q=1 +536h: 3BA5C5A4 p=5, f=25, n=130, q=10 +536h: 9FDE7B38 p=5, f=25, n=260, q=130,10 +536h: 885F1184 p=7, f=49, n=672, q=336,28,16 + diff --git a/fieldpattern.cpp b/fieldpattern.cpp index b57f4ccf..513785c4 100644 --- a/fieldpattern.cpp +++ b/fieldpattern.cpp @@ -1281,7 +1281,13 @@ EX struct fpattern& getcurrfp() { return current_quotient_field; if(geometry == gSpace535) { // 120 cells, hash = 9EF7A9C4 - static fpattern fp(5); + static fpattern fp(0); + if(use_rule_fp) { + fp.Prime = 5; fp.force_hash = 0xDCC3CACEu; fp.solve(); + } + else { + fp.Prime = 5; fp.force_hash = 0x9EF7A9C4u; fp.solve(); + } return fp; } if(geometry == gSpace534) { @@ -1291,7 +1297,7 @@ EX struct fpattern& getcurrfp() { // fp.Prime = 5; fp.force_hash = 0x72414D0C; fp.solve(); if(use_rule_fp) { - fp.Prime = 11; fp.force_hash = 0x5FC4CFF0; fp.solve(); + fp.Prime = 11; fp.force_hash = 0x5FC4CFF0u; fp.solve(); } else { shstream ins(STR("\x05\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\xfc\xff\xff\xff\x01\x00\x00\x00\x04\x00\x00\x00\xfc\xff\xff\xff\x04\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x01\x00\x00\x00\xfe\xff\xff\xff\x04\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x01\x00\x00\x00\xfd\xff\xff\xff\x00\x00\x00\x00\x02\x00\x00\x00\xfd\xff\xff\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); @@ -1307,7 +1313,7 @@ EX struct fpattern& getcurrfp() { // what is 0x72414D0C?? if(use_rule_fp) { - fp.Prime = 11; fp.force_hash = 0x65CE0C00; fp.solve(); + fp.Prime = 11; fp.force_hash = 0x65CE0C00u; fp.solve(); } else { shstream ins(STR("\x05\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xfc\xff\xff\xff\x04\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\xff\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\xfd\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\xfd\xff\xff\xff\x00\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); @@ -1317,20 +1323,28 @@ EX struct fpattern& getcurrfp() { } if(geometry == gSpace436) { static fpattern fp(0); - // FF82A214 - shstream ins(STR("\x05\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\xfd\xff\xff\xff\x00\x00\x00\x00\xfe\xff\xff\xff\xfd\xff\xff\xff\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\xfd\xff\xff\xff\x00\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); - hread_fpattern(ins, fp); + if(fp.Prime) return fp; + if(use_rule_fp) { + fp.Prime = 2; fp.force_hash = 0x235F7508u; fp.solve(); + } + else { + // FF82A214 + shstream ins(STR("\x05\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\xfd\xff\xff\xff\x00\x00\x00\x00\xfe\xff\xff\xff\xfd\xff\xff\xff\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\xfd\xff\xff\xff\x00\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); + hread_fpattern(ins, fp); + } return fp; } if(geometry == gSpace336) { - // 672 cells in E3F6B7BC - // 672 cells in 885F1184 - // 9408 cells in C4089F34 static fpattern fp(0); if(fp.Prime) return fp; - // fp.Prime = 7; fp.force_hash = 0xE3F6B7BCu; fp.solve(); - shstream ins(STR("\x07\x00\x00\x00\x03\x00\x00\x00\xfa\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\xfe\xff\xff\xff\xfb\xff\xff\xff\xfc\xff\xff\xff\x03\x00\x00\x00\xfb\xff\xff\xff\xfd\xff\xff\xff\xfb\xff\xff\xff\x01\x00\x00\x00\xfd\xff\xff\xff\xfe\xff\xff\xff\xfd\xff\xff\xff\x03\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xff\xff\xfb\xff\xff\xff\x00\x00\x00\x00\xfa\xff\xff\xff\x02\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\xff\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); - hread_fpattern(ins, fp); + if(use_rule_fp) { + fp.Prime = 3; fp.force_hash = 0xD29C2418u; fp.solve(); + } + else { + // fp.Prime = 7; fp.force_hash = 0xE3F6B7BCu; fp.solve(); + shstream ins(STR("\x07\x00\x00\x00\x03\x00\x00\x00\xfa\xff\xff\xff\x02\x00\x00\x00\x03\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\xfe\xff\xff\xff\xfb\xff\xff\xff\xfc\xff\xff\xff\x03\x00\x00\x00\xfb\xff\xff\xff\xfd\xff\xff\xff\xfb\xff\xff\xff\x01\x00\x00\x00\xfd\xff\xff\xff\xfe\xff\xff\xff\xfd\xff\xff\xff\x03\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xff\xff\xfb\xff\xff\xff\x00\x00\x00\x00\xfa\xff\xff\xff\x02\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\xff\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00")); + hread_fpattern(ins, fp); + } return fp; } if(geometry == gSpace344) { @@ -1340,7 +1354,12 @@ EX struct fpattern& getcurrfp() { // 2600 cells in EC29DCEC static fpattern fp(0); if(fp.Prime) return fp; - fp.Prime = 5; fp.force_hash = 0x558C8ED0u; fp.solve(); + if(use_rule_fp) { + fp.Prime = 3; fp.force_hash = 0xB23AF1F4u; fp.solve(); + } + else { + fp.Prime = 5; fp.force_hash = 0x558C8ED0u; fp.solve(); + } return fp; // 4900 cells in CDCC7860 (7) } @@ -1349,7 +1368,12 @@ EX struct fpattern& getcurrfp() { if(fp.Prime) return fp; // 130 cells in 3BA5C5A4 // 260 cells in 9FDE7B38 - fp.Prime = 5; fp.force_hash = 0x9FDE7B38u; fp.solve(); + if(use_rule_fp) { + fp.Prime = 5; fp.force_hash = 0x61385498u; fp.solve(); + } + else { + fp.Prime = 5; fp.force_hash = 0x9FDE7B38u; fp.solve(); + } return fp; } if(geometry == gSpace345) { @@ -1358,7 +1382,12 @@ EX struct fpattern& getcurrfp() { // 30 cells in 02ADCAA4 (3^2) // 650 cells in 7EFE8D98 (5^2) // 55 cells in F447F75C (11) - fp.Prime = 11; fp.force_hash = 0xF447F75Cu; fp.solve(); + if(use_rule_fp) { + fp.Prime = 3; fp.force_hash = 0xF978E264u; fp.solve(); + } + else { + fp.Prime = 11; fp.force_hash = 0xF447F75Cu; fp.solve(); + } return fp; } if(geometry == gSpace353) { @@ -1371,8 +1400,8 @@ EX struct fpattern& getcurrfp() { } if(geometry == gSpace354) { static fpattern fp(0); - if(fp.Prime) return fp; - fp.Prime = 11; fp.force_hash = 0x363D8DA4u; fp.solve(); + // fp.Prime = 11; fp.force_hash = 0x363D8DA4u; fp.solve(); + fp.Prime = 5; fp.force_hash = 0x58A8E850u; fp.solve(); return fp; } if(geometry == gCubeTiling) {