@@ -529,51 +529,51 @@ if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) {
529529 expectTrue ( elementsAlmostEqual ( result, legacyResult) )
530530 expectTrue ( elementsAlmostEqual ( result, returnedResult) )
531531 }
532-
533- //===----------------------------------------------------------------------===//
534- //
535- // Array almost equal.
536- //
537- //===----------------------------------------------------------------------===//
538-
539- func elementsAlmostEqual< T: FloatingPoint > ( _ lhs: [ T ] , _ rhs: [ T ] ) -> Bool {
540- var returnValue = true
541- zip ( lhs, rhs) . forEach {
542- if !isAlmostEqual( $0. 0 , $0. 1 ) {
543- returnValue = false
544- return
545- }
546- }
547- return returnValue
548- }
549-
550- func isAlmostEqual< T: FloatingPoint > ( _ lhs: T ,
551- _ rhs: T ,
552- tolerance: T = T . ulpOfOne. squareRoot ( ) ) -> Bool {
553- assert ( tolerance >= . ulpOfOne && tolerance < 1 , " tolerance should be in [.ulpOfOne, 1). " )
554- guard lhs. isFinite && rhs. isFinite else {
555- return rescaledAlmostEqual ( lhs, rhs, tolerance: tolerance)
556- }
557- let scale = max ( abs ( lhs) , abs ( rhs) , . leastNormalMagnitude)
558- return abs ( lhs - rhs) < scale*tolerance
559- }
560-
561- func rescaledAlmostEqual< T: FloatingPoint > ( _ lhs: T ,
562- _ rhs: T ,
563- tolerance: T ) -> Bool {
564- if lhs. isNaN || rhs. isNaN { return false }
565- if lhs. isInfinite {
566- if rhs. isInfinite { return lhs == rhs }
567- let scaledLhs = T ( sign: lhs. sign,
568- exponent: T . greatestFiniteMagnitude. exponent,
569- significand: 1 )
570- let scaledRhs = T ( sign: . plus,
571- exponent: - 1 ,
572- significand: rhs)
573- return isAlmostEqual ( scaledLhs, scaledRhs, tolerance: tolerance)
574- }
575- return rescaledAlmostEqual ( rhs, lhs, tolerance: tolerance)
532+ }
533+
534+ //===----------------------------------------------------------------------===//
535+ //
536+ // Array almost equal.
537+ //
538+ //===----------------------------------------------------------------------===//
539+
540+ func elementsAlmostEqual< T: FloatingPoint > ( _ lhs: [ T ] , _ rhs: [ T ] ) -> Bool {
541+ var returnValue = true
542+ zip ( lhs, rhs) . forEach {
543+ if !isAlmostEqual( $0. 0 , $0. 1 ) {
544+ returnValue = false
545+ return
576546 }
547+ }
548+ return returnValue
549+ }
550+
551+ func isAlmostEqual< T: FloatingPoint > ( _ lhs: T ,
552+ _ rhs: T ,
553+ tolerance: T = T . ulpOfOne. squareRoot ( ) ) -> Bool {
554+ assert ( tolerance >= . ulpOfOne && tolerance < 1 , " tolerance should be in [.ulpOfOne, 1). " )
555+ guard lhs. isFinite && rhs. isFinite else {
556+ return rescaledAlmostEqual ( lhs, rhs, tolerance: tolerance)
557+ }
558+ let scale = max ( abs ( lhs) , abs ( rhs) , . leastNormalMagnitude)
559+ return abs ( lhs - rhs) < scale*tolerance
560+ }
561+
562+ func rescaledAlmostEqual< T: FloatingPoint > ( _ lhs: T ,
563+ _ rhs: T ,
564+ tolerance: T ) -> Bool {
565+ if lhs. isNaN || rhs. isNaN { return false }
566+ if lhs. isInfinite {
567+ if rhs. isInfinite { return lhs == rhs }
568+ let scaledLhs = T ( sign: lhs. sign,
569+ exponent: T . greatestFiniteMagnitude. exponent,
570+ significand: 1 )
571+ let scaledRhs = T ( sign: . plus,
572+ exponent: - 1 ,
573+ significand: rhs)
574+ return isAlmostEqual ( scaledLhs, scaledRhs, tolerance: tolerance)
575+ }
576+ return rescaledAlmostEqual ( rhs, lhs, tolerance: tolerance)
577577}
578578
579579runAllTests ( )
0 commit comments