431 {
432 double diff = lhs - rhs.mValue;
433 if (diff < 0) diff = -diff;
434
435
436 if (rhs.mMargin > 0.0 && diff <= rhs.mMargin) {
437 return true;
438 }
439
440
441 double lhsAbs = lhs < 0 ? -lhs : lhs;
442 double rhsAbs = rhs.mValue < 0 ? -rhs.mValue : rhs.mValue;
443 double maxAbs = lhsAbs > rhsAbs ? lhsAbs : rhsAbs;
444 double relativeMargin = rhs.mEpsilon * (rhs.mScale + maxAbs);
445 return diff <= relativeMargin;
446 }