-
Notifications
You must be signed in to change notification settings - Fork 11
/
math_trig.go
125 lines (101 loc) · 3.44 KB
/
math_trig.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package template
import (
"math"
)
func rad(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, func(a float64) float64 {
return a * math.Pi / 180
})
}
func deg(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, func(a float64) float64 {
return a * 180 / math.Pi
})
}
func acos(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Acos)
}
func acosh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Acosh)
}
func asin(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Asin)
}
func asinh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Asinh)
}
func atan(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Atan)
}
func atan2(a, b interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat2(a, b, math.Atan2)
}
func atanh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Atanh)
}
func cos(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Cos)
}
func cosh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Cosh)
}
func hypot(a, b interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat2(a, b, math.Hypot)
}
func ilogb(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return math.Ilogb(toFloat(a)), nil
}
func logFunc(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Log)
}
func log10(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Log10)
}
func log1p(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Log1p)
}
func log2(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Log2)
}
func logb(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Logb)
}
func sin(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Sin)
}
func sincos(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
s, c := math.Sincos(toFloat(a))
return []interface{}{simplify(s), simplify(c)}, nil
}
func sinh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Sinh)
}
func tan(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Tan)
}
func tanh(a interface{}) (r interface{}, err error) {
defer func() { err = trapError(err, recover()) }()
return processFloat(a, math.Tanh)
}