/usr/include/gf2x/gf2x-thresholds.h is in libgf2x-dev 1.2-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | /* This file is part of the gf2x library.
Copyright 2007, 2008, 2009, 2010, 2013, 2015
Richard Brent, Pierrick Gaudry, Emmanuel Thome', Paul Zimmermann
This program is free software; you can redistribute it and/or modify it
under the terms of either:
- If the archive contains a file named toom-gpl.c (not a trivial
placeholder), the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your
option) any later version.
- If the archive contains a file named toom-gpl.c which is a trivial
placeholder, the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
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 license text for more details.
You should have received a copy of the GNU General Public License as
well as the GNU Lesser General Public License along with this program;
see the files COPYING and COPYING.LIB. If not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301, USA.
*/
#ifndef THRESHOLDS_H_
#define THRESHOLDS_H_
/* This file contains sensible defaults to start with, which are updated
* by the tuning program */
/* If you read "placeholder" here, it means that the tuning program has
* not been run (or has not completed) */
#define GF2X_TOOM_TUNING_INFO "placeholder"
#define GF2X_FFT_TUNING_INFO "placeholder"
#define GF2X_WORDSIZE 64
#define GF2X_STORAGE_CLASS_mul1 static
#define GF2X_STORAGE_CLASS_mul_1_n static
#define GF2X_STORAGE_CLASS_addmul_1_n static
#define GF2X_STORAGE_CLASS_mul2 static
#define GF2X_STORAGE_CLASS_mul3 static
#define GF2X_STORAGE_CLASS_mul4 static
#define GF2X_STORAGE_CLASS_mul5 static
#define GF2X_STORAGE_CLASS_mul6 static
#define GF2X_STORAGE_CLASS_mul7 static
#define GF2X_STORAGE_CLASS_mul8 static
#define GF2X_STORAGE_CLASS_mul9 static
/* First size for which KARA is used. Essentially hard-coded, since the
* sizes up to 9 words are already karatsuba, unrolled. The unrolled
* routines handle their own temporary storage on the stack.
*/
#define GF2X_MUL_KARA_THRESHOLD 10
/* First size for which TC3W is used. It is assumed that TC3W is used
* before TC3 kicks in. */
/* must be >= 8 */
#define GF2X_MUL_TOOMW_THRESHOLD 18
/* First size for which TC3 is used. This threshold is informative, it is
* not used in the code */
/* must be >= 17 */
#define GF2X_MUL_TOOM_THRESHOLD 21
/* First size for which TC4 is used. This threshold is informative, it is
* not used in the code */
/* must be >= 30 */
#define GF2X_MUL_TOOM4_THRESHOLD 235
/* Size above which TC4 is the only TC variant used. */
#define GF2X_MUL_TOOM4_ALWAYS_THRESHOLD 1600
/* First size for which TC3U is used */
/* must be >= 33 */
#define GF2X_MUL_TOOMU_THRESHOLD 49
/* Size above which TC3U is the only TCU variant used. */
#define GF2X_MUL_TOOMU_ALWAYS_THRESHOLD 2049
/* The default values here are appropriate for the tuning program.
* Appropriate values are substituted later on. Note that the tuning
* table is always created with this size, to that re-tuning is possible
* at any time. */
#define GF2X_TOOM_TUNING_LIMIT 2048
#define GF2X_BEST_TOOM_TABLE {}
#define GF2X_BEST_UTOOM_TABLE {}
/* This macro is not what you think, and does not completely belong here.
* It merely recalls that the FFT code *DOES NOT WORK* below this size.
* So GF2X_MUL_FFT_TABLE should not wander in this bleak range.
*/
#define GF2X_MUL_FFT_THRESHOLD 28
/* {n, K} means use FFT(|K|) up from n words, */
/* where |K|<3 stands for Toom-Cook 3, K < 0 means use FFT2 */
/* these thresholds are just plain crap, but probably better this than
* nothing (which would amount to disabling fft altogether) */
#define GF2X_MUL_FFT_TABLE { \
{ 1, 1 }, { 1736, -81 }, { 1771, 1 }, { 1919, 243 }, \
{ 1958, 1 }, { 2307, -81 }, { 2354, 1 }, { 2402, 243 }, }
#endif /* THRESHOLDS_H_ */
/* vim: set ft=c: */
|