Removed redundancies from ‘SurgeTests/ArithmeticTests.swift’
This commit is contained in:
parent
c217280e14
commit
f22fdf5afb
|
@ -26,15 +26,28 @@ import XCTest
|
|||
// swiftlint:disable nesting type_body_length
|
||||
|
||||
class ArithmeticTests: XCTestCase {
|
||||
let n = 1_000
|
||||
static let n = 1_000
|
||||
|
||||
func monotonic<Scalar>(count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint {
|
||||
return (1...count).map { Scalar($0) }
|
||||
}
|
||||
|
||||
func monotonicNormalized<Scalar>(count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint {
|
||||
let scalarCount = Scalar(count)
|
||||
return (1...count).map { Scalar($0) / scalarCount }
|
||||
}
|
||||
|
||||
func constant<Scalar>(_ value: Scalar, count: Int = ArithmeticTests.n) -> [Scalar] where Scalar: FloatingPoint {
|
||||
return Array(repeating: value, count: count)
|
||||
}
|
||||
|
||||
// MARK: - Addition: In Place
|
||||
|
||||
func test_add_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.addInPlace(&actual, rhs)
|
||||
|
@ -47,8 +60,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_add_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.addInPlace(&actual, rhs)
|
||||
|
@ -63,8 +76,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sub_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.subInPlace(&actual, rhs)
|
||||
|
@ -77,8 +90,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sub_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.subInPlace(&actual, rhs)
|
||||
|
@ -93,8 +106,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_mul_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.mulInPlace(&actual, rhs)
|
||||
|
@ -107,8 +120,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_mul_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.mulInPlace(&actual, rhs)
|
||||
|
@ -123,8 +136,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_div_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.divInPlace(&actual, rhs)
|
||||
|
@ -137,8 +150,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_div_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.divInPlace(&actual, rhs)
|
||||
|
@ -153,8 +166,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_mod_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let rhs: [Scalar] = Array(repeating: 42, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.modInPlace(&actual, rhs)
|
||||
|
@ -167,8 +180,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_mod_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let rhs: [Scalar] = Array(repeating: 42, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.modInPlace(&actual, rhs)
|
||||
|
@ -183,8 +196,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_remainder_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let rhs: [Scalar] = Array(repeating: -42, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(-2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.remainderInPlace(&actual, rhs)
|
||||
|
@ -197,8 +210,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_remainder_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let rhs: [Scalar] = Array(repeating: -42, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(-2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.remainderInPlace(&actual, rhs)
|
||||
|
@ -213,7 +226,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_exp_in_place_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.expInPlace(&actual)
|
||||
|
@ -226,7 +239,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_exp_in_place_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.expInPlace(&actual)
|
||||
|
@ -241,7 +254,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_exp2_in_place_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.exp2InPlace(&actual)
|
||||
|
@ -254,7 +267,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_exp2_in_place_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.exp2InPlace(&actual)
|
||||
|
@ -269,8 +282,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_pow_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = Array(repeating: 2.0, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.powInPlace(&actual, rhs)
|
||||
|
@ -283,8 +296,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_pow_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = Array(repeating: 2.0, count: n)
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = constant(2.0)
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.powInPlace(&actual, rhs)
|
||||
|
@ -297,7 +310,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_pow_in_place_array_scalar_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: Scalar = 2.0
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
|
@ -311,7 +324,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_pow_in_place_array_scalar_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: Scalar = 2.0
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
|
@ -327,7 +340,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sq_in_place_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.sqInPlace(&actual)
|
||||
|
@ -340,7 +353,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sq_in_place_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.sqInPlace(&actual)
|
||||
|
@ -355,7 +368,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sqrt_in_place_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.sqrtInPlace(&actual)
|
||||
|
@ -368,7 +381,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sqrt_in_place_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
var actual: [Scalar] = lhs
|
||||
Surge.sqrtInPlace(&actual)
|
||||
|
@ -383,8 +396,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_dot_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.dot(lhs, rhs)
|
||||
|
||||
|
@ -396,8 +409,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_dot_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.dot(lhs, rhs)
|
||||
|
||||
|
@ -411,7 +424,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sum_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.sum(lhs)
|
||||
|
||||
|
@ -423,7 +436,7 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_sum_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.sum(lhs)
|
||||
|
||||
|
@ -437,8 +450,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_dist_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.dist(lhs, rhs)
|
||||
|
||||
|
@ -450,8 +463,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_dist_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.dist(lhs, rhs)
|
||||
|
||||
|
@ -465,8 +478,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_distsq_array_array_float() {
|
||||
typealias Scalar = Float
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.distSq(lhs, rhs)
|
||||
|
||||
|
@ -480,8 +493,8 @@ class ArithmeticTests: XCTestCase {
|
|||
func test_distsq_array_array_double() {
|
||||
typealias Scalar = Double
|
||||
|
||||
let lhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let rhs: [Scalar] = (1...n).map { Scalar($0) / Scalar(n) }
|
||||
let lhs: [Scalar] = monotonicNormalized()
|
||||
let rhs: [Scalar] = monotonicNormalized()
|
||||
|
||||
let actual: Scalar = Surge.distSq(lhs, rhs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue