Blame src/set_x.c

Packit Service 2e9770
/* mpc_set_x -- Set the real part of a complex number
Packit Service 2e9770
   (imaginary part equals +0 regardless of rounding mode).
Packit Service 2e9770
Packit Service 2e9770
Copyright (C) 2008, 2009, 2010, 2011 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 "config.h"
Packit Service 2e9770
Packit Service 2e9770
#ifdef HAVE_INTTYPES_H
Packit Service 2e9770
# include <inttypes.h> /* for intmax_t */
Packit Service 2e9770
#else
Packit Service 2e9770
# ifdef HAVE_STDINT_H
Packit Service 2e9770
#  include <stdint.h>
Packit Service 2e9770
# endif
Packit Service 2e9770
#endif
Packit Service 2e9770
Packit Service 2e9770
#ifdef HAVE_COMPLEX_H
Packit Service 2e9770
# include <complex.h>
Packit Service 2e9770
#endif
Packit Service 2e9770
Packit Service 2e9770
#include "mpc-impl.h"
Packit Service 2e9770
Packit Service 2e9770
#define MPC_SET_X(real_t, z, real_value, rnd)     \
Packit Service 2e9770
  {                                                                     \
Packit Service 2e9770
    int _inex_re, _inex_im;                                             \
Packit Service 2e9770
    _inex_re = (mpfr_set_ ## real_t) (mpc_realref (z), (real_value), MPC_RND_RE (rnd)); \
Packit Service 2e9770
    _inex_im = mpfr_set_ui (mpc_imagref (z), 0, MPC_RND_IM (rnd)); \
Packit Service 2e9770
    return MPC_INEX (_inex_re, _inex_im);                               \
Packit Service 2e9770
  }
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_fr (mpc_ptr a, mpfr_srcptr b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (fr, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_d (mpc_ptr a, double b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (d, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_ld (mpc_ptr a, long double b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (ld, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_ui (mpc_ptr a, unsigned long int b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (ui, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_si (mpc_ptr a, long int b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (si, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_z (mpc_ptr a, mpz_srcptr b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (z, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_q (mpc_ptr a, mpq_srcptr b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (q, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_f (mpc_ptr a, mpf_srcptr b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (f, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
#ifdef _MPC_H_HAVE_INTMAX_T
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_uj (mpc_ptr a, uintmax_t b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (uj, a, b, rnd)
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_sj (mpc_ptr a, intmax_t b, mpc_rnd_t rnd)
Packit Service 2e9770
   MPC_SET_X (sj, a, b, rnd)
Packit Service 2e9770
#endif
Packit Service 2e9770
Packit Service 2e9770
#ifdef HAVE_COMPLEX_H
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_dc (mpc_ptr a, double _Complex b, mpc_rnd_t rnd) {
Packit Service 2e9770
   return mpc_set_d_d (a, creal (b), cimag (b), rnd);
Packit Service 2e9770
}
Packit Service 2e9770
Packit Service 2e9770
int
Packit Service 2e9770
mpc_set_ldc (mpc_ptr a, long double _Complex b, mpc_rnd_t rnd) {
Packit Service 2e9770
   return mpc_set_ld_ld (a, creall (b), cimagl (b), rnd);
Packit Service 2e9770
}
Packit Service 2e9770
#endif
Packit Service 2e9770
Packit Service 2e9770
void
Packit Service 2e9770
mpc_set_nan (mpc_ptr a) {
Packit Service 2e9770
   mpfr_set_nan (mpc_realref (a));
Packit Service 2e9770
   mpfr_set_nan (mpc_imagref (a));
Packit Service 2e9770
}