File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 99 runs-on : macOS-latest
1010 steps :
1111 - name : Checkout
12- uses : actions/checkout@v3
12+ uses : actions/checkout@v4
1313 - name : Select Xcode
14- run : sudo xcode-select -s /Applications/Xcode_15.0 .app
14+ run : sudo xcode-select -s /Applications/Xcode_26.3 .app
1515 - name : Build and Test SPM
1616 run : swift test -v
1717 - name : Build and Test CocoaPods
1818 run : pod lib lint --allow-warnings --fail-fast
1919 linux :
2020 runs-on : ubuntu-latest
2121 container :
22- image : swift:5.8.1
22+ image : swift:6.0
2323 steps :
2424 - name : Checkout
25- uses : actions/checkout@v3
25+ uses : actions/checkout@v4
2626 - name : Build and Test
2727 run : swift test -v
Original file line number Diff line number Diff line change @@ -2999,7 +2999,7 @@ public struct BDouble:
29992999 return true ;
30003000 } else if diff <= epsilon {
30013001 return true // shortcut
3002- } else if ( lhs == 0 || rhs == 0 || diff < Double . leastNormalMagnitude) {
3002+ } else if ( lhs. isZero ( ) || rhs. isZero ( ) || diff < Double . leastNormalMagnitude) {
30033003 // lhs or rhs is zero or both are extremely close to it
30043004 // relative error is less meaningful here
30053005 return diff < ( epsilon * Double. leastNormalMagnitude) ;
Original file line number Diff line number Diff line change @@ -493,6 +493,20 @@ class BDoubleTests : XCTestCase {
493493 XCTAssert ( BDouble . nearlyEqual ( BDouble ( 0.000000001 ) , BDMin) ) ;
494494 XCTAssert ( BDouble . nearlyEqual ( BDMin, BDouble ( 0.000000001 ) ) ) ;
495495 XCTAssert ( BDouble . nearlyEqual ( - BDMin, BDouble ( 0.000000001 ) ) ) ;
496+
497+ // Negative-signed zero constructed via raw initializer (canonicalized by minimize())
498+ let rawNegZero = BDouble ( sign: true , numerator: [ 0 ] , denominator: [ 2 ] )
499+ XCTAssert ( rawNegZero. isZero ( ) )
500+ XCTAssert ( BDouble . nearlyEqual ( rawNegZero, BDouble ( 0.0 ) ) )
501+ XCTAssert ( BDouble . nearlyEqual ( BDouble ( 0.0 ) , rawNegZero) )
502+ XCTAssert ( BDouble . nearlyEqual ( rawNegZero, rawNegZero) )
503+ XCTAssert ( BDouble . nearlyEqual ( rawNegZero, BDouble ( 0.00000001 ) ) )
504+
505+ // Integer-literal zero (the pattern that triggered the Xcode 26.4 ambiguity)
506+ let intZero : BDouble = 0
507+ XCTAssert ( intZero. isZero ( ) )
508+ XCTAssert ( BDouble . nearlyEqual ( intZero, BDouble ( 0.0 ) ) )
509+ XCTAssert ( BDouble . nearlyEqual ( intZero, rawNegZero) )
496510 }
497511
498512 func testRadix( ) {
You can’t perform that action at this time.
0 commit comments