Annotation of OpenXM_contrib/gmp/mpz/ui_pow_ui.c, Revision 1.1.1.3
1.1.1.3 ! ohara 1: /* mpz_ui_pow_ui -- ulong raised to ulong.
1.1 maekawa 2:
1.1.1.3 ! ohara 3: Copyright 2001, 2002 Free Software Foundation, Inc.
1.1 maekawa 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
1.1.1.2 maekawa 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
1.1 maekawa 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
1.1.1.2 maekawa 14: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
1.1 maekawa 15: License for more details.
16:
1.1.1.2 maekawa 17: You should have received a copy of the GNU Lesser General Public License
1.1 maekawa 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 "gmp.h"
23: #include "gmp-impl.h"
24:
1.1.1.2 maekawa 25:
1.1 maekawa 26: void
1.1.1.3 ! ohara 27: mpz_ui_pow_ui (mpz_ptr r, unsigned long b, unsigned long e)
1.1 maekawa 28: {
1.1.1.3 ! ohara 29: #if GMP_NAIL_BITS != 0
! 30: if (b > GMP_NUMB_MAX)
1.1 maekawa 31: {
1.1.1.3 ! ohara 32: mp_limb_t bb[2];
! 33: bb[0] = b & GMP_NUMB_MASK;
! 34: bb[1] = b >> GMP_NUMB_BITS;
! 35: mpz_n_pow_ui (r, bb, (mp_size_t) 2, e);
1.1 maekawa 36: }
1.1.1.3 ! ohara 37: else
! 38: #endif
1.1 maekawa 39: {
1.1.1.3 ! ohara 40: #ifdef _LONG_LONG_LIMB
! 41: /* i386 gcc 2.95.3 doesn't recognise blimb can be eliminated when
! 42: mp_limb_t is an unsigned long, so only use a separate blimb when
! 43: necessary. */
! 44: mp_limb_t blimb = b;
! 45: mpz_n_pow_ui (r, &blimb, (mp_size_t) (b != 0), e);
1.1.1.2 maekawa 46: #else
1.1.1.3 ! ohara 47: mpz_n_pow_ui (r, &b, (mp_size_t) (b != 0), e);
1.1.1.2 maekawa 48: #endif
1.1 maekawa 49: }
50: }
1.1.1.3 ! ohara 51:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>