int tabcmp(int dummy, double tol, const struct tabprm *tab1, const struct tabprm *tab2, int *equal) { int m, M, N; /* Avert nuisance compiler warnings about unused parameters. */ (void)dummy; if (tab1 == 0x0) return TABERR_NULL_POINTER; if (tab2 == 0x0) return TABERR_NULL_POINTER; if (equal == 0x0) return TABERR_NULL_POINTER; *equal = 0; if (tab1->M != tab2->M) { return 0; } M = tab1->M; if (!wcsutil_intEq(M, tab1->K, tab2->K) || !wcsutil_intEq(M, tab1->map, tab2->map) || !wcsutil_Eq(M, tol, tab1->crval, tab2->crval)) { return 0; } N = M; for (m = 0; m < M; m++) { if (!wcsutil_Eq(tab1->K[m], tol, tab1->index[m], tab2->index[m])) { return 0; } N *= tab1->K[m]; } if (!wcsutil_Eq(N, tol, tab1->coord, tab2->coord)) { return 0; } *equal = 1; return 0; }
int tabcmp(int cmp, double tol, const struct tabprm *tab1, const struct tabprm *tab2, int *equal) { int status = 0; int m, M, N; if (tab1 == 0x0) return TABERR_NULL_POINTER; if (tab2 == 0x0) return TABERR_NULL_POINTER; if (equal == 0x0) return TABERR_NULL_POINTER; *equal = 0; if (tab1->M != tab2->M) { return 0; } M = tab1->M; if (!wcsutil_intEq(M, tab1->K, tab2->K) || !wcsutil_intEq(M, tab1->map, tab2->map) || !wcsutil_Eq(M, tol, tab1->crval, tab2->crval)) { return 0; } N = M; for (m = 0; m < M; m++) { if (!wcsutil_Eq(tab1->K[m], tol, tab1->index[m], tab2->index[m])) { return 0; } N *= tab1->K[m]; } if (!wcsutil_Eq(N, tol, tab1->coord, tab2->coord)) { return 0; } *equal = 1; return 0; }