Update tests for exponentiation operator

This commit is contained in:
Xiaodi Wu 2017-08-27 00:31:00 -05:00
parent a4a9ac7368
commit 743e0d86e3
3 changed files with 32 additions and 29 deletions

View File

@ -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)

View File

@ -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)
}
}

View File

@ -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)