Update tests for exponentiation operator
This commit is contained in:
parent
a4a9ac7368
commit
743e0d86e3
|
@ -1579,7 +1579,7 @@ class ComplexTests : XCTestCase {
|
|||
XCTAssertEqual(b.real, 42, accuracy: 0.00000000000001)
|
||||
|
||||
let i: Complex128 = .i
|
||||
let actual = Complex.pow(i, i)
|
||||
let actual = i ** i
|
||||
XCTAssertEqual(actual.real, Double.exp(-Double.pi / 2))
|
||||
XCTAssertEqual(actual.imaginary, 0)
|
||||
|
||||
|
@ -1813,7 +1813,7 @@ class ComplexTests : XCTestCase {
|
|||
|
||||
let g: Complex128 = 1 + .i
|
||||
let h: Complex128 =
|
||||
Complex.log(g + Complex.pow(-1, 1 / 4) * Complex.sqrt(2 + .i))
|
||||
Complex.log(g + (-1 ** (1 / 4)) * Complex.sqrt(2 + .i))
|
||||
XCTAssertEqual(Complex.acosh(g).real, h.real)
|
||||
XCTAssertEqual(Complex.acosh(g).imaginary, h.imaginary)
|
||||
|
||||
|
|
|
@ -6,13 +6,12 @@ class ExponentiationTests : XCTestCase {
|
|||
for i in -21...21 {
|
||||
for j in -7...7 {
|
||||
if i == 0 && j < 0 {
|
||||
// In this case, Int.pow(i, j) causes a division-by-zero error.
|
||||
// Likewise, Double.pow(Double(i), Double(j)) also causes the same
|
||||
// error.
|
||||
// In this case, i ** j causes a division-by-zero error.
|
||||
// Likewise, Double(i) ** Double(j) also causes the same error.
|
||||
continue
|
||||
}
|
||||
let actual = Int.pow(i, j)
|
||||
let expected = Int(Double.pow(Double(i), Double(j)))
|
||||
let actual = i ** j
|
||||
let expected = Int(Double(i) ** Double(j))
|
||||
XCTAssertEqual(actual, expected)
|
||||
}
|
||||
}
|
||||
|
@ -21,8 +20,8 @@ class ExponentiationTests : XCTestCase {
|
|||
func testUIntPow() {
|
||||
for i in (0 as UInt)...21 {
|
||||
for j in (0 as UInt)...7 {
|
||||
let actual = UInt.pow(i, j)
|
||||
let expected = UInt(Double.pow(Double(i), Double(j)))
|
||||
let actual = i ** j
|
||||
let expected = UInt(Double(i) ** Double(j))
|
||||
XCTAssertEqual(actual, expected)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -241,8 +241,12 @@ extension MockReal : FloatingPoint {
|
|||
}
|
||||
|
||||
extension MockReal : Real {
|
||||
static func pow(_ base: MockReal, _ exponent: MockReal) -> MockReal {
|
||||
return MockReal(Double.pow(base._value, exponent._value))
|
||||
static func ** (lhs: MockReal, rhs: MockReal) -> MockReal {
|
||||
return MockReal(lhs._value ** rhs._value)
|
||||
}
|
||||
|
||||
static func **= (lhs: inout MockReal, rhs: MockReal) {
|
||||
lhs = lhs ** rhs
|
||||
}
|
||||
|
||||
func naturalExponential() -> MockReal {
|
||||
|
@ -469,15 +473,15 @@ class RealTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testFloat() {
|
||||
XCTAssertEqual(Float.pow(-2, -3), -0.125)
|
||||
XCTAssertTrue(Float.pow(0, 42).isZero)
|
||||
XCTAssertTrue(Float.pow(0, 42).sign == .plus)
|
||||
XCTAssertTrue(Float.pow(-0.0, 42).isZero)
|
||||
XCTAssertTrue(Float.pow(-0.0, 42).sign == .plus)
|
||||
XCTAssertTrue(Float.pow(0, 43).isZero)
|
||||
XCTAssertTrue(Float.pow(0, 43).sign == .plus)
|
||||
XCTAssertTrue(Float.pow(-0.0, 43).isZero)
|
||||
XCTAssertTrue(Float.pow(-0.0, 43).sign == .minus)
|
||||
XCTAssertEqual(((-2 as Float) ** -3), -0.125)
|
||||
XCTAssertTrue(((0 as Float) ** 42).isZero)
|
||||
XCTAssertTrue(((0 as Float) ** 42).sign == .plus)
|
||||
XCTAssertTrue(((-0.0 as Float) ** 42).isZero)
|
||||
XCTAssertTrue(((-0.0 as Float) ** 42).sign == .plus)
|
||||
XCTAssertTrue(((0 as Float) ** 43).isZero)
|
||||
XCTAssertTrue(((0 as Float) ** 43).sign == .plus)
|
||||
XCTAssertTrue(((-0.0 as Float) ** 43).isZero)
|
||||
XCTAssertTrue(((-0.0 as Float) ** 43).sign == .minus)
|
||||
|
||||
XCTAssertEqual(Float.cbrt(64), 4)
|
||||
XCTAssertEqual(Float.cbrt(-64), -4)
|
||||
|
@ -606,15 +610,15 @@ class RealTests: XCTestCase {
|
|||
}
|
||||
|
||||
func testDouble() {
|
||||
XCTAssertEqual(Double.pow(-2, -3), -0.125)
|
||||
XCTAssertTrue(Double.pow(0, 42).isZero)
|
||||
XCTAssertTrue(Double.pow(0, 42).sign == .plus)
|
||||
XCTAssertTrue(Double.pow(-0.0, 42).isZero)
|
||||
XCTAssertTrue(Double.pow(-0.0, 42).sign == .plus)
|
||||
XCTAssertTrue(Double.pow(0, 43).isZero)
|
||||
XCTAssertTrue(Double.pow(0, 43).sign == .plus)
|
||||
XCTAssertTrue(Double.pow(-0.0, 43).isZero)
|
||||
XCTAssertTrue(Double.pow(-0.0, 43).sign == .minus)
|
||||
XCTAssertEqual(((-2 as Double) ** -3), -0.125)
|
||||
XCTAssertTrue(((0 as Double) ** 42).isZero)
|
||||
XCTAssertTrue(((0 as Double) ** 42).sign == .plus)
|
||||
XCTAssertTrue(((-0.0 as Double) ** 42).isZero)
|
||||
XCTAssertTrue(((-0.0 as Double) ** 42).sign == .plus)
|
||||
XCTAssertTrue(((0 as Double) ** 43).isZero)
|
||||
XCTAssertTrue(((0 as Double) ** 43).sign == .plus)
|
||||
XCTAssertTrue(((-0.0 as Double) ** 43).isZero)
|
||||
XCTAssertTrue(((-0.0 as Double) ** 43).sign == .minus)
|
||||
|
||||
XCTAssertEqual(Double.cbrt(64), 4)
|
||||
XCTAssertEqual(Double.cbrt(-64), -4)
|
||||
|
|
Loading…
Reference in New Issue