init_parameters.c revision 1.1 1 1.1 mrg /* init_parameters -- Allocate memory for function parameters.
2 1.1 mrg
3 1.1 mrg Copyright (C) 2012, 2014 INRIA
4 1.1 mrg
5 1.1 mrg This file is part of GNU MPC.
6 1.1 mrg
7 1.1 mrg GNU MPC is free software; you can redistribute it and/or modify it under
8 1.1 mrg the terms of the GNU Lesser General Public License as published by the
9 1.1 mrg Free Software Foundation; either version 3 of the License, or (at your
10 1.1 mrg option) any later version.
11 1.1 mrg
12 1.1 mrg GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY
13 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 1.1 mrg FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15 1.1 mrg more details.
16 1.1 mrg
17 1.1 mrg You should have received a copy of the GNU Lesser General Public License
18 1.1 mrg along with this program. If not, see http://www.gnu.org/licenses/ .
19 1.1 mrg */
20 1.1 mrg
21 1.1 mrg #include <stdio.h>
22 1.1 mrg #include "mpc-tests.h"
23 1.1 mrg
24 1.1 mrg static void
25 1.1 mrg init_param (mpc_operand_t* p, mpc_param_t t)
26 1.1 mrg {
27 1.1 mrg switch (t)
28 1.1 mrg {
29 1.1 mrg case NATIVE_INT:
30 1.1 mrg case NATIVE_UL:
31 1.1 mrg case NATIVE_L:
32 1.1 mrg case NATIVE_D:
33 1.1 mrg break;
34 1.1 mrg
35 1.1 mrg case GMP_Z:
36 1.1 mrg mpz_init (p->mpz);
37 1.1 mrg break;
38 1.1 mrg case GMP_Q:
39 1.1 mrg mpq_init (p->mpq);
40 1.1 mrg break;
41 1.1 mrg case GMP_F:
42 1.1 mrg mpf_init (p->mpf);
43 1.1 mrg break;
44 1.1 mrg
45 1.1 mrg case MPFR_INEX:
46 1.1 mrg break;
47 1.1 mrg case MPFR:
48 1.1 mrg mpfr_init2 (p->mpfr, 512);
49 1.1 mrg break;
50 1.1 mrg
51 1.1 mrg case MPC_INEX:
52 1.1 mrg case MPCC_INEX:
53 1.1 mrg break;
54 1.1 mrg case MPC:
55 1.1 mrg mpc_init2 (p->mpc, 512);
56 1.1 mrg break;
57 1.1 mrg
58 1.1 mrg case MPFR_RND:
59 1.1 mrg case MPC_RND:
60 1.1 mrg break;
61 1.1 mrg
62 1.1 mrg default:
63 1.1 mrg fprintf (stderr, "init_parameters: unsupported type.\n");
64 1.1 mrg exit (1);
65 1.1 mrg }
66 1.1 mrg }
67 1.1 mrg
68 1.1 mrg void
69 1.1 mrg init_parameters (mpc_fun_param_t *params)
70 1.1 mrg {
71 1.1 mrg int in, out;
72 1.1 mrg int total = params->nbout + params->nbin;
73 1.1 mrg
74 1.1 mrg for (out = 0; out < params->nbout; out++)
75 1.1 mrg {
76 1.1 mrg init_param (&(params->P[out]), params->T[out]);
77 1.1 mrg init_param (&(params->P[total + out]), params->T[total + out]);
78 1.1 mrg }
79 1.1 mrg
80 1.1 mrg for (in = params->nbout; in < total; in++)
81 1.1 mrg {
82 1.1 mrg init_param (&(params->P[in]), params->T[in]);
83 1.1 mrg }
84 1.1 mrg }
85