chainrules/scalar_ad/
mod.rs1use core::ops::{Add, Div, Mul, Neg, Sub};
2
3use num_traits::{Float, FloatConst};
4
5pub trait ScalarAd:
18 Copy
19 + PartialEq
20 + Neg<Output = Self>
21 + Add<Output = Self>
22 + Sub<Output = Self>
23 + Mul<Output = Self>
24 + Div<Output = Self>
25{
26 type Real: Copy + Float + FloatConst;
28
29 fn conj(self) -> Self;
31
32 fn recip(self) -> Self;
34
35 fn cbrt(self) -> Self;
37
38 fn sqrt(self) -> Self;
40
41 fn exp(self) -> Self;
43
44 fn exp2(self) -> Self;
46
47 fn exp10(self) -> Self;
49
50 fn expm1(self) -> Self;
52
53 fn ln(self) -> Self;
55
56 fn log1p(self) -> Self;
58
59 fn log2(self) -> Self;
61
62 fn log10(self) -> Self;
64
65 fn sin(self) -> Self;
67
68 fn cos(self) -> Self;
70
71 fn tan(self) -> Self;
73
74 fn tanh(self) -> Self;
76
77 fn asin(self) -> Self;
79
80 fn acos(self) -> Self;
82
83 fn atan(self) -> Self;
85
86 fn sinh(self) -> Self;
88
89 fn cosh(self) -> Self;
91
92 fn asinh(self) -> Self;
94
95 fn acosh(self) -> Self;
97
98 fn atanh(self) -> Self;
100
101 fn abs(self) -> Self::Real;
103
104 fn abs2(self) -> Self::Real;
106
107 fn real(self) -> Self::Real;
109
110 fn imag(self) -> Self::Real;
112
113 fn angle(self) -> Self::Real;
115
116 fn powf(self, exponent: Self::Real) -> Self;
118
119 fn powi(self, exponent: i32) -> Self;
121
122 fn pow(self, exponent: Self) -> Self;
124
125 fn from_real(value: Self::Real) -> Self;
127
128 fn from_i32(value: i32) -> Self;
130}
131
132mod complex;
133mod real;