@@ -194,16 +194,25 @@ bool compare_unary_operation_single_output_same_type(Operation op,
194194 OutputType libc_result,
195195 double ulp_tolerance,
196196 MPCRoundingMode rounding) {
197+
197198 unsigned int precision = get_precision<get_real_t <InputType>>(ulp_tolerance);
199+
198200 MPCNumber mpc_result;
199201 mpc_result = unary_operation (op, input, precision, rounding);
200- mpfr_t real, imag;
202+
201203 mpc_t mpc_result_val;
204+ mpc_init3 (mpc_result_val, precision, precision);
202205 mpc_result.getValue (mpc_result_val);
206+
207+ mpfr_t real, imag;
208+ mpfr_init2 (real, precision);
209+ mpfr_init2 (imag, precision);
203210 mpc_real (real, mpc_result_val, get_mpfr_rounding_mode (rounding.Rrnd ));
204211 mpc_imag (imag, mpc_result_val, get_mpfr_rounding_mode (rounding.Irnd ));
212+
205213 mpfr::MPFRNumber mpfr_real (real, precision, rounding.Rrnd );
206214 mpfr::MPFRNumber mpfr_imag (imag, precision, rounding.Irnd );
215+
207216 double ulp_real = mpfr_real.ulp (
208217 (cpp::bit_cast<MPCComplex<get_real_t <InputType>>>(libc_result)).real );
209218 double ulp_imag = mpfr_imag.ulp (
@@ -220,17 +229,24 @@ template <typename InputType, typename OutputType>
220229bool compare_unary_operation_single_output_different_type (
221230 Operation op, InputType input, OutputType libc_result, double ulp_tolerance,
222231 MPCRoundingMode rounding) {
232+
223233 unsigned int precision = get_precision<get_real_t <InputType>>(ulp_tolerance);
234+
224235 MPCNumber mpc_result;
225236 mpc_result = unary_operation (op, input, precision, rounding);
237+
226238 mpc_t mpc_result_val;
227239 mpc_init3 (mpc_result_val, precision, precision);
228240 mpc_result.getValue (mpc_result_val);
241+
229242 mpfr_t real;
230243 mpfr_init2 (real, precision);
231244 mpc_real (real, mpc_result_val, get_mpfr_rounding_mode (rounding.Rrnd ));
245+
232246 mpfr::MPFRNumber mpfr_real (real, precision, rounding.Rrnd );
247+
233248 double ulp_real = mpfr_real.ulp (libc_result);
249+
234250 return (ulp_real <= ulp_tolerance);
235251}
236252
0 commit comments