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