#include "../test_utils.h"
double __enzyme_error_estimate(void *, ...);
double compute(double a, double b) { return a + b; }
void compute_ptr(double *a, double *b, double *ret) { *ret = *a + *b; }
int main(int argc, char **argv) {
double a = 99.0;
double b = 127.0;
double err_a = 0.0; double err_b = 0.0;
double ret_ptr = 0;
double err_ret_ptr = 0.0;
double err_ret = __enzyme_error_estimate(compute, a, err_a, b, err_b);
__enzyme_error_estimate(compute_ptr, &a, &err_a, &b, &err_b, &ret_ptr,
&err_ret_ptr);
APPROX_EQ(err_ret_ptr, 2.84217e-14, 1e-17);
APPROX_EQ(err_ret_ptr, err_ret, 1e-17);
printf("ret = %e, err_ret = %e, err_ret_ptr = %e\n", ret_ptr, err_ret,
err_ret_ptr);
return 0;
}