static bool fold_const_call_cc (real_value *result_real, real_value *result_imag, built_in_function fn, const real_value *arg_real, const real_value *arg_imag, const real_format *format) { switch (fn) { CASE_FLT_FN (BUILT_IN_CCOS): return do_mpc_arg1 (result_real, result_imag, mpc_cos, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CCOSH): return do_mpc_arg1 (result_real, result_imag, mpc_cosh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CPROJ): if (real_isinf (arg_real) || real_isinf (arg_imag)) { real_inf (result_real); *result_imag = dconst0; result_imag->sign = arg_imag->sign; } else { *result_real = *arg_real; *result_imag = *arg_imag; } return true; CASE_FLT_FN (BUILT_IN_CSIN): return do_mpc_arg1 (result_real, result_imag, mpc_sin, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CSINH): return do_mpc_arg1 (result_real, result_imag, mpc_sinh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CTAN): return do_mpc_arg1 (result_real, result_imag, mpc_tan, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CTANH): return do_mpc_arg1 (result_real, result_imag, mpc_tanh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CLOG): return do_mpc_arg1 (result_real, result_imag, mpc_log, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CSQRT): return do_mpc_arg1 (result_real, result_imag, mpc_sqrt, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CASIN): return do_mpc_arg1 (result_real, result_imag, mpc_asin, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CACOS): return do_mpc_arg1 (result_real, result_imag, mpc_acos, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CATAN): return do_mpc_arg1 (result_real, result_imag, mpc_atan, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CASINH): return do_mpc_arg1 (result_real, result_imag, mpc_asinh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CACOSH): return do_mpc_arg1 (result_real, result_imag, mpc_acosh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CATANH): return do_mpc_arg1 (result_real, result_imag, mpc_atanh, arg_real, arg_imag, format); CASE_FLT_FN (BUILT_IN_CEXP): return do_mpc_arg1 (result_real, result_imag, mpc_exp, arg_real, arg_imag, format); default: return false; } }
static bool fold_const_call_cc (real_value *result_real, real_value *result_imag, combined_fn fn, const real_value *arg_real, const real_value *arg_imag, const real_format *format) { switch (fn) { CASE_CFN_CCOS: return do_mpc_arg1 (result_real, result_imag, mpc_cos, arg_real, arg_imag, format); CASE_CFN_CCOSH: return do_mpc_arg1 (result_real, result_imag, mpc_cosh, arg_real, arg_imag, format); CASE_CFN_CPROJ: if (real_isinf (arg_real) || real_isinf (arg_imag)) { real_inf (result_real); *result_imag = dconst0; result_imag->sign = arg_imag->sign; } else { *result_real = *arg_real; *result_imag = *arg_imag; } return true; CASE_CFN_CSIN: return do_mpc_arg1 (result_real, result_imag, mpc_sin, arg_real, arg_imag, format); CASE_CFN_CSINH: return do_mpc_arg1 (result_real, result_imag, mpc_sinh, arg_real, arg_imag, format); CASE_CFN_CTAN: return do_mpc_arg1 (result_real, result_imag, mpc_tan, arg_real, arg_imag, format); CASE_CFN_CTANH: return do_mpc_arg1 (result_real, result_imag, mpc_tanh, arg_real, arg_imag, format); CASE_CFN_CLOG: return do_mpc_arg1 (result_real, result_imag, mpc_log, arg_real, arg_imag, format); CASE_CFN_CSQRT: return do_mpc_arg1 (result_real, result_imag, mpc_sqrt, arg_real, arg_imag, format); CASE_CFN_CASIN: return do_mpc_arg1 (result_real, result_imag, mpc_asin, arg_real, arg_imag, format); CASE_CFN_CACOS: return do_mpc_arg1 (result_real, result_imag, mpc_acos, arg_real, arg_imag, format); CASE_CFN_CATAN: return do_mpc_arg1 (result_real, result_imag, mpc_atan, arg_real, arg_imag, format); CASE_CFN_CASINH: return do_mpc_arg1 (result_real, result_imag, mpc_asinh, arg_real, arg_imag, format); CASE_CFN_CACOSH: return do_mpc_arg1 (result_real, result_imag, mpc_acosh, arg_real, arg_imag, format); CASE_CFN_CATANH: return do_mpc_arg1 (result_real, result_imag, mpc_atanh, arg_real, arg_imag, format); CASE_CFN_CEXP: return do_mpc_arg1 (result_real, result_imag, mpc_exp, arg_real, arg_imag, format); default: return false; } }