Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}