@@ -523,6 +523,12 @@ public struct MotionOptions : OptionSet {
523
523
/// Represents an infinite number of repeat motion cycles.
524
524
public let REPEAT_INFINITE : UInt = 0
525
525
526
+ /// Utility methods
527
+ public struct MotionUtils {
528
+
529
+ static let MM_PI_2 = Double . pi / 2
530
+
531
+ }
526
532
527
533
528
534
// MARK: - Utility extensions
@@ -549,13 +555,13 @@ func ≈≈ (a: Float, b: Float) -> Bool {
549
555
let fabs_b = fabs ( b)
550
556
let diff = fabs ( fabs_a - fabs_b)
551
557
552
- if ( a == 0.0 || b == 0.0 || diff < FLT_MIN ) {
558
+ if ( a == 0.0 || b == 0.0 || diff < Float . leastNormalMagnitude ) {
553
559
// a or b is zero or both are extremely close to it
554
560
// relative error is less meaningful here
555
- return diff < ( FLT_EPSILON * FLT_MIN )
561
+ return diff < ( Float . ulpOfOne * Float . leastNormalMagnitude )
556
562
} else {
557
563
558
- return ( diff / ( fabs_a + fabs_b) ) < FLT_EPSILON
564
+ return ( diff / ( fabs_a + fabs_b) ) < Float . ulpOfOne
559
565
}
560
566
}
561
567
@@ -569,12 +575,12 @@ func ≈≈ (a: Double, b: Double) -> Bool {
569
575
let fabs_b = fabs ( b)
570
576
let diff = fabs ( fabs_a - fabs_b)
571
577
572
- if ( a == 0.0 || b == 0.0 || diff < DBL_MIN ) {
578
+ if ( a == 0.0 || b == 0.0 || diff < Double . leastNormalMagnitude ) {
573
579
// a or b is zero or both are extremely close to it
574
580
// relative error is less meaningful here
575
- return diff < ( DBL_EPSILON * DBL_MIN )
581
+ return diff < ( Double . ulpOfOne * Double . leastNormalMagnitude )
576
582
} else {
577
- return ( diff / ( fabs_a + fabs_b) ) < DBL_EPSILON
583
+ return ( diff / ( fabs_a + fabs_b) ) < Double . ulpOfOne
578
584
}
579
585
580
586
}
0 commit comments