|
4 | 4 | @scalar_rule(log2(x), inv(x) / log(oftype(x, 2)))
|
5 | 5 | @scalar_rule(log1p(x), inv(x + 1))
|
6 | 6 | @scalar_rule(expm1(x), exp(x))
|
| 7 | + |
7 | 8 | @scalar_rule(sin(x), cos(x))
|
8 | 9 | @scalar_rule(cos(x), -sin(x))
|
9 | 10 | @scalar_rule(sinpi(x), π * cospi(x))
|
10 | 11 | @scalar_rule(cospi(x), -π * sinpi(x))
|
11 | 12 | @scalar_rule(sind(x), (π / oftype(x, 180)) * cosd(x))
|
12 | 13 | @scalar_rule(cosd(x), -(π / oftype(x, 180)) * sind(x))
|
| 14 | + |
13 | 15 | @scalar_rule(asin(x), inv(sqrt(1 - x^2)))
|
14 | 16 | @scalar_rule(acos(x), -inv(sqrt(1 - x^2)))
|
15 | 17 | @scalar_rule(atan(x), inv(1 + x^2))
|
16 |
| -@scalar_rule(asec(x), inv(abs(x) * sqrt(x^2 - 1))) |
17 |
| -@scalar_rule(acsc(x), -inv(abs(x) * sqrt(x^2 - 1))) |
| 18 | +@scalar_rule(asec(x::Real), inv(abs(x) * sqrt(x^2 - 1))) |
| 19 | +@scalar_rule(asec(x), inv(x^2 * sqrt(1 - x^-2))) |
| 20 | +@scalar_rule(acsc(x::Real), -inv(abs(x) * sqrt(x^2 - 1))) |
| 21 | +@scalar_rule(acsc(x), -inv(x^2 * sqrt(1 - x^-2))) |
18 | 22 | @scalar_rule(acot(x), -inv(1 + x^2))
|
| 23 | + |
19 | 24 | @scalar_rule(asind(x), oftype(x, 180) / π / sqrt(1 - x^2))
|
20 | 25 | @scalar_rule(acosd(x), -oftype(x, 180) / π / sqrt(1 - x^2))
|
21 | 26 | @scalar_rule(atand(x), oftype(x, 180) / π / (1 + x^2))
|
22 |
| -@scalar_rule(asecd(x), oftype(x, 180) / π / abs(x) / sqrt(x^2 - 1)) |
23 |
| -@scalar_rule(acscd(x), -oftype(x, 180) / π / abs(x) / sqrt(x^2 - 1)) |
| 27 | +@scalar_rule(asecd(x::Real), oftype(x, 180) / π / abs(x) / sqrt(x^2 - 1)) |
| 28 | +@scalar_rule(asecd(x), oftype(x, 180) / π / x^2 / sqrt(1 - x^-2)) |
| 29 | +@scalar_rule(acscd(x::Real), -oftype(x, 180) / π / abs(x) / sqrt(x^2 - 1)) |
| 30 | +@scalar_rule(acscd(x), -oftype(x, 180) / π / x^2 / sqrt(1 - x^-2)) |
24 | 31 | @scalar_rule(acotd(x), -oftype(x, 180) / π / (1 + x^2))
|
| 32 | + |
25 | 33 | @scalar_rule(sinh(x), cosh(x))
|
26 | 34 | @scalar_rule(cosh(x), sinh(x))
|
27 | 35 | @scalar_rule(tanh(x), sech(x)^2)
|
28 | 36 | @scalar_rule(coth(x), -(csch(x)^2))
|
| 37 | + |
29 | 38 | @scalar_rule(asinh(x), inv(sqrt(x^2 + 1)))
|
30 | 39 | @scalar_rule(acosh(x), inv(sqrt(x^2 - 1)))
|
31 | 40 | @scalar_rule(atanh(x), inv(1 - x^2))
|
32 | 41 | @scalar_rule(asech(x), -inv(x * sqrt(1 - x^2)))
|
33 |
| -@scalar_rule(acsch(x), -inv(abs(x) * sqrt(1 + x^2))) |
| 42 | +@scalar_rule(acsch(x::Real), -inv(abs(x) * sqrt(1 + x^2))) |
| 43 | +@scalar_rule(acsch(x), -inv(x^2 * sqrt(1 + x^-2))) |
34 | 44 | @scalar_rule(acoth(x), inv(1 - x^2))
|
| 45 | + |
35 | 46 | @scalar_rule(deg2rad(x), π / oftype(x, 180))
|
36 | 47 | @scalar_rule(rad2deg(x), oftype(x, 180) / π)
|
| 48 | + |
37 | 49 | @scalar_rule(conj(x), Wirtinger(Zero(), One()))
|
38 | 50 | @scalar_rule(adjoint(x), Wirtinger(Zero(), One()))
|
39 | 51 | @scalar_rule(transpose(x), One())
|
| 52 | + |
40 | 53 | @scalar_rule(abs(x), sign(x))
|
41 | 54 | @scalar_rule(rem2pi(x, r::RoundingMode), (One(), DNE()))
|
| 55 | + |
42 | 56 | @scalar_rule(+(x), One())
|
43 | 57 | @scalar_rule(-(x), -1)
|
44 | 58 | @scalar_rule(+(x, y), (One(), One()))
|
45 | 59 | @scalar_rule(-(x, y), (One(), -1))
|
46 | 60 | @scalar_rule(/(x, y), (inv(y), -(x / y / y)))
|
47 | 61 | @scalar_rule(\(x, y), (-(y / x / x), inv(x)))
|
48 | 62 | @scalar_rule(^(x, y), (y * x^(y - 1), Ω * log(x)))
|
| 63 | + |
49 | 64 | @scalar_rule(inv(x), -abs2(Ω))
|
50 | 65 | @scalar_rule(sqrt(x), inv(2 * Ω))
|
51 | 66 | @scalar_rule(cbrt(x), inv(3 * Ω^2))
|
52 | 67 | @scalar_rule(exp(x), Ω)
|
53 | 68 | @scalar_rule(exp2(x), Ω * log(oftype(x, 2)))
|
54 | 69 | @scalar_rule(exp10(x), Ω * log(oftype(x, 10)))
|
| 70 | + |
55 | 71 | @scalar_rule(tan(x), 1 + Ω^2)
|
56 | 72 | @scalar_rule(sec(x), Ω * tan(x))
|
57 | 73 | @scalar_rule(csc(x), -Ω * cot(x))
|
|
62 | 78 | @scalar_rule(cotd(x), -(π / oftype(x, 180)) * (1 + Ω^2))
|
63 | 79 | @scalar_rule(sech(x), -tanh(x) * Ω)
|
64 | 80 | @scalar_rule(csch(x), -coth(x) * Ω)
|
| 81 | + |
65 | 82 | @scalar_rule(hypot(x, y), (x / Ω, y / Ω))
|
66 | 83 | @scalar_rule(sincos(x), @setup((sinx, cosx) = Ω), cosx, -sinx)
|
67 | 84 | @scalar_rule(atan(x, y), @setup(u = x^2 + y^2), (y / u, -x / u))
|
| 85 | + |
68 | 86 | @scalar_rule(max(x, y), @setup(gt = x > y), (gt, !gt))
|
69 | 87 | @scalar_rule(min(x, y), @setup(gt = x > y), (!gt, gt))
|
70 | 88 | @scalar_rule(mod(x, y), @setup((u, nan) = promote(x / y, NaN16)),
|
|
0 commit comments