Skip to content

Commit b711cf5

Browse files
committed
bug fix
1 parent 8b6d3c5 commit b711cf5

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

libc/utils/MPCWrapper/MPCUtils.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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>
220229
bool 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

Comments
 (0)