static double imgerr(char *m, float *x, float *y, int n) { double r; if (false); else if (0 == strcmp(m, "MSE")) r = mean_square_error(x, y, n); else if (0 == strcmp(m, "RMSE")) r = root_mean_square_error(x, y, n); else if (0 == strcmp(m, "MAE")) r = mean_absolute_error(x, y, n); else if (0 == strcmp(m, "UIQI")) r = uiqi(x, y, n); else if (0 == strcmp(m, "SSIM")) r = ssim(x, y, n); else if (0 == strcmp(m, "PSNR")) r = psnr(x, y, n); else if (0 == strcmp(m, "NCC")) r = ncc(x, y, n); else if (string_is_lp(m, &r)) r = ell_pee_distance(x, y, n, r); else fail("unrecognized metric \"%s\"", m); return r; }
metrics_accumulator::operator metrics() const { return {mean_absolute_error(), median_absolute_error(), mean_squared_error(), r2_score()}; }