mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
172 lines
5.4 KiB
Swift
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()
|