| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /// Whether two doubles are within a given distance of each other. |
| /// |
| /// The `epsilon` argument must be positive and not null. |
| /// The `a` and `b` arguments may be null. A null value is only considered |
| /// near-equal to another null value. |
| bool nearEqual(double a, double b, double epsilon) { |
| assert(epsilon != null); |
| assert(epsilon >= 0.0); |
| if (a == null || b == null) |
| return a == b; |
| return (a > (b - epsilon)) && (a < (b + epsilon)) || a == b; |
| } |
| |
| /// Whether a double is within a given distance of zero. |
| /// |
| /// The epsilon argument must be positive. |
| bool nearZero(double a, double epsilon) => nearEqual(a, 0.0, epsilon); |