int cpuColorSpinorField::Compare(const cpuColorSpinorField &a, const cpuColorSpinorField &b, const int resolution) { int ret = 0; checkField(a, b); if (a.precision == QUDA_HALF_PRECISION || b.precision == QUDA_HALF_PRECISION) errorQuda("Half precision not implemented"); if (a.fieldOrder != b.fieldOrder || (a.fieldOrder != QUDA_SPACE_COLOR_SPIN_FIELD_ORDER && a.fieldOrder != QUDA_SPACE_SPIN_COLOR_FIELD_ORDER)) errorQuda("Field ordering not supported"); if (a.precision == QUDA_DOUBLE_PRECISION) if (b.precision == QUDA_DOUBLE_PRECISION) ret = compareSpinor((double*)a.v, (double*)b.v, a.volume, 2*a.nSpin*a.nColor, resolution); else ret = compareSpinor((double*)a.v, (float*)b.v, a.volume, 2*a.nSpin*a.nColor, resolution); else if (b.precision == QUDA_DOUBLE_PRECISION) ret = compareSpinor((float*)a.v, (double*)b.v, a.volume, 2*a.nSpin*a.nColor, resolution); else ret =compareSpinor((float*)a.v, (float*)b.v, a.volume, 2*a.nSpin*a.nColor, resolution); return ret; }
int cpuColorSpinorField::Compare(const cpuColorSpinorField &a, const cpuColorSpinorField &b, const int tol) { checkField(a, b); int ret = 0; if (a.precision == QUDA_DOUBLE_PRECISION) if (b.precision == QUDA_DOUBLE_PRECISION) ret = compareSpinor(*(a.order_double), *(b.order_double), tol); else ret = compareSpinor(*(a.order_double), *(b.order_single), tol); else if (b.precision == QUDA_DOUBLE_PRECISION) ret = compareSpinor(*(a.order_single), *(b.order_double), tol); else ret =compareSpinor(*(a.order_single), *(b.order_single), tol); return ret; }