diff options
author | Torbjorn Granlund <tege@gmplib.org> | 2008-12-29 14:32:22 +0100 |
---|---|---|
committer | Torbjorn Granlund <tege@gmplib.org> | 2008-12-29 14:32:22 +0100 |
commit | c1e0ba4c1884fb3fa6909ee74fb93f77b6e4ae87 (patch) | |
tree | c1d00a3512ee8922ea7471b9a953147a60421e96 /mpn/generic/toom3_sqr.c | |
parent | 65ba29a8e2ed3f589a46f70dd4a3752ffe428b20 (diff) | |
download | gmp-c1e0ba4c1884fb3fa6909ee74fb93f77b6e4ae87.tar.gz |
Use coherent MAYBE_ macros for trimming unreachable recursive functions.
Update toom itch functions.
Diffstat (limited to 'mpn/generic/toom3_sqr.c')
-rw-r--r-- | mpn/generic/toom3_sqr.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/mpn/generic/toom3_sqr.c b/mpn/generic/toom3_sqr.c index 30cf7d70a..e80b0c441 100644 --- a/mpn/generic/toom3_sqr.c +++ b/mpn/generic/toom3_sqr.c @@ -1,4 +1,4 @@ -/* mpn_toom33_sqr -- Square {ap,an}. +/* mpn_toom3_sqr -- Square {ap,an}. Contributed to the GNU project by Torbjorn Granlund. @@ -50,12 +50,23 @@ the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ vinf= a2 * b2 # A(inf)*B(inf) */ +#if TUNE_PROGRAM_BUILD +#define MAYBE_sqr_basecase 1 +#define MAYBE_sqr_toom3 1 +#else +#define MAYBE_sqr_basecase \ + (SQR_TOOM3_THRESHOLD < 3 * SQR_KARATSUBA_THRESHOLD) +#define MAYBE_sqr_toom3 \ + (SQR_TOOM4_THRESHOLD >= 3 * SQR_TOOM3_THRESHOLD) +#endif + #define TOOM3_SQR_N_REC(p, a, n, ws) \ do { \ - if (SQR_TOOM3_THRESHOLD / 3 < SQR_KARATSUBA_THRESHOLD \ + if (MAYBE_sqr_basecase \ && BELOW_THRESHOLD (n, SQR_KARATSUBA_THRESHOLD)) \ mpn_sqr_basecase (p, a, n); \ - else if (BELOW_THRESHOLD (n, SQR_TOOM3_THRESHOLD)) \ + else if (! MAYBE_sqr_toom3 \ + || BELOW_THRESHOLD (n, SQR_TOOM3_THRESHOLD)) \ mpn_kara_sqr_n (p, a, n, ws); \ else \ mpn_toom3_sqr_n (p, a, n, ws); \ |