Files
swift-mirror/test/stdlib/Accelerate_vDSPIntegration.swift
2019-06-25 20:19:07 -07:00

172 lines
5.4 KiB
Swift

// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: rdar50301438
// REQUIRES: objc_interop
// UNSUPPORTED: OS=watchos
import StdlibUnittest
import Accelerate
var Accelerate_vDSPIntegrationTests = TestSuite("Accelerate_vDSPIntegration")
//===----------------------------------------------------------------------===//
//
// vDSP integration tests
//
//===----------------------------------------------------------------------===//
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) {
let count = 1024
let n = vDSP_Length(1024)
let sourcef: [Float] = (0 ..< 1024).map {
return sin(Float($0) * 0.03) * cos(Float($0) * 0.07)
}
let sourced: [Double] = (0 ..< 1024).map {
return sin(Double($0) * 0.03) * cos(Double($0) * 0.07)
}
Accelerate_vDSPIntegrationTests.test("vDSP/SinglePrecisionRunningSum") {
var result = [Float](repeating: 0,
count: count)
vDSP.integrate(sourcef,
using: .runningSum,
result: &result)
var legacyResult = [Float](repeating: -1,
count: count)
vDSP_vrsum(sourcef, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourcef,
using: .runningSum)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
Accelerate_vDSPIntegrationTests.test("vDSP/SinglePrecisionTrapezoidal") {
var result = [Float](repeating: 0,
count: count)
vDSP.integrate(sourcef,
using: .simpson,
result: &result)
var legacyResult = [Float](repeating: -1,
count: count)
vDSP_vsimps(sourcef, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourcef,
using: .simpson)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
Accelerate_vDSPIntegrationTests.test("vDSP/SinglePrecisionTrapezoidal") {
var result = [Float](repeating: 0,
count: count)
vDSP.integrate(sourcef,
using: .trapezoidal,
result: &result)
var legacyResult = [Float](repeating: -1,
count: count)
vDSP_vtrapz(sourcef, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourcef,
using: .trapezoidal)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
Accelerate_vDSPIntegrationTests.test("vDSP/DoublePrecisionRunningSum") {
var result = [Double](repeating: 0,
count: count)
vDSP.integrate(sourced,
using: .runningSum,
result: &result)
var legacyResult = [Double](repeating: -1,
count: count)
vDSP_vrsumD(sourced, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourced,
using: .runningSum)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
Accelerate_vDSPIntegrationTests.test("vDSP/DoublePrecisionSimpson") {
var result = [Double](repeating: 0,
count: count)
vDSP.integrate(sourced,
using: .simpson,
result: &result)
var legacyResult = [Double](repeating: -1,
count: count)
vDSP_vsimpsD(sourced, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourced,
using: .simpson)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
Accelerate_vDSPIntegrationTests.test("vDSP/DoublePrecisionTrapezoidal") {
var result = [Double](repeating: 0,
count: count)
vDSP.integrate(sourced,
using: .trapezoidal,
result: &result)
var legacyResult = [Double](repeating: -1,
count: count)
vDSP_vtrapzD(sourced, 1,
[1],
&legacyResult, 1,
n)
let returnedResult = vDSP.integrate(sourced,
using: .trapezoidal)
expectTrue(result.elementsEqual(legacyResult))
expectTrue(result.elementsEqual(returnedResult))
}
}
runAllTests()