Skip to content

Commit a7a463d

Browse files
committed
Refactor Trigonometry protocol and extensions into multiple files
1 parent 143cb1c commit a7a463d

File tree

6 files changed

+321
-305
lines changed

6 files changed

+321
-305
lines changed

Sources/Numerix/Mathematics/Trigonometry.swift

Lines changed: 0 additions & 305 deletions
This file was deleted.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
Double extension to conform to Trigonometry protocol.
3+
*/
4+
5+
import Accelerate
6+
7+
@_documentation(visibility: private)
8+
extension Double: Trigonometry {
9+
10+
// Vector
11+
12+
public static func sin(_ a: Vector<Double>) -> Vector<Double> {
13+
var result = Vector(like: a)
14+
vForce.sin(a.buffer, result: &result.buffer)
15+
return result
16+
}
17+
18+
public static func cos(_ a: Vector<Double>) -> Vector<Double> {
19+
var result = Vector(like: a)
20+
vForce.cos(a.buffer, result: &result.buffer)
21+
return result
22+
}
23+
24+
public static func tan(_ a: Vector<Double>) -> Vector<Double> {
25+
var result = Vector(like: a)
26+
vForce.tan(a.buffer, result: &result.buffer)
27+
return result
28+
}
29+
30+
public static func asin(_ a: Vector<Double>) -> Vector<Double> {
31+
var result = Vector(like: a)
32+
vForce.asin(a.buffer, result: &result.buffer)
33+
return result
34+
}
35+
36+
public static func acos(_ a: Vector<Double>) -> Vector<Double> {
37+
var result = Vector(like: a)
38+
vForce.acos(a.buffer, result: &result.buffer)
39+
return result
40+
}
41+
42+
public static func atan(_ a: Vector<Double>) -> Vector<Double> {
43+
var result = Vector(like: a)
44+
vForce.atan(a.buffer, result: &result.buffer)
45+
return result
46+
}
47+
48+
public static func csc(_ a: Vector<Double>) -> Vector<Double> {
49+
var result = Vector(like: a)
50+
vForce.sin(a.buffer, result: &result.buffer)
51+
vForce.reciprocal(result.buffer, result: &result.buffer)
52+
return result
53+
}
54+
55+
public static func sec(_ a: Vector<Double>) -> Vector<Double> {
56+
var result = Vector(like: a)
57+
vForce.cos(a.buffer, result: &result.buffer)
58+
vForce.reciprocal(result.buffer, result: &result.buffer)
59+
return result
60+
}
61+
62+
public static func cot(_ a: Vector<Double>) -> Vector<Double> {
63+
var result = Vector(like: a)
64+
vForce.tan(a.buffer, result: &result.buffer)
65+
vForce.reciprocal(result.buffer, result: &result.buffer)
66+
return result
67+
}
68+
69+
// Matrix
70+
71+
public static func sin(_ a: Matrix<Double>) -> Matrix<Double> {
72+
var result = Matrix(like: a)
73+
vForce.sin(a.buffer, result: &result.buffer)
74+
return result
75+
}
76+
77+
public static func cos(_ a: Matrix<Double>) -> Matrix<Double> {
78+
var result = Matrix(like: a)
79+
vForce.cos(a.buffer, result: &result.buffer)
80+
return result
81+
}
82+
83+
public static func tan(_ a: Matrix<Double>) -> Matrix<Double> {
84+
var result = Matrix(like: a)
85+
vForce.tan(a.buffer, result: &result.buffer)
86+
return result
87+
}
88+
}

0 commit comments

Comments
 (0)