sbin/fsck_hammer2: Fix destination FILE* in print_media()
[dragonfly.git] / contrib / gmp / mpz / cmp_ui.c
blobf9f27ba494a5889b474f9233e37cca838dfc0b3b
1 /* mpz_cmp_ui.c -- Compare a mpz_t a with an mp_limb_t b. Return positive,
2 zero, or negative based on if a > b, a == b, or a < b.
4 Copyright 1991, 1993, 1994, 1995, 1996, 2001, 2002 Free Software Foundation,
5 Inc.
7 This file is part of the GNU MP Library.
9 The GNU MP Library is free software; you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or (at your
12 option) any later version.
14 The GNU MP Library is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17 License for more details.
19 You should have received a copy of the GNU Lesser General Public License
20 along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
22 #include "gmp.h"
23 #include "gmp-impl.h"
25 int
26 _mpz_cmp_ui (mpz_srcptr u, unsigned long int v_digit) __GMP_NOTHROW
28 mp_ptr up;
29 mp_size_t un;
30 mp_limb_t ul;
32 up = PTR(u);
33 un = SIZ(u);
35 if (un == 0)
36 return -(v_digit != 0);
38 if (un == 1)
40 ul = up[0];
41 if (ul > v_digit)
42 return 1;
43 if (ul < v_digit)
44 return -1;
45 return 0;
48 #if GMP_NAIL_BITS != 0
49 if (v_digit > GMP_NUMB_MAX)
51 if (un == 2)
53 ul = up[0] + (up[1] << GMP_NUMB_BITS);
55 if ((up[1] >> GMP_NAIL_BITS) != 0)
56 return 1;
58 if (ul > v_digit)
59 return 1;
60 if (ul < v_digit)
61 return -1;
62 return 0;
65 #endif
67 return un > 0 ? 1 : -1;