Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1237)

Unified Diff: gcc/gmp/tests/mpz/t-div_2exp.c

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gmp/tests/mpz/t-cong_2exp.c ('k') | gcc/gmp/tests/mpz/t-divis_2exp.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gmp/tests/mpz/t-div_2exp.c
diff --git a/gcc/gmp/tests/mpz/t-div_2exp.c b/gcc/gmp/tests/mpz/t-div_2exp.c
deleted file mode 100644
index 934ef18e4743ba61e098ac948dfb05e1061ada86..0000000000000000000000000000000000000000
--- a/gcc/gmp/tests/mpz/t-div_2exp.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* Test mpz_[cft]div_[qr]_2exp.
-
-Copyright 2001 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "tests.h"
-
-
-/* If the remainder is in the correct range and q*d+r is correct, then q
- must have rounded correctly. */
-
-void
-check_one (mpz_srcptr a, unsigned long d)
-{
- mpz_t q, r, p, d2exp;
- int inplace;
-
- mpz_init (d2exp);
- mpz_init (q);
- mpz_init (r);
- mpz_init (p);
-
- mpz_set_ui (d2exp, 1L);
- mpz_mul_2exp (d2exp, d2exp, d);
-
-#define INPLACE(fun,dst,src,d) \
- if (inplace) \
- { \
- mpz_set (dst, src); \
- fun (dst, dst, d); \
- } \
- else \
- fun (dst, src, d);
-
- for (inplace = 0; inplace <= 1; inplace++)
- {
- INPLACE (mpz_fdiv_q_2exp, q, a, d);
- INPLACE (mpz_fdiv_r_2exp, r, a, d);
-
- mpz_mul_2exp (p, q, d);
- mpz_add (p, p, r);
- if (mpz_sgn (r) < 0 || mpz_cmp (r, d2exp) >= 0)
- {
- printf ("mpz_fdiv_r_2exp result out of range\n");
- goto error;
- }
- if (mpz_cmp (p, a) != 0)
- {
- printf ("mpz_fdiv_[qr]_2exp doesn't multiply back\n");
- goto error;
- }
-
-
- INPLACE (mpz_cdiv_q_2exp, q, a, d);
- INPLACE (mpz_cdiv_r_2exp, r, a, d);
-
- mpz_mul_2exp (p, q, d);
- mpz_add (p, p, r);
- if (mpz_sgn (r) > 0 || mpz_cmpabs (r, d2exp) >= 0)
- {
- printf ("mpz_cdiv_r_2exp result out of range\n");
- goto error;
- }
- if (mpz_cmp (p, a) != 0)
- {
- printf ("mpz_cdiv_[qr]_2exp doesn't multiply back\n");
- goto error;
- }
-
-
- INPLACE (mpz_tdiv_q_2exp, q, a, d);
- INPLACE (mpz_tdiv_r_2exp, r, a, d);
-
- mpz_mul_2exp (p, q, d);
- mpz_add (p, p, r);
- if (mpz_sgn (r) != 0 && mpz_sgn (r) != mpz_sgn (a))
- {
- printf ("mpz_tdiv_r_2exp result wrong sign\n");
- goto error;
- }
- if (mpz_cmpabs (r, d2exp) >= 0)
- {
- printf ("mpz_tdiv_r_2exp result out of range\n");
- goto error;
- }
- if (mpz_cmp (p, a) != 0)
- {
- printf ("mpz_tdiv_[qr]_2exp doesn't multiply back\n");
- goto error;
- }
- }
-
- mpz_clear (d2exp);
- mpz_clear (q);
- mpz_clear (r);
- mpz_clear (p);
- return;
-
-
- error:
- mpz_trace ("a", a);
- printf ("d=%lu\n", d);
- mpz_trace ("q", q);
- mpz_trace ("r", r);
- mpz_trace ("p", p);
-
- mp_trace_base = -16;
- mpz_trace ("a", a);
- printf ("d=0x%lX\n", d);
- mpz_trace ("q", q);
- mpz_trace ("r", r);
- mpz_trace ("p", p);
-
- abort ();
-}
-
-
-void
-check_all (mpz_ptr a, unsigned long d)
-{
- check_one (a, d);
- mpz_neg (a, a);
- check_one (a, d);
-}
-
-
-void
-check_various (void)
-{
- static const unsigned long table[] = {
- 0, 1, 2, 3, 4, 5,
- GMP_NUMB_BITS-1, GMP_NUMB_BITS, GMP_NUMB_BITS+1,
- 2*GMP_NUMB_BITS-1, 2*GMP_NUMB_BITS, 2*GMP_NUMB_BITS+1,
- 3*GMP_NUMB_BITS-1, 3*GMP_NUMB_BITS, 3*GMP_NUMB_BITS+1,
- 4*GMP_NUMB_BITS-1, 4*GMP_NUMB_BITS, 4*GMP_NUMB_BITS+1
- };
-
- int i, j;
- unsigned long n, d;
- mpz_t a;
-
- mpz_init (a);
-
- /* a==0, and various d */
- mpz_set_ui (a, 0L);
- for (i = 0; i < numberof (table); i++)
- check_one (a, table[i]);
-
- /* a==2^n, and various d */
- for (i = 0; i < numberof (table); i++)
- {
- n = table[i];
- mpz_set_ui (a, 1L);
- mpz_mul_2exp (a, a, n);
-
- for (j = 0; j < numberof (table); j++)
- {
- d = table[j];
- check_all (a, d);
- }
- }
-
- mpz_clear (a);
-}
-
-
-void
-check_random (int argc, char *argv[])
-{
- gmp_randstate_ptr rands = RANDS;
- int reps = 100;
- mpz_t a;
- unsigned long d;
- int i;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (a);
-
- for (i = 0; i < reps; i++)
- {
- /* exponentially within 2 to 257 bits */
- mpz_erandomb (a, rands, urandom () % 8 + 2);
-
- d = urandom () % 256;
-
- check_all (a, d);
- }
-
- mpz_clear (a);
-}
-
-
-int
-main (int argc, char *argv[])
-{
- tests_start ();
-
- check_various ();
- check_random (argc, argv);
-
- tests_end ();
- exit (0);
-}
« no previous file with comments | « gcc/gmp/tests/mpz/t-cong_2exp.c ('k') | gcc/gmp/tests/mpz/t-divis_2exp.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698