aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/solinas32_2e383m187_17limbs
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-13 02:11:27 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-13 02:11:27 -0500
commitc9f51b5a7cbc46ac8c104bbb2c09a974e9ec72a3 (patch)
tree98227ca8130e922d4bacd9edf7b9ff0513bb72de /src/Specific/solinas32_2e383m187_17limbs
parent5d8503a2c300b586efccdf42d7dd6e78c2b240fc (diff)
Update display logs and c files
Diffstat (limited to 'src/Specific/solinas32_2e383m187_17limbs')
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/femul.c127
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/femulDisplay.log80
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesquare.c110
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.log80
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesub.c2
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/freeze.c4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.log4
8 files changed, 403 insertions, 6 deletions
diff --git a/src/Specific/solinas32_2e383m187_17limbs/femul.c b/src/Specific/solinas32_2e383m187_17limbs/femul.c
new file mode 100644
index 000000000..f85e83969
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/femul.c
@@ -0,0 +1,127 @@
+static void femul(uint32_t out[17], const uint32_t in1[17], const uint32_t in2[17]) {
+ { const uint32_t x34 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x66 = in2[16];
+ { const uint32_t x67 = in2[15];
+ { const uint32_t x65 = in2[14];
+ { const uint32_t x63 = in2[13];
+ { const uint32_t x61 = in2[12];
+ { const uint32_t x59 = in2[11];
+ { const uint32_t x57 = in2[10];
+ { const uint32_t x55 = in2[9];
+ { const uint32_t x53 = in2[8];
+ { const uint32_t x51 = in2[7];
+ { const uint32_t x49 = in2[6];
+ { const uint32_t x47 = in2[5];
+ { const uint32_t x45 = in2[4];
+ { const uint32_t x43 = in2[3];
+ { const uint32_t x41 = in2[2];
+ { const uint32_t x39 = in2[1];
+ { const uint32_t x37 = in2[0];
+ { uint64_t x68 = (((uint64_t)x5 * x66) + (((uint64_t)x7 * x67) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + ((0x2 * ((uint64_t)x13 * x61)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + (((uint64_t)x27 * x47) + ((0x2 * ((uint64_t)x29 * x45)) + (((uint64_t)x31 * x43) + ((0x2 * ((uint64_t)x33 * x41)) + (((uint64_t)x35 * x39) + ((uint64_t)x34 * x37)))))))))))))))));
+ { uint64_t x69 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + ((uint64_t)x35 * x37)))))))))))))))) + (0xbb * (0x2 * ((uint64_t)x34 * x66))));
+ { uint64_t x70 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + ((0x2 * ((uint64_t)x9 * x61)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + (((uint64_t)x23 * x47) + ((0x2 * ((uint64_t)x25 * x45)) + (((uint64_t)x27 * x43) + ((0x2 * ((uint64_t)x29 * x41)) + (((uint64_t)x31 * x39) + ((uint64_t)x33 * x37))))))))))))))) + (0xbb * (((uint64_t)x35 * x66) + ((uint64_t)x34 * x67))));
+ { uint64_t x71 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((uint64_t)x31 * x37)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x33 * x66)) + (((uint64_t)x35 * x67) + (0x2 * ((uint64_t)x34 * x65))))));
+ { uint64_t x72 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + ((0x2 * ((uint64_t)x21 * x45)) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (((uint64_t)x27 * x39) + ((uint64_t)x29 * x37))))))))))))) + (0xbb * (((uint64_t)x31 * x66) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + ((uint64_t)x34 * x63))))));
+ { uint64_t x73 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((uint64_t)x27 * x37)))))))))))) + (0xbb * ((0x2 * ((uint64_t)x29 * x66)) + (((uint64_t)x31 * x67) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (0x2 * ((uint64_t)x34 * x61))))))));
+ { uint64_t x74 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + (((uint64_t)x15 * x47) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((uint64_t)x25 * x37))))))))))) + (0xbb * (((uint64_t)x27 * x66) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((uint64_t)x34 * x59))))))));
+ { uint64_t x75 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((uint64_t)x23 * x37)))))))))) + (0xbb * ((0x2 * ((uint64_t)x25 * x66)) + (((uint64_t)x27 * x67) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + ((0x2 * ((uint64_t)x33 * x61)) + (((uint64_t)x35 * x59) + (0x2 * ((uint64_t)x34 * x57))))))))));
+ { uint64_t x76 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + ((0x2 * ((uint64_t)x13 * x45)) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + ((uint64_t)x21 * x37))))))))) + (0xbb * (((uint64_t)x23 * x66) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + ((uint64_t)x34 * x55))))))))));
+ { uint64_t x77 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((uint64_t)x19 * x37)))))))) + (0xbb * ((0x2 * ((uint64_t)x21 * x66)) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + ((0x2 * ((uint64_t)x29 * x61)) + (((uint64_t)x31 * x59) + ((0x2 * ((uint64_t)x33 * x57)) + (((uint64_t)x35 * x55) + (0x2 * ((uint64_t)x34 * x53))))))))))));
+ { uint64_t x78 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37))))))) + (0xbb * (((uint64_t)x19 * x66) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + ((uint64_t)x34 * x51))))))))))));
+ { uint64_t x79 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((uint64_t)x15 * x37)))))) + (0xbb * ((0x2 * ((uint64_t)x17 * x66)) + (((uint64_t)x19 * x67) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + ((0x2 * ((uint64_t)x33 * x53)) + (((uint64_t)x35 * x51) + (0x2 * ((uint64_t)x34 * x49))))))))))))));
+ { uint64_t x80 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((uint64_t)x13 * x37))))) + (0xbb * (((uint64_t)x15 * x66) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((uint64_t)x34 * x47))))))))))))));
+ { uint64_t x81 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((uint64_t)x11 * x37)))) + (0xbb * ((0x2 * ((uint64_t)x13 * x66)) + (((uint64_t)x15 * x67) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + ((0x2 * ((uint64_t)x21 * x61)) + (((uint64_t)x23 * x59) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + ((0x2 * ((uint64_t)x29 * x53)) + (((uint64_t)x31 * x51) + ((0x2 * ((uint64_t)x33 * x49)) + (((uint64_t)x35 * x47) + (0x2 * ((uint64_t)x34 * x45))))))))))))))));
+ { uint64_t x82 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + ((uint64_t)x9 * x37))) + (0xbb * (((uint64_t)x11 * x66) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + ((uint64_t)x34 * x43))))))))))))))));
+ { uint64_t x83 = ((((uint64_t)x5 * x39) + ((uint64_t)x7 * x37)) + (0xbb * ((0x2 * ((uint64_t)x9 * x66)) + (((uint64_t)x11 * x67) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + ((0x2 * ((uint64_t)x29 * x49)) + (((uint64_t)x31 * x47) + ((0x2 * ((uint64_t)x33 * x45)) + (((uint64_t)x35 * x43) + (0x2 * ((uint64_t)x34 * x41))))))))))))))))));
+ { uint64_t x84 = (((uint64_t)x5 * x37) + (0xbb * ((0x2 * ((uint64_t)x7 * x66)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((0x2 * ((uint64_t)x35 * x41)) + (0x2 * ((uint64_t)x34 * x39)))))))))))))))))));
+ { uint64_t x85 = (x84 >> 0x17);
+ { uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ { uint64_t x87 = (x85 + x83);
+ { uint64_t x88 = (x87 >> 0x17);
+ { uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
+ { uint64_t x90 = (x88 + x82);
+ { uint64_t x91 = (x90 >> 0x16);
+ { uint32_t x92 = ((uint32_t)x90 & 0x3fffff);
+ { uint64_t x93 = (x91 + x81);
+ { uint64_t x94 = (x93 >> 0x17);
+ { uint32_t x95 = ((uint32_t)x93 & 0x7fffff);
+ { uint64_t x96 = (x94 + x80);
+ { uint64_t x97 = (x96 >> 0x16);
+ { uint32_t x98 = ((uint32_t)x96 & 0x3fffff);
+ { uint64_t x99 = (x97 + x79);
+ { uint64_t x100 = (x99 >> 0x17);
+ { uint32_t x101 = ((uint32_t)x99 & 0x7fffff);
+ { uint64_t x102 = (x100 + x78);
+ { uint64_t x103 = (x102 >> 0x16);
+ { uint32_t x104 = ((uint32_t)x102 & 0x3fffff);
+ { uint64_t x105 = (x103 + x77);
+ { uint64_t x106 = (x105 >> 0x17);
+ { uint32_t x107 = ((uint32_t)x105 & 0x7fffff);
+ { uint64_t x108 = (x106 + x76);
+ { uint64_t x109 = (x108 >> 0x16);
+ { uint32_t x110 = ((uint32_t)x108 & 0x3fffff);
+ { uint64_t x111 = (x109 + x75);
+ { uint64_t x112 = (x111 >> 0x17);
+ { uint32_t x113 = ((uint32_t)x111 & 0x7fffff);
+ { uint64_t x114 = (x112 + x74);
+ { uint64_t x115 = (x114 >> 0x16);
+ { uint32_t x116 = ((uint32_t)x114 & 0x3fffff);
+ { uint64_t x117 = (x115 + x73);
+ { uint64_t x118 = (x117 >> 0x17);
+ { uint32_t x119 = ((uint32_t)x117 & 0x7fffff);
+ { uint64_t x120 = (x118 + x72);
+ { uint64_t x121 = (x120 >> 0x16);
+ { uint32_t x122 = ((uint32_t)x120 & 0x3fffff);
+ { uint64_t x123 = (x121 + x71);
+ { uint64_t x124 = (x123 >> 0x17);
+ { uint32_t x125 = ((uint32_t)x123 & 0x7fffff);
+ { uint64_t x126 = (x124 + x70);
+ { uint64_t x127 = (x126 >> 0x16);
+ { uint32_t x128 = ((uint32_t)x126 & 0x3fffff);
+ { uint64_t x129 = (x127 + x69);
+ { uint64_t x130 = (x129 >> 0x17);
+ { uint32_t x131 = ((uint32_t)x129 & 0x7fffff);
+ { uint64_t x132 = (x130 + x68);
+ { uint32_t x133 = (uint32_t) (x132 >> 0x16);
+ { uint32_t x134 = ((uint32_t)x132 & 0x3fffff);
+ { uint64_t x135 = (x86 + ((uint64_t)0xbb * x133));
+ { uint32_t x136 = (uint32_t) (x135 >> 0x17);
+ { uint32_t x137 = ((uint32_t)x135 & 0x7fffff);
+ { uint32_t x138 = (x136 + x89);
+ { uint32_t x139 = (x138 >> 0x17);
+ { uint32_t x140 = (x138 & 0x7fffff);
+ out[0] = x137;
+ out[1] = x140;
+ out[2] = (x139 + x92);
+ out[3] = x95;
+ out[4] = x98;
+ out[5] = x101;
+ out[6] = x104;
+ out[7] = x107;
+ out[8] = x110;
+ out[9] = x113;
+ out[10] = x116;
+ out[11] = x119;
+ out[12] = x122;
+ out[13] = x125;
+ out[14] = x128;
+ out[15] = x131;
+ out[16] = x134;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.log b/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.log
new file mode 100644
index 000000000..21c93a2e8
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.log
@@ -0,0 +1,80 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x34, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x66, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37))%core,
+ uint64_t x68 = (((uint64_t)x5 * x66) + (((uint64_t)x7 * x67) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + ((0x2 * ((uint64_t)x13 * x61)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + (((uint64_t)x27 * x47) + ((0x2 * ((uint64_t)x29 * x45)) + (((uint64_t)x31 * x43) + ((0x2 * ((uint64_t)x33 * x41)) + (((uint64_t)x35 * x39) + ((uint64_t)x34 * x37)))))))))))))))));
+ uint64_t x69 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + ((uint64_t)x35 * x37)))))))))))))))) + (0xbb * (0x2 * ((uint64_t)x34 * x66))));
+ uint64_t x70 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + ((0x2 * ((uint64_t)x9 * x61)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + (((uint64_t)x23 * x47) + ((0x2 * ((uint64_t)x25 * x45)) + (((uint64_t)x27 * x43) + ((0x2 * ((uint64_t)x29 * x41)) + (((uint64_t)x31 * x39) + ((uint64_t)x33 * x37))))))))))))))) + (0xbb * (((uint64_t)x35 * x66) + ((uint64_t)x34 * x67))));
+ uint64_t x71 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((uint64_t)x31 * x37)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x33 * x66)) + (((uint64_t)x35 * x67) + (0x2 * ((uint64_t)x34 * x65))))));
+ uint64_t x72 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + ((0x2 * ((uint64_t)x21 * x45)) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + (((uint64_t)x27 * x39) + ((uint64_t)x29 * x37))))))))))))) + (0xbb * (((uint64_t)x31 * x66) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + ((uint64_t)x34 * x63))))));
+ uint64_t x73 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((uint64_t)x27 * x37)))))))))))) + (0xbb * ((0x2 * ((uint64_t)x29 * x66)) + (((uint64_t)x31 * x67) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (0x2 * ((uint64_t)x34 * x61))))))));
+ uint64_t x74 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + (((uint64_t)x15 * x47) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((uint64_t)x25 * x37))))))))))) + (0xbb * (((uint64_t)x27 * x66) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((uint64_t)x34 * x59))))))));
+ uint64_t x75 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((uint64_t)x23 * x37)))))))))) + (0xbb * ((0x2 * ((uint64_t)x25 * x66)) + (((uint64_t)x27 * x67) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + ((0x2 * ((uint64_t)x33 * x61)) + (((uint64_t)x35 * x59) + (0x2 * ((uint64_t)x34 * x57))))))))));
+ uint64_t x76 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + ((0x2 * ((uint64_t)x13 * x45)) + (((uint64_t)x15 * x43) + ((0x2 * ((uint64_t)x17 * x41)) + (((uint64_t)x19 * x39) + ((uint64_t)x21 * x37))))))))) + (0xbb * (((uint64_t)x23 * x66) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + ((uint64_t)x34 * x55))))))))));
+ uint64_t x77 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((uint64_t)x19 * x37)))))))) + (0xbb * ((0x2 * ((uint64_t)x21 * x66)) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + ((0x2 * ((uint64_t)x29 * x61)) + (((uint64_t)x31 * x59) + ((0x2 * ((uint64_t)x33 * x57)) + (((uint64_t)x35 * x55) + (0x2 * ((uint64_t)x34 * x53))))))))))));
+ uint64_t x78 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37))))))) + (0xbb * (((uint64_t)x19 * x66) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + ((uint64_t)x34 * x51))))))))))));
+ uint64_t x79 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((uint64_t)x15 * x37)))))) + (0xbb * ((0x2 * ((uint64_t)x17 * x66)) + (((uint64_t)x19 * x67) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + ((0x2 * ((uint64_t)x33 * x53)) + (((uint64_t)x35 * x51) + (0x2 * ((uint64_t)x34 * x49))))))))))))));
+ uint64_t x80 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((uint64_t)x13 * x37))))) + (0xbb * (((uint64_t)x15 * x66) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((uint64_t)x34 * x47))))))))))))));
+ uint64_t x81 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((uint64_t)x11 * x37)))) + (0xbb * ((0x2 * ((uint64_t)x13 * x66)) + (((uint64_t)x15 * x67) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + ((0x2 * ((uint64_t)x21 * x61)) + (((uint64_t)x23 * x59) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + ((0x2 * ((uint64_t)x29 * x53)) + (((uint64_t)x31 * x51) + ((0x2 * ((uint64_t)x33 * x49)) + (((uint64_t)x35 * x47) + (0x2 * ((uint64_t)x34 * x45))))))))))))))));
+ uint64_t x82 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + ((uint64_t)x9 * x37))) + (0xbb * (((uint64_t)x11 * x66) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + ((uint64_t)x34 * x43))))))))))))))));
+ uint64_t x83 = ((((uint64_t)x5 * x39) + ((uint64_t)x7 * x37)) + (0xbb * ((0x2 * ((uint64_t)x9 * x66)) + (((uint64_t)x11 * x67) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + ((0x2 * ((uint64_t)x29 * x49)) + (((uint64_t)x31 * x47) + ((0x2 * ((uint64_t)x33 * x45)) + (((uint64_t)x35 * x43) + (0x2 * ((uint64_t)x34 * x41))))))))))))))))));
+ uint64_t x84 = (((uint64_t)x5 * x37) + (0xbb * ((0x2 * ((uint64_t)x7 * x66)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((0x2 * ((uint64_t)x35 * x41)) + (0x2 * ((uint64_t)x34 * x39)))))))))))))))))));
+ uint64_t x85 = (x84 >> 0x17);
+ uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
+ uint64_t x87 = (x85 + x83);
+ uint64_t x88 = (x87 >> 0x17);
+ uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
+ uint64_t x90 = (x88 + x82);
+ uint64_t x91 = (x90 >> 0x16);
+ uint32_t x92 = ((uint32_t)x90 & 0x3fffff);
+ uint64_t x93 = (x91 + x81);
+ uint64_t x94 = (x93 >> 0x17);
+ uint32_t x95 = ((uint32_t)x93 & 0x7fffff);
+ uint64_t x96 = (x94 + x80);
+ uint64_t x97 = (x96 >> 0x16);
+ uint32_t x98 = ((uint32_t)x96 & 0x3fffff);
+ uint64_t x99 = (x97 + x79);
+ uint64_t x100 = (x99 >> 0x17);
+ uint32_t x101 = ((uint32_t)x99 & 0x7fffff);
+ uint64_t x102 = (x100 + x78);
+ uint64_t x103 = (x102 >> 0x16);
+ uint32_t x104 = ((uint32_t)x102 & 0x3fffff);
+ uint64_t x105 = (x103 + x77);
+ uint64_t x106 = (x105 >> 0x17);
+ uint32_t x107 = ((uint32_t)x105 & 0x7fffff);
+ uint64_t x108 = (x106 + x76);
+ uint64_t x109 = (x108 >> 0x16);
+ uint32_t x110 = ((uint32_t)x108 & 0x3fffff);
+ uint64_t x111 = (x109 + x75);
+ uint64_t x112 = (x111 >> 0x17);
+ uint32_t x113 = ((uint32_t)x111 & 0x7fffff);
+ uint64_t x114 = (x112 + x74);
+ uint64_t x115 = (x114 >> 0x16);
+ uint32_t x116 = ((uint32_t)x114 & 0x3fffff);
+ uint64_t x117 = (x115 + x73);
+ uint64_t x118 = (x117 >> 0x17);
+ uint32_t x119 = ((uint32_t)x117 & 0x7fffff);
+ uint64_t x120 = (x118 + x72);
+ uint64_t x121 = (x120 >> 0x16);
+ uint32_t x122 = ((uint32_t)x120 & 0x3fffff);
+ uint64_t x123 = (x121 + x71);
+ uint64_t x124 = (x123 >> 0x17);
+ uint32_t x125 = ((uint32_t)x123 & 0x7fffff);
+ uint64_t x126 = (x124 + x70);
+ uint64_t x127 = (x126 >> 0x16);
+ uint32_t x128 = ((uint32_t)x126 & 0x3fffff);
+ uint64_t x129 = (x127 + x69);
+ uint64_t x130 = (x129 >> 0x17);
+ uint32_t x131 = ((uint32_t)x129 & 0x7fffff);
+ uint64_t x132 = (x130 + x68);
+ uint32_t x133 = (uint32_t) (x132 >> 0x16);
+ uint32_t x134 = ((uint32_t)x132 & 0x3fffff);
+ uint64_t x135 = (x86 + ((uint64_t)0xbb * x133));
+ uint32_t x136 = (uint32_t) (x135 >> 0x17);
+ uint32_t x137 = ((uint32_t)x135 & 0x7fffff);
+ uint32_t x138 = (x136 + x89);
+ uint32_t x139 = (x138 >> 0x17);
+ uint32_t x140 = (x138 & 0x7fffff);
+ return (Return x134, Return x131, Return x128, Return x125, Return x122, Return x119, Return x116, Return x113, Return x110, Return x107, Return x104, Return x101, Return x98, Return x95, (x139 + x92), Return x140, Return x137))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesquare.c b/src/Specific/solinas32_2e383m187_17limbs/fesquare.c
new file mode 100644
index 000000000..4d1dd108a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesquare.c
@@ -0,0 +1,110 @@
+static void fesquare(uint32_t out[17], const uint32_t in1[17]) {
+ { const uint32_t x31 = in1[16];
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x33 = (((uint64_t)x2 * x31) + (((uint64_t)x4 * x32) + ((0x2 * ((uint64_t)x6 * x30)) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + ((0x2 * ((uint64_t)x30 * x6)) + (((uint64_t)x32 * x4) + ((uint64_t)x31 * x2)))))))))))))))));
+ { uint64_t x34 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0xbb * (0x2 * ((uint64_t)x31 * x31))));
+ { uint64_t x35 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0xbb * (((uint64_t)x32 * x31) + ((uint64_t)x31 * x32))));
+ { uint64_t x36 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x30 * x31)) + (((uint64_t)x32 * x32) + (0x2 * ((uint64_t)x31 * x30))))));
+ { uint64_t x37 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0xbb * (((uint64_t)x28 * x31) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((uint64_t)x31 * x28))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xbb * ((0x2 * ((uint64_t)x26 * x31)) + (((uint64_t)x28 * x32) + ((0x2 * ((uint64_t)x30 * x30)) + (((uint64_t)x32 * x28) + (0x2 * ((uint64_t)x31 * x26))))))));
+ { uint64_t x39 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xbb * (((uint64_t)x24 * x31) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + ((uint64_t)x31 * x24))))))));
+ { uint64_t x40 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbb * ((0x2 * ((uint64_t)x22 * x31)) + (((uint64_t)x24 * x32) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + (((uint64_t)x32 * x24) + (0x2 * ((uint64_t)x31 * x22))))))))));
+ { uint64_t x41 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xbb * (((uint64_t)x20 * x31) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + ((uint64_t)x31 * x20))))))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbb * ((0x2 * ((uint64_t)x18 * x31)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + (0x2 * ((uint64_t)x31 * x18))))))))))));
+ { uint64_t x43 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xbb * (((uint64_t)x16 * x31) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((uint64_t)x31 * x16))))))))))));
+ { uint64_t x44 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbb * ((0x2 * ((uint64_t)x14 * x31)) + (((uint64_t)x16 * x32) + ((0x2 * ((uint64_t)x18 * x30)) + (((uint64_t)x20 * x28) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + (((uint64_t)x28 * x20) + ((0x2 * ((uint64_t)x30 * x18)) + (((uint64_t)x32 * x16) + (0x2 * ((uint64_t)x31 * x14))))))))))))));
+ { uint64_t x45 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbb * (((uint64_t)x12 * x31) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + ((uint64_t)x31 * x12))))))))))))));
+ { uint64_t x46 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbb * ((0x2 * ((uint64_t)x10 * x31)) + (((uint64_t)x12 * x32) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + (((uint64_t)x32 * x12) + (0x2 * ((uint64_t)x31 * x10))))))))))))))));
+ { uint64_t x47 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xbb * (((uint64_t)x8 * x31) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + ((uint64_t)x31 * x8))))))))))))))));
+ { uint64_t x48 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbb * ((0x2 * ((uint64_t)x6 * x31)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + (0x2 * ((uint64_t)x31 * x6))))))))))))))))));
+ { uint64_t x49 = (((uint64_t)x2 * x2) + (0xbb * ((0x2 * ((uint64_t)x4 * x31)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + (0x2 * ((uint64_t)x31 * x4)))))))))))))))))));
+ { uint64_t x50 = (x49 >> 0x17);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ { uint64_t x52 = (x50 + x48);
+ { uint64_t x53 = (x52 >> 0x17);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ { uint64_t x55 = (x53 + x47);
+ { uint64_t x56 = (x55 >> 0x16);
+ { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ { uint64_t x58 = (x56 + x46);
+ { uint64_t x59 = (x58 >> 0x17);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ { uint64_t x61 = (x59 + x45);
+ { uint64_t x62 = (x61 >> 0x16);
+ { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ { uint64_t x64 = (x62 + x44);
+ { uint64_t x65 = (x64 >> 0x17);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ { uint64_t x67 = (x65 + x43);
+ { uint64_t x68 = (x67 >> 0x16);
+ { uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
+ { uint64_t x70 = (x68 + x42);
+ { uint64_t x71 = (x70 >> 0x17);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ { uint64_t x73 = (x71 + x41);
+ { uint64_t x74 = (x73 >> 0x16);
+ { uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
+ { uint64_t x76 = (x74 + x40);
+ { uint64_t x77 = (x76 >> 0x17);
+ { uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
+ { uint64_t x79 = (x77 + x39);
+ { uint64_t x80 = (x79 >> 0x16);
+ { uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
+ { uint64_t x82 = (x80 + x38);
+ { uint64_t x83 = (x82 >> 0x17);
+ { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ { uint64_t x85 = (x83 + x37);
+ { uint64_t x86 = (x85 >> 0x16);
+ { uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
+ { uint64_t x88 = (x86 + x36);
+ { uint64_t x89 = (x88 >> 0x17);
+ { uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
+ { uint64_t x91 = (x89 + x35);
+ { uint64_t x92 = (x91 >> 0x16);
+ { uint32_t x93 = ((uint32_t)x91 & 0x3fffff);
+ { uint64_t x94 = (x92 + x34);
+ { uint64_t x95 = (x94 >> 0x17);
+ { uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
+ { uint64_t x97 = (x95 + x33);
+ { uint32_t x98 = (uint32_t) (x97 >> 0x16);
+ { uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
+ { uint64_t x100 = (x51 + ((uint64_t)0xbb * x98));
+ { uint32_t x101 = (uint32_t) (x100 >> 0x17);
+ { uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
+ { uint32_t x103 = (x101 + x54);
+ { uint32_t x104 = (x103 >> 0x17);
+ { uint32_t x105 = (x103 & 0x7fffff);
+ out[0] = x102;
+ out[1] = x105;
+ out[2] = (x104 + x57);
+ out[3] = x60;
+ out[4] = x63;
+ out[5] = x66;
+ out[6] = x69;
+ out[7] = x72;
+ out[8] = x75;
+ out[9] = x78;
+ out[10] = x81;
+ out[11] = x84;
+ out[12] = x87;
+ out[13] = x90;
+ out[14] = x93;
+ out[15] = x96;
+ out[16] = x99;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.log b/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.log
new file mode 100644
index 000000000..33739de8b
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.log
@@ -0,0 +1,80 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x31, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x33 = (((uint64_t)x2 * x31) + (((uint64_t)x4 * x32) + ((0x2 * ((uint64_t)x6 * x30)) + (((uint64_t)x8 * x28) + ((0x2 * ((uint64_t)x10 * x26)) + (((uint64_t)x12 * x24) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + (((uint64_t)x24 * x12) + ((0x2 * ((uint64_t)x26 * x10)) + (((uint64_t)x28 * x8) + ((0x2 * ((uint64_t)x30 * x6)) + (((uint64_t)x32 * x4) + ((uint64_t)x31 * x2)))))))))))))))));
+ uint64_t x34 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0xbb * (0x2 * ((uint64_t)x31 * x31))));
+ uint64_t x35 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + ((0x2 * ((uint64_t)x6 * x26)) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + ((0x2 * ((uint64_t)x26 * x6)) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0xbb * (((uint64_t)x32 * x31) + ((uint64_t)x31 * x32))));
+ uint64_t x36 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x30 * x31)) + (((uint64_t)x32 * x32) + (0x2 * ((uint64_t)x31 * x30))))));
+ uint64_t x37 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0xbb * (((uint64_t)x28 * x31) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((uint64_t)x31 * x28))))));
+ uint64_t x38 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xbb * ((0x2 * ((uint64_t)x26 * x31)) + (((uint64_t)x28 * x32) + ((0x2 * ((uint64_t)x30 * x30)) + (((uint64_t)x32 * x28) + (0x2 * ((uint64_t)x31 * x26))))))));
+ uint64_t x39 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + ((0x2 * ((uint64_t)x6 * x18)) + (((uint64_t)x8 * x16) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + (((uint64_t)x16 * x8) + ((0x2 * ((uint64_t)x18 * x6)) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xbb * (((uint64_t)x24 * x31) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + ((uint64_t)x31 * x24))))))));
+ uint64_t x40 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbb * ((0x2 * ((uint64_t)x22 * x31)) + (((uint64_t)x24 * x32) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + (((uint64_t)x32 * x24) + (0x2 * ((uint64_t)x31 * x22))))))))));
+ uint64_t x41 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xbb * (((uint64_t)x20 * x31) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + ((uint64_t)x31 * x20))))))))));
+ uint64_t x42 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbb * ((0x2 * ((uint64_t)x18 * x31)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + (0x2 * ((uint64_t)x31 * x18))))))))))));
+ uint64_t x43 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xbb * (((uint64_t)x16 * x31) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((uint64_t)x31 * x16))))))))))));
+ uint64_t x44 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbb * ((0x2 * ((uint64_t)x14 * x31)) + (((uint64_t)x16 * x32) + ((0x2 * ((uint64_t)x18 * x30)) + (((uint64_t)x20 * x28) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + (((uint64_t)x28 * x20) + ((0x2 * ((uint64_t)x30 * x18)) + (((uint64_t)x32 * x16) + (0x2 * ((uint64_t)x31 * x14))))))))))))));
+ uint64_t x45 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbb * (((uint64_t)x12 * x31) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + ((uint64_t)x31 * x12))))))))))))));
+ uint64_t x46 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbb * ((0x2 * ((uint64_t)x10 * x31)) + (((uint64_t)x12 * x32) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + (((uint64_t)x32 * x12) + (0x2 * ((uint64_t)x31 * x10))))))))))))))));
+ uint64_t x47 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xbb * (((uint64_t)x8 * x31) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + ((uint64_t)x31 * x8))))))))))))))));
+ uint64_t x48 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbb * ((0x2 * ((uint64_t)x6 * x31)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + (0x2 * ((uint64_t)x31 * x6))))))))))))))))));
+ uint64_t x49 = (((uint64_t)x2 * x2) + (0xbb * ((0x2 * ((uint64_t)x4 * x31)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + (0x2 * ((uint64_t)x31 * x4)))))))))))))))))));
+ uint64_t x50 = (x49 >> 0x17);
+ uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
+ uint64_t x52 = (x50 + x48);
+ uint64_t x53 = (x52 >> 0x17);
+ uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
+ uint64_t x55 = (x53 + x47);
+ uint64_t x56 = (x55 >> 0x16);
+ uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
+ uint64_t x58 = (x56 + x46);
+ uint64_t x59 = (x58 >> 0x17);
+ uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
+ uint64_t x61 = (x59 + x45);
+ uint64_t x62 = (x61 >> 0x16);
+ uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
+ uint64_t x64 = (x62 + x44);
+ uint64_t x65 = (x64 >> 0x17);
+ uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
+ uint64_t x67 = (x65 + x43);
+ uint64_t x68 = (x67 >> 0x16);
+ uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
+ uint64_t x70 = (x68 + x42);
+ uint64_t x71 = (x70 >> 0x17);
+ uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ uint64_t x73 = (x71 + x41);
+ uint64_t x74 = (x73 >> 0x16);
+ uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
+ uint64_t x76 = (x74 + x40);
+ uint64_t x77 = (x76 >> 0x17);
+ uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
+ uint64_t x79 = (x77 + x39);
+ uint64_t x80 = (x79 >> 0x16);
+ uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
+ uint64_t x82 = (x80 + x38);
+ uint64_t x83 = (x82 >> 0x17);
+ uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ uint64_t x85 = (x83 + x37);
+ uint64_t x86 = (x85 >> 0x16);
+ uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
+ uint64_t x88 = (x86 + x36);
+ uint64_t x89 = (x88 >> 0x17);
+ uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
+ uint64_t x91 = (x89 + x35);
+ uint64_t x92 = (x91 >> 0x16);
+ uint32_t x93 = ((uint32_t)x91 & 0x3fffff);
+ uint64_t x94 = (x92 + x34);
+ uint64_t x95 = (x94 >> 0x17);
+ uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
+ uint64_t x97 = (x95 + x33);
+ uint32_t x98 = (uint32_t) (x97 >> 0x16);
+ uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
+ uint64_t x100 = (x51 + ((uint64_t)0xbb * x98));
+ uint32_t x101 = (uint32_t) (x100 >> 0x17);
+ uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
+ uint32_t x103 = (x101 + x54);
+ uint32_t x104 = (x103 >> 0x17);
+ uint32_t x105 = (x103 & 0x7fffff);
+ return (Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x104 + x57), Return x105, Return x102))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesub.c b/src/Specific/solinas32_2e383m187_17limbs/fesub.c
index b45af98fd..e9b4888bf 100644
--- a/src/Specific/solinas32_2e383m187_17limbs/fesub.c
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesub.c
@@ -33,7 +33,7 @@ static void fesub(uint32_t out[17], const uint32_t in1[17], const uint32_t in2[1
{ const uint32_t x41 = in2[2];
{ const uint32_t x39 = in2[1];
{ const uint32_t x37 = in2[0];
- out[0] = ((Const 16776842 + x5) - x37);
+ out[0] = ((0xfffe8a + x5) - x37);
out[1] = ((0xfffffe + x7) - x39);
out[2] = ((0x7ffffe + x9) - x41);
out[3] = ((0xfffffe + x11) - x43);
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.log b/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.log
index cd80e6afe..1a8f2a3de 100644
--- a/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.log
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x34, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x66, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37))%core,
- (((0x7ffffe + x34) - x66), ((0xfffffe + x35) - x67), ((0x7ffffe + x33) - x65), ((0xfffffe + x31) - x63), ((0x7ffffe + x29) - x61), ((0xfffffe + x27) - x59), ((0x7ffffe + x25) - x57), ((0xfffffe + x23) - x55), ((0x7ffffe + x21) - x53), ((0xfffffe + x19) - x51), ((0x7ffffe + x17) - x49), ((0xfffffe + x15) - x47), ((0x7ffffe + x13) - x45), ((0xfffffe + x11) - x43), ((0x7ffffe + x9) - x41), ((0xfffffe + x7) - x39), ((Const 16776842 + x5) - x37)))
+ (((0x7ffffe + x34) - x66), ((0xfffffe + x35) - x67), ((0x7ffffe + x33) - x65), ((0xfffffe + x31) - x63), ((0x7ffffe + x29) - x61), ((0xfffffe + x27) - x59), ((0x7ffffe + x25) - x57), ((0xfffffe + x23) - x55), ((0x7ffffe + x21) - x53), ((0xfffffe + x19) - x51), ((0x7ffffe + x17) - x49), ((0xfffffe + x15) - x47), ((0x7ffffe + x13) - x45), ((0xfffffe + x11) - x43), ((0x7ffffe + x9) - x41), ((0xfffffe + x7) - x39), ((0xfffe8a + x5) - x37)))
(x, x0)%core
: word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e383m187_17limbs/freeze.c b/src/Specific/solinas32_2e383m187_17limbs/freeze.c
index fdf34ac14..af9e61e11 100644
--- a/src/Specific/solinas32_2e383m187_17limbs/freeze.c
+++ b/src/Specific/solinas32_2e383m187_17limbs/freeze.c
@@ -16,7 +16,7 @@ static void freeze(uint32_t out[17], const uint32_t in1[17]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388421);
+ { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff45);
{ uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x4, 0x7fffff);
{ uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x6, 0x3fffff);
{ uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x8, 0x7fffff);
@@ -34,7 +34,7 @@ static void freeze(uint32_t out[17], const uint32_t in1[17]) {
{ uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x32, 0x7fffff);
{ uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x31, 0x3fffff);
{ uint32_t x84 = cmovznz32(x83, 0x0, 0xffffffff);
- { uint32_t x85 = (x84 & Const 8388421);
+ { uint32_t x85 = (x84 & 0x7fff45);
{ uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x34, Return x85);
{ uint32_t x89 = (x84 & 0x7fffff);
{ uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x37, Return x89);
diff --git a/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.log b/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.log
index 0f580b32e..fa254adf1 100644
--- a/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.log
+++ b/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x31, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388421);
+ uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff45);
uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x4, 0x7fffff);
uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x6, 0x3fffff);
uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x8, 0x7fffff);
@@ -20,7 +20,7 @@ Interp-η
uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x32, 0x7fffff);
uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x31, 0x3fffff);
uint32_t x84 = cmovznz32(x83, 0x0, 0xffffffff);
- uint32_t x85 = (x84 & Const 8388421);
+ uint32_t x85 = (x84 & 0x7fff45);
uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x34, Return x85);
uint32_t x89 = (x84 & 0x7fffff);
uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x37, Return x89);