xref: /netbsd-src/external/lgpl3/mpc/dist/tests/init_parameters.c (revision 39f28e1e142c5bfb6be935a49cb55e2287fec7ea)
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