UNPKG

2.62 kBJavaScriptView Raw
1import { acosh, asinh, atanh, cosh, sign, sinh, tanh } from '../../utils/number'
2
3const n1 = 'number'
4const n2 = 'number, number'
5
6export function acosNumber (x) {
7 return Math.acos(x)
8}
9acosNumber.signature = n1
10
11export function acoshNumber (x) {
12 return acosh(x)
13}
14acoshNumber.signature = n1
15
16export function acotNumber (x) {
17 return Math.atan(1 / x)
18}
19acotNumber.signature = n1
20
21export function acothNumber (x) {
22 return isFinite(x)
23 ? (Math.log((x + 1) / x) + Math.log(x / (x - 1))) / 2
24 : 0
25}
26acothNumber.signature = n1
27
28export function acscNumber (x) {
29 return Math.asin(1 / x)
30}
31acscNumber.signature = n1
32
33export function acschNumber (x) {
34 const xInv = 1 / x
35 return Math.log(xInv + Math.sqrt(xInv * xInv + 1))
36}
37acschNumber.signature = n1
38
39export function asecNumber (x) {
40 return Math.acos(1 / x)
41}
42asecNumber.signature = n1
43
44export function asechNumber (x) {
45 const xInv = 1 / x
46 const ret = Math.sqrt(xInv * xInv - 1)
47 return Math.log(ret + xInv)
48}
49asechNumber.signature = n1
50
51export function asinNumber (x) {
52 return Math.asin(x)
53}
54asinNumber.signature = n1
55
56export function asinhNumber (x) {
57 return asinh(x)
58}
59asinhNumber.signature = n1
60
61export function atanNumber (x) {
62 return Math.atan(x)
63}
64atanNumber.signature = n1
65
66export function atan2Number (y, x) {
67 return Math.atan2(y, x)
68}
69atan2Number.signature = n2
70
71export function atanhNumber (x) {
72 return atanh(x)
73}
74atanhNumber.signature = n1
75
76export function cosNumber (x) {
77 return Math.cos(x)
78}
79cosNumber.signature = n1
80
81export function coshNumber (x) {
82 return cosh(x)
83}
84coshNumber.signature = n1
85
86export function cotNumber (x) {
87 return 1 / Math.tan(x)
88}
89cotNumber.signature = n1
90
91export function cothNumber (x) {
92 const e = Math.exp(2 * x)
93 return (e + 1) / (e - 1)
94}
95cothNumber.signature = n1
96
97export function cscNumber (x) {
98 return 1 / Math.sin(x)
99}
100cscNumber.signature = n1
101
102export function cschNumber (x) {
103 // consider values close to zero (+/-)
104 if (x === 0) {
105 return Number.POSITIVE_INFINITY
106 } else {
107 return Math.abs(2 / (Math.exp(x) - Math.exp(-x))) * sign(x)
108 }
109}
110cschNumber.signature = n1
111
112export function secNumber (x) {
113 return 1 / Math.cos(x)
114}
115secNumber.signature = n1
116
117export function sechNumber (x) {
118 return 2 / (Math.exp(x) + Math.exp(-x))
119}
120sechNumber.signature = n1
121
122export function sinNumber (x) {
123 return Math.sin(x)
124}
125sinNumber.signature = n1
126
127export function sinhNumber (x) {
128 return sinh(x)
129}
130sinhNumber.signature = n1
131
132export function tanNumber (x) {
133 return Math.tan(x)
134}
135tanNumber.signature = n1
136
137export function tanhNumber (x) {
138 return tanh(x)
139}
140tanhNumber.signature = n1