//===--- Walsh.swift ------------------------------------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// import TestsUtils #if canImport(Glibc) import Glibc #elseif canImport(Musl) import Musl #elseif os(Windows) import MSVCRT #else import Darwin #endif public let benchmarks = BenchmarkInfo( name: "Walsh", runFunction: run_Walsh, tags: [.validation, .algorithm]) func isPowerOfTwo(_ x: Int) -> Bool { return (x & (x - 1)) == 0 } // Fast Walsh Hadamard Transform func walshTransform(_ data: inout [Double]) { assert(isPowerOfTwo(data.count), "Not a power of two") var temp = [Double](repeating: 0, count: data.count) let ret = walshImpl(&data, &temp, 0, data.count) for i in 0.. [Double] { if (size == 1) { return data } let stride = size/2 for i in 0..