Annotation of OpenXM_contrib/gmp/tests/mpz/dive_ui.c, Revision 1.1.1.1
1.1 ohara 1: /* Test mpz_divexact_ui.
2:
3: Copyright 1996, 2001 Free Software Foundation, Inc.
4:
5: This file is part of the GNU MP Library.
6:
7: The GNU MP Library is free software; you can redistribute it and/or modify
8: it under the terms of the GNU Lesser General Public License as published by
9: the Free Software Foundation; either version 2.1 of the License, or (at your
10: option) any later version.
11:
12: The GNU MP Library is distributed in the hope that it will be useful, but
13: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15: License for more details.
16:
17: You should have received a copy of the GNU Lesser General Public License
18: along with the GNU MP Library; see the file COPYING.LIB. If not, write to
19: the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20: MA 02111-1307, USA. */
21:
22: #include <stdio.h>
23: #include <stdlib.h>
24:
25: #include "gmp.h"
26: #include "gmp-impl.h"
27: #include "tests.h"
28:
29:
30: void
31: check_random (int argc, char *argv[])
32: {
33: gmp_randstate_ptr rands = RANDS;
34: int reps = 5000;
35: mpz_t a, q, got;
36: int i, qneg;
37: unsigned long d;
38:
39: if (argc == 2)
40: reps = atoi (argv[1]);
41:
42: mpz_init (a);
43: mpz_init (q);
44: mpz_init (got);
45:
46: for (i = 0; i < reps; i++)
47: {
48: d = (unsigned long) urandom();
49: mpz_erandomb (q, rands, 512);
50: mpz_mul_ui (a, q, d);
51:
52: for (qneg = 0; qneg <= 1; qneg++)
53: {
54: mpz_divexact_ui (got, a, d);
55: MPZ_CHECK_FORMAT (got);
56: if (mpz_cmp (got, q) != 0)
57: {
58: printf ("mpz_divexact_ui wrong\n");
59: mpz_trace (" a", a);
60: printf (" d=%lu\n", d);
61: mpz_trace (" q", q);
62: mpz_trace (" got", got);
63: abort ();
64: }
65:
66: mpz_neg (q, q);
67: mpz_neg (a, a);
68: }
69:
70: }
71:
72: mpz_clear (a);
73: mpz_clear (q);
74: mpz_clear (got);
75: }
76:
77:
78: int
79: main (int argc, char **argv)
80: {
81: tests_start ();
82:
83: check_random (argc, argv);
84:
85: tests_end ();
86: exit (0);
87: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>