1*39f28e1eSmrg /* init_parameters -- Allocate memory for function parameters.
2*39f28e1eSmrg
3*39f28e1eSmrg Copyright (C) 2012, 2014 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 <stdio.h>
22*39f28e1eSmrg #include "mpc-tests.h"
23*39f28e1eSmrg
24*39f28e1eSmrg static void
init_param(mpc_operand_t * p,mpc_param_t t)25*39f28e1eSmrg init_param (mpc_operand_t* p, mpc_param_t t)
26*39f28e1eSmrg {
27*39f28e1eSmrg switch (t)
28*39f28e1eSmrg {
29*39f28e1eSmrg case NATIVE_INT:
30*39f28e1eSmrg case NATIVE_UL:
31*39f28e1eSmrg case NATIVE_L:
32*39f28e1eSmrg case NATIVE_D:
33*39f28e1eSmrg break;
34*39f28e1eSmrg
35*39f28e1eSmrg case GMP_Z:
36*39f28e1eSmrg mpz_init (p->mpz);
37*39f28e1eSmrg break;
38*39f28e1eSmrg case GMP_Q:
39*39f28e1eSmrg mpq_init (p->mpq);
40*39f28e1eSmrg break;
41*39f28e1eSmrg case GMP_F:
42*39f28e1eSmrg mpf_init (p->mpf);
43*39f28e1eSmrg break;
44*39f28e1eSmrg
45*39f28e1eSmrg case MPFR_INEX:
46*39f28e1eSmrg break;
47*39f28e1eSmrg case MPFR:
48*39f28e1eSmrg mpfr_init2 (p->mpfr, 512);
49*39f28e1eSmrg break;
50*39f28e1eSmrg
51*39f28e1eSmrg case MPC_INEX:
52*39f28e1eSmrg case MPCC_INEX:
53*39f28e1eSmrg break;
54*39f28e1eSmrg case MPC:
55*39f28e1eSmrg mpc_init2 (p->mpc, 512);
56*39f28e1eSmrg break;
57*39f28e1eSmrg
58*39f28e1eSmrg case MPFR_RND:
59*39f28e1eSmrg case MPC_RND:
60*39f28e1eSmrg break;
61*39f28e1eSmrg
62*39f28e1eSmrg default:
63*39f28e1eSmrg fprintf (stderr, "init_parameters: unsupported type.\n");
64*39f28e1eSmrg exit (1);
65*39f28e1eSmrg }
66*39f28e1eSmrg }
67*39f28e1eSmrg
68*39f28e1eSmrg void
init_parameters(mpc_fun_param_t * params)69*39f28e1eSmrg init_parameters (mpc_fun_param_t *params)
70*39f28e1eSmrg {
71*39f28e1eSmrg int in, out;
72*39f28e1eSmrg int total = params->nbout + params->nbin;
73*39f28e1eSmrg
74*39f28e1eSmrg for (out = 0; out < params->nbout; out++)
75*39f28e1eSmrg {
76*39f28e1eSmrg init_param (&(params->P[out]), params->T[out]);
77*39f28e1eSmrg init_param (&(params->P[total + out]), params->T[total + out]);
78*39f28e1eSmrg }
79*39f28e1eSmrg
80*39f28e1eSmrg for (in = params->nbout; in < total; in++)
81*39f28e1eSmrg {
82*39f28e1eSmrg init_param (&(params->P[in]), params->T[in]);
83*39f28e1eSmrg }
84*39f28e1eSmrg }
85