Blame src/uceil_log2.c

Packit Service 2e9770
/* mpc_ceil_log2 - returns ceil(log(d)/log(2))
Packit Service 2e9770
Packit Service 2e9770
Copyright (C) 2004, 2009, 2010 INRIA
Packit Service 2e9770
Packit Service 2e9770
This file is part of GNU MPC.
Packit Service 2e9770
Packit Service 2e9770
GNU MPC is free software; you can redistribute it and/or modify it under
Packit Service 2e9770
the terms of the GNU Lesser General Public License as published by the
Packit Service 2e9770
Free Software Foundation; either version 3 of the License, or (at your
Packit Service 2e9770
option) any later version.
Packit Service 2e9770
Packit Service 2e9770
GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
Packit Service 2e9770
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
Packit Service 2e9770
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
Packit Service 2e9770
more details.
Packit Service 2e9770
Packit Service 2e9770
You should have received a copy of the GNU Lesser General Public License
Packit Service 2e9770
along with this program. If not, see http://www.gnu.org/licenses/ .
Packit Service 2e9770
*/
Packit Service 2e9770
Packit Service 2e9770
#include "mpc-impl.h"
Packit Service 2e9770
Packit Service 2e9770
/* returns ceil(log(d)/log(2)) if d > 0 */
Packit Service 2e9770
/* Don't use count_leading_zeros since it is in longlong.h */
Packit Service 2e9770
mpfr_prec_t
Packit Service 2e9770
mpc_ceil_log2 (mpfr_prec_t d)
Packit Service 2e9770
{
Packit Service 2e9770
  mpfr_prec_t exp;
Packit Service 2e9770
Packit Service 2e9770
  for (exp = 0; d > 1; d = (d + 1) / 2)
Packit Service 2e9770
    exp++;
Packit Service 2e9770
  return exp;
Packit Service 2e9770
}