1*39f28e1eSmrg /* setprec_parameters.c -- Functions changing the precision of i/o parameters.
2*39f28e1eSmrg
3*39f28e1eSmrg Copyright (C) 2013 INRIA
4*39f28e1eSmrg
5*39f28e1eSmrg This file is part of GNU MPC.
6*39f28e1eSmrg
7*39f28e1eSmrg GNU MPC is free software; you can redistribute it and/or modify it under
8*39f28e1eSmrg the terms of the GNU Lesser General Public License as published by the
9*39f28e1eSmrg Free Software Foundation; either version 3 of the License, or (at your
10*39f28e1eSmrg option) any later version.
11*39f28e1eSmrg
12*39f28e1eSmrg GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
13*39f28e1eSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14*39f28e1eSmrg FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15*39f28e1eSmrg more details.
16*39f28e1eSmrg
17*39f28e1eSmrg You should have received a copy of the GNU Lesser General Public License
18*39f28e1eSmrg along with this program. If not, see http://www.gnu.org/licenses/ .
19*39f28e1eSmrg */
20*39f28e1eSmrg
21*39f28e1eSmrg #include "mpc-tests.h"
22*39f28e1eSmrg
23*39f28e1eSmrg void
set_output_precision(mpc_fun_param_t * params,mpfr_prec_t prec)24*39f28e1eSmrg set_output_precision (mpc_fun_param_t *params, mpfr_prec_t prec)
25*39f28e1eSmrg {
26*39f28e1eSmrg int out;
27*39f28e1eSmrg const int start = 0;
28*39f28e1eSmrg const int end = params->nbout;
29*39f28e1eSmrg for (out = start; out < end; out++)
30*39f28e1eSmrg {
31*39f28e1eSmrg if (params->T[out] == MPFR)
32*39f28e1eSmrg mpfr_set_prec (params->P[out].mpfr, prec);
33*39f28e1eSmrg else if (params->T[out] == MPC)
34*39f28e1eSmrg mpc_set_prec (params->P[out].mpc, prec);
35*39f28e1eSmrg }
36*39f28e1eSmrg }
37*39f28e1eSmrg
38*39f28e1eSmrg void
set_input_precision(mpc_fun_param_t * params,mpfr_prec_t prec)39*39f28e1eSmrg set_input_precision (mpc_fun_param_t *params, mpfr_prec_t prec)
40*39f28e1eSmrg {
41*39f28e1eSmrg int i;
42*39f28e1eSmrg const int start = params->nbout;
43*39f28e1eSmrg const int end = start + params->nbin;
44*39f28e1eSmrg for (i = start; i < end; i++)
45*39f28e1eSmrg {
46*39f28e1eSmrg if (params->T[i] == MPFR)
47*39f28e1eSmrg mpfr_set_prec (params->P[i].mpfr, prec);
48*39f28e1eSmrg else if (params->T[i] == MPC)
49*39f28e1eSmrg mpc_set_prec (params->P[i].mpc, prec);
50*39f28e1eSmrg }
51*39f28e1eSmrg }
52*39f28e1eSmrg
53*39f28e1eSmrg void
set_reference_precision(mpc_fun_param_t * params,mpfr_prec_t prec)54*39f28e1eSmrg set_reference_precision (mpc_fun_param_t *params, mpfr_prec_t prec)
55*39f28e1eSmrg {
56*39f28e1eSmrg int i;
57*39f28e1eSmrg const int start = params->nbout + params->nbin;
58*39f28e1eSmrg const int end = start + params->nbout;
59*39f28e1eSmrg for (i = start; i < end; i++)
60*39f28e1eSmrg {
61*39f28e1eSmrg if (params->T[i] == MPFR)
62*39f28e1eSmrg mpfr_set_prec (params->P[i].mpfr_data.mpfr, prec);
63*39f28e1eSmrg else if (params->T[i] == MPC)
64*39f28e1eSmrg mpc_set_prec (params->P[i].mpc_data.mpc, prec);
65*39f28e1eSmrg }
66*39f28e1eSmrg }
67