diff --git a/srcpkgs/zn_poly/files/tuning-32.c b/srcpkgs/zn_poly/files/tuning-32.c
new file mode 100644
index 00000000000..18396ce3d44
--- /dev/null
+++ b/srcpkgs/zn_poly/files/tuning-32.c
@@ -0,0 +1,444 @@
+/*
+ NOTE: do not edit this file! It is auto-generated by the "tune" program.
+ (Run "make tune" and then "./tune > tuning.c" to regenerate it.)
+*/
+
+/*
+ tuning.c: global tuning values
+
+ Copyright (C) 2007, 2008, David Harvey
+
+ This file is part of the zn_poly library (version 0.9).
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) version 3 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+*/
+
+#include "zn_poly_internal.h"
+
+size_t ZNP_mpn_smp_kara_thresh = 43;
+size_t ZNP_mpn_mulmid_fallback_thresh = 551;
+
+tuning_info_t tuning_info[] =
+{
+ { // bits = 0
+ },
+ { // bits = 1
+ },
+ { // bits = 2
+ 47, // KS1 -> KS2 multiplication threshold
+ 1053, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 1053, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 56, // KS1 -> KS2 middle product threshold
+ 689, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 3
+ 39, // KS1 -> KS2 multiplication threshold
+ 412, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 39, // KS1 -> KS2 squaring threshold
+ 315, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 264, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 4
+ 39, // KS1 -> KS2 multiplication threshold
+ 901, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 901, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 185, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 5
+ 35, // KS1 -> KS2 multiplication threshold
+ 264, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 31, // KS1 -> KS2 squaring threshold
+ 264, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 35, // KS1 -> KS2 middle product threshold
+ 144, // KS2 -> KS4 middle product threshold
+ 21569, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 6
+ 33, // KS1 -> KS2 multiplication threshold
+ 247, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 31, // KS1 -> KS2 squaring threshold
+ 173, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ 14044, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 7
+ 33, // KS1 -> KS2 multiplication threshold
+ 247, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 226, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ 12720, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 8
+ 27, // KS1 -> KS2 multiplication threshold
+ 123, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 112, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ 7753, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 9
+ 24, // KS1 -> KS2 multiplication threshold
+ 206, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 158, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 27, // KS1 -> KS2 middle product threshold
+ 86, // KS2 -> KS4 middle product threshold
+ 9451, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 10
+ 25, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ 68475, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 66, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 24, // KS1 -> KS2 middle product threshold
+ 70, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 11
+ 23, // KS1 -> KS2 multiplication threshold
+ 134, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 107, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 23, // KS1 -> KS2 middle product threshold
+ 75, // KS2 -> KS4 middle product threshold
+ 5393, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 12
+ 17, // KS1 -> KS2 multiplication threshold
+ 78, // KS2 -> KS4 multiplication threshold
+ 75603, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 13
+ 17, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ 56173, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 78, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 14
+ 19, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ 62020, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 62, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 15
+ 16, // KS1 -> KS2 multiplication threshold
+ 67, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 43, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 51, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 16
+ 14, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 56, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 54, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 17
+ 14, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ 50877, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 3077, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 18
+ 13, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 3077, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 19
+ 13, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 27, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 38, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 20
+ 12, // KS1 -> KS2 multiplication threshold
+ 43, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 33, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 39, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 21
+ 13, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 35, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 22
+ 12, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 24, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 35, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 23
+ 12, // KS1 -> KS2 multiplication threshold
+ 24, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1539, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 24
+ 9, // KS1 -> KS2 multiplication threshold
+ 28, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 25
+ 12, // KS1 -> KS2 multiplication threshold
+ 21, // KS2 -> KS4 multiplication threshold
+ 25439, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 1305, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 26
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ 31010, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 1349, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 27
+ 9, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 28
+ 10, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 29
+ 8, // KS1 -> KS2 multiplication threshold
+ 17, // KS2 -> KS4 multiplication threshold
+ 20868, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 14, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 970, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 8 // nussbaumer squaring threshold
+ },
+ { // bits = 30
+ 8, // KS1 -> KS2 multiplication threshold
+ 27, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1305, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 8 // nussbaumer squaring threshold
+ },
+ { // bits = 31
+ 9, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 1070, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 32
+ 8, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ 28087, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 1539, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+};
+
+// end of file ****************************************************************
diff --git a/srcpkgs/zn_poly/files/tuning-64.c b/srcpkgs/zn_poly/files/tuning-64.c
new file mode 100644
index 00000000000..34ac692c83b
--- /dev/null
+++ b/srcpkgs/zn_poly/files/tuning-64.c
@@ -0,0 +1,860 @@
+/*
+ NOTE: do not edit this file! It is auto-generated by the "tune" program.
+ (Run "make tune" and then "./tune > tuning.c" to regenerate it.)
+*/
+
+/*
+ tuning.c: global tuning values
+
+ Copyright (C) 2007, 2008, David Harvey
+
+ This file is part of the zn_poly library (version 0.9).
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) version 3 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+*/
+
+#include "zn_poly_internal.h"
+
+size_t ZNP_mpn_smp_kara_thresh = 35;
+size_t ZNP_mpn_mulmid_fallback_thresh = 458;
+
+tuning_info_t tuning_info[] =
+{
+ { // bits = 0
+ },
+ { // bits = 1
+ },
+ { // bits = 2
+ 141, // KS1 -> KS2 multiplication threshold
+ 14733, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 102, // KS1 -> KS2 squaring threshold
+ 3602, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 102, // KS1 -> KS2 middle product threshold
+ 1378, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 3
+ 112, // KS1 -> KS2 multiplication threshold
+ 4308, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 61, // KS1 -> KS2 squaring threshold
+ 4817, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 102, // KS1 -> KS2 middle product threshold
+ 2356, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 4
+ 80, // KS1 -> KS2 multiplication threshold
+ 2576, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 57, // KS1 -> KS2 squaring threshold
+ 1801, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 72, // KS1 -> KS2 middle product threshold
+ 1053, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 5
+ 67, // KS1 -> KS2 multiplication threshold
+ 3294, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 56, // KS1 -> KS2 squaring threshold
+ 2303, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 65, // KS1 -> KS2 middle product threshold
+ 901, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 6
+ 57, // KS1 -> KS2 multiplication threshold
+ 1152, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 51, // KS1 -> KS2 squaring threshold
+ 985, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 62, // KS1 -> KS2 middle product threshold
+ 985, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 7
+ 47, // KS1 -> KS2 multiplication threshold
+ 1540, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 788, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 51, // KS1 -> KS2 middle product threshold
+ 451, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 8
+ 47, // KS1 -> KS2 multiplication threshold
+ 901, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 35, // KS1 -> KS2 squaring threshold
+ 753, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 43, // KS1 -> KS2 middle product threshold
+ 576, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 9
+ 43, // KS1 -> KS2 multiplication threshold
+ 589, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 43, // KS1 -> KS2 squaring threshold
+ 493, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 39, // KS1 -> KS2 middle product threshold
+ 302, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 10
+ 38, // KS1 -> KS2 multiplication threshold
+ 824, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 35, // KS1 -> KS2 squaring threshold
+ 576, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 38, // KS1 -> KS2 middle product threshold
+ 337, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 11
+ 43, // KS1 -> KS2 multiplication threshold
+ 431, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 377, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 247, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 12
+ 38, // KS1 -> KS2 multiplication threshold
+ 482, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 33, // KS1 -> KS2 squaring threshold
+ 403, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 216, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 13
+ 33, // KS1 -> KS2 multiplication threshold
+ 345, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 30, // KS1 -> KS2 squaring threshold
+ 315, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 33, // KS1 -> KS2 middle product threshold
+ 189, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 14
+ 33, // KS1 -> KS2 multiplication threshold
+ 345, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 29, // KS1 -> KS2 squaring threshold
+ 286, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 31, // KS1 -> KS2 middle product threshold
+ 116, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 15
+ 31, // KS1 -> KS2 multiplication threshold
+ 322, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 226, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 29, // KS1 -> KS2 middle product threshold
+ 121, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 1000 // nussbaumer squaring threshold
+ },
+ { // bits = 16
+ 29, // KS1 -> KS2 multiplication threshold
+ 337, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 25, // KS1 -> KS2 squaring threshold
+ 173, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 29, // KS1 -> KS2 middle product threshold
+ 101, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 17
+ 29, // KS1 -> KS2 multiplication threshold
+ 231, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 216, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 27, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 18
+ 25, // KS1 -> KS2 multiplication threshold
+ 189, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 23, // KS1 -> KS2 squaring threshold
+ 134, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 23, // KS1 -> KS2 middle product threshold
+ 94, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 19
+ 27, // KS1 -> KS2 multiplication threshold
+ 226, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 216, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 86, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 1000, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 20
+ 22, // KS1 -> KS2 multiplication threshold
+ 144, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 119, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 80, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 21
+ 25, // KS1 -> KS2 multiplication threshold
+ 189, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 121, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 80, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 22
+ 21, // KS1 -> KS2 multiplication threshold
+ 102, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 21, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 70, // KS2 -> KS4 middle product threshold
+ SIZE_MAX, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 13 // nussbaumer squaring threshold
+ },
+ { // bits = 23
+ 22, // KS1 -> KS2 multiplication threshold
+ 147, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 72, // KS2 -> KS4 middle product threshold
+ 23040, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 24
+ 19, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 19, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 20868, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 25
+ 21, // KS1 -> KS2 multiplication threshold
+ 149, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 19, // KS1 -> KS2 squaring threshold
+ 102, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 21, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 20868, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 26
+ 17, // KS1 -> KS2 multiplication threshold
+ 86, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 72, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 13, // nussbaumer multiplication threshold
+ 12 // nussbaumer squaring threshold
+ },
+ { // bits = 27
+ 17, // KS1 -> KS2 multiplication threshold
+ 119, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 16, // KS1 -> KS2 squaring threshold
+ 64, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 16, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 28
+ 23, // KS1 -> KS2 multiplication threshold
+ 107, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 62, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 66, // KS2 -> KS4 middle product threshold
+ 9451, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 29
+ 17, // KS1 -> KS2 multiplication threshold
+ 85, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 65, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 16, // KS1 -> KS2 middle product threshold
+ 61, // KS2 -> KS4 middle product threshold
+ 14044, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 30
+ 17, // KS1 -> KS2 multiplication threshold
+ 66, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 17, // KS1 -> KS2 squaring threshold
+ 43, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 61, // KS2 -> KS4 middle product threshold
+ 12307, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 31
+ 17, // KS1 -> KS2 multiplication threshold
+ 73, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 35, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 57, // KS2 -> KS4 middle product threshold
+ 16026, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 32
+ 17, // KS1 -> KS2 multiplication threshold
+ 56, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 14, // KS1 -> KS2 squaring threshold
+ 40, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 56, // KS2 -> KS4 middle product threshold
+ 8013, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 33
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 15, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 51, // KS2 -> KS4 middle product threshold
+ 8560, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 34
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 15, // KS1 -> KS2 squaring threshold
+ 27, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 17, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 6154, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 35
+ 16, // KS1 -> KS2 multiplication threshold
+ 47, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 7022, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 36
+ 16, // KS1 -> KS2 multiplication threshold
+ 36, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 29, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 6154, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 37
+ 14, // KS1 -> KS2 multiplication threshold
+ 36, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 47, // KS2 -> KS4 middle product threshold
+ 7022, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 38
+ 16, // KS1 -> KS2 multiplication threshold
+ 30, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 13, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 14, // KS1 -> KS2 middle product threshold
+ 43, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 39
+ 15, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 40, // KS2 -> KS4 middle product threshold
+ 5393, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 11 // nussbaumer squaring threshold
+ },
+ { // bits = 40
+ 13, // KS1 -> KS2 multiplication threshold
+ 32, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 38, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 12, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 41
+ 13, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 42
+ 13, // KS1 -> KS2 multiplication threshold
+ 27, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 23, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 43
+ 13, // KS1 -> KS2 multiplication threshold
+ 24, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 21, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 31, // KS2 -> KS4 middle product threshold
+ 4726, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 44
+ 13, // KS1 -> KS2 multiplication threshold
+ 33, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 18, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 33, // KS2 -> KS4 middle product threshold
+ 4280, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 45
+ 12, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 46
+ 15, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 13, // KS1 -> KS2 middle product threshold
+ 31, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 47
+ 12, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 12, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 29, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 48
+ 13, // KS1 -> KS2 multiplication threshold
+ 23, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 3877, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 49
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 3511, // KS4 -> FFT middle product threshold
+ 11, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 50
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 17, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 27, // KS2 -> KS4 middle product threshold
+ 3511, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 51
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 52
+ 12, // KS1 -> KS2 multiplication threshold
+ 21, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 10, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 24, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 53
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 24, // KS2 -> KS4 middle product threshold
+ 2140, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 10 // nussbaumer squaring threshold
+ },
+ { // bits = 54
+ 12, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 16, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 55
+ 9, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 10, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1939, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 56
+ 9, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 8, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 2140, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 57
+ 10, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 15, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 21, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 58
+ 12, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 9, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 12, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 2071, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 59
+ 8, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 60
+ 8, // KS1 -> KS2 multiplication threshold
+ 16, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 13, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 17, // KS2 -> KS4 middle product threshold
+ 1756, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 61
+ 8, // KS1 -> KS2 multiplication threshold
+ 12, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 12, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 8, // KS1 -> KS2 middle product threshold
+ 19, // KS2 -> KS4 middle product threshold
+ 1939, // KS4 -> FFT middle product threshold
+ 9, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 62
+ 10, // KS1 -> KS2 multiplication threshold
+ 19, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 14, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 63
+ 9, // KS1 -> KS2 multiplication threshold
+ 25, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 19, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 23, // KS2 -> KS4 middle product threshold
+ 2363, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+ { // bits = 64
+ 9, // KS1 -> KS2 multiplication threshold
+ 31, // KS2 -> KS4 multiplication threshold
+ SIZE_MAX, // KS4 -> FFT multiplication threshold
+ 7, // KS1 -> KS2 squaring threshold
+ 25, // KS2 -> KS4 squaring threshold
+ SIZE_MAX, // KS4 -> FFT squaring threshold
+ 9, // KS1 -> KS2 middle product threshold
+ 25, // KS2 -> KS4 middle product threshold
+ 2697, // KS4 -> FFT middle product threshold
+ 10, // nussbaumer multiplication threshold
+ 9 // nussbaumer squaring threshold
+ },
+};
+
+// end of file ****************************************************************
diff --git a/srcpkgs/zn_poly/template b/srcpkgs/zn_poly/template
new file mode 100644
index 00000000000..ca6d0c764f1
--- /dev/null
+++ b/srcpkgs/zn_poly/template
@@ -0,0 +1,32 @@
+# Template file for 'zn_poly'
+pkgname=zn_poly
+version=0.9.2
+revision=1
+build_style=configure
+configure_args="--prefix=\$(DESTDIR)/usr"
+hostmakedepends="python3"
+makedepends="gmp-devel"
+short_desc="Library for polynomial arithmetic in Z/nZ[x], for unsigned long n"
+maintainer="Gonzalo TornarĂa "
+license="GPL-2.0-only, GPL-3.0-only"
+homepage="https://gitlab.com/sagemath/zn_poly"
+distfiles="https://gitlab.com/sagemath/zn_poly/-/archive/${version}/zn_poly-${version}.tar.bz2"
+checksum=29d88ce19939f53e920adf118d8cd6c8c9594bc8cb71a992a6137bd86f6fb7f5
+
+CFLAGS=-fPIC
+
+build_options="native_build"
+
+if [ -z "$build_option_native_build" ]; then
+ configure_args+=" --disable-tuning"
+fi
+
+post_extract() {
+ cp -v ${FILESDIR}/tuning-${XBPS_WORDSIZE}.c tune/tuning.c
+}
+
+do_configure() {
+ ./configure ${configure_args} \
+ --cflags="$CFLAGS" --ldflags="$LDFLAGS" \
+ --cppflags="$CPPFLAGS" --cxxflags="$CXXFLAGS"
+}