struct Complex
Source: complex.joule:8
struct ComplexSource: complex.joule:8
struct Complex32Source: complex.joule:17
const I: ComplexImaginary unit i
Source: complex.joule:29
const ZERO: ComplexZero
Source: complex.joule:32
const ONE: ComplexOne
Source: complex.joule:35
const NEG_ONE: ComplexNegative one
Source: complex.joule:38
const E_I_PI_2: Complexe^(i*pi) = -1, so e^(i*pi/2) = i
Source: complex.joule:41
fn new(re: f64, im: f64) -> SelfSource: complex.joule:55
fn from_real(re: f64) -> SelfSource: complex.joule:62
fn from_imag(im: f64) -> SelfSource: complex.joule:69
fn from_polar(r: f64, theta: f64) -> SelfSource: complex.joule:76
fn from_mag_phase(mag: f64, phase: f64) -> SelfSource: complex.joule:86
fn cis(theta: f64) -> SelfSource: complex.joule:93
fn parse(s: &str) -> Option<Self>Source: complex.joule:102
fn real(&self) -> f64Source: complex.joule:154
fn imag(&self) -> f64Source: complex.joule:160
fn is_zero(&self) -> boolSource: complex.joule:166
fn is_real(&self) -> boolSource: complex.joule:172
fn is_imag(&self) -> boolSource: complex.joule:178
fn is_nan(&self) -> boolSource: complex.joule:184
fn is_infinite(&self) -> boolSource: complex.joule:190
fn is_finite(&self) -> boolSource: complex.joule:196
fn abs(&self) -> f64Source: complex.joule:207
fn magnitude(&self) -> f64Source: complex.joule:214
fn modulus(&self) -> f64Source: complex.joule:221
fn norm_sqr(&self) -> f64Source: complex.joule:228
fn arg(&self) -> f64Source: complex.joule:235
fn phase(&self) -> f64Source: complex.joule:242
fn to_polar(&self) -> (f64, f64)Source: complex.joule:249
fn conj(&self) -> SelfSource: complex.joule:260
fn neg(&self) -> SelfSource: complex.joule:270
fn add(&self, other: Self) -> SelfSource: complex.joule:280
fn sub(&self, other: Self) -> SelfSource: complex.joule:290
fn mul(&self, other: Self) -> SelfSource: complex.joule:300
fn div(&self, other: Self) -> SelfSource: complex.joule:310
fn scale(&self, s: f64) -> SelfSource: complex.joule:321
fn unscale(&self, s: f64) -> SelfSource: complex.joule:331
fn inv(&self) -> SelfSource: complex.joule:341
fn normalize(&self) -> SelfSource: complex.joule:352
fn lerp(&self, other: Self, t: f64) -> SelfSource: complex.joule:364
fn sqr(&self) -> SelfSource: complex.joule:378
fn cube(&self) -> SelfSource: complex.joule:388
fn powi(&self, n: i32) -> SelfSource: complex.joule:399
fn powc(&self, w: Self) -> SelfSource: complex.joule:425
fn powf(&self, x: f64) -> SelfSource: complex.joule:441
fn sqrt(&self) -> SelfSource: complex.joule:448
fn cbrt(&self) -> SelfSource: complex.joule:468
fn nroot(&self, n: u32) -> SelfSource: complex.joule:475
fn roots(&self, n: u32) -> Vec<Self>Source: complex.joule:485
fn roots_of_unity(n: u32) -> Vec<Self>Source: complex.joule:502
fn primitive_root_of_unity(n: u32) -> SelfSource: complex.joule:516
fn exp(&self) -> SelfSource: complex.joule:526
fn exp_m1(&self) -> SelfSource: complex.joule:536
fn ln(&self) -> SelfSource: complex.joule:557
fn ln_1p(&self) -> SelfSource: complex.joule:566
fn log10(&self) -> SelfSource: complex.joule:587
fn log2(&self) -> SelfSource: complex.joule:593
fn log(&self, base: Self) -> SelfSource: complex.joule:599
fn sin(&self) -> SelfSource: complex.joule:609
fn cos(&self) -> SelfSource: complex.joule:619
fn tan(&self) -> SelfSource: complex.joule:629
fn cot(&self) -> SelfSource: complex.joule:635
fn sec(&self) -> SelfSource: complex.joule:641
fn csc(&self) -> SelfSource: complex.joule:647
fn asin(&self) -> SelfSource: complex.joule:657
fn acos(&self) -> SelfSource: complex.joule:669
fn atan(&self) -> SelfSource: complex.joule:677
fn acot(&self) -> SelfSource: complex.joule:689
fn asec(&self) -> SelfSource: complex.joule:695
fn acsc(&self) -> SelfSource: complex.joule:701
fn sinh(&self) -> SelfSource: complex.joule:711
fn cosh(&self) -> SelfSource: complex.joule:721
fn tanh(&self) -> SelfSource: complex.joule:731
fn coth(&self) -> SelfSource: complex.joule:737
fn sech(&self) -> SelfSource: complex.joule:743
fn csch(&self) -> SelfSource: complex.joule:749
fn asinh(&self) -> SelfSource: complex.joule:759
fn acosh(&self) -> SelfSource: complex.joule:767
fn atanh(&self) -> SelfSource: complex.joule:775
fn acoth(&self) -> SelfSource: complex.joule:784
fn asech(&self) -> SelfSource: complex.joule:790
fn acsch(&self) -> SelfSource: complex.joule:796
fn gamma(&self) -> SelfSource: complex.joule:806
fn lanczos_gamma(&self) -> SelfLanczos approximation for gamma function
Source: complex.joule:821
const G: f64Source: complex.joule:822
const COEFFS: [f64; 9]Source: complex.joule:823
fn lgamma(&self) -> SelfSource: complex.joule:849
fn digamma(&self) -> SelfSource: complex.joule:855
fn beta(a: Self, b: Self) -> SelfSource: complex.joule:903
fn erf(&self) -> SelfSource: complex.joule:910
fn erfc(&self) -> SelfSource: complex.joule:941
fn besselj0(&self) -> SelfSource: complex.joule:947
fn besselj1(&self) -> SelfSource: complex.joule:972
fn besseljn(&self, n: i32) -> SelfSource: complex.joule:997
fn zeta(&self) -> SelfSource: complex.joule:1041
fn round(&self) -> SelfSource: complex.joule:1089
fn floor(&self) -> SelfSource: complex.joule:1099
fn ceil(&self) -> SelfSource: complex.joule:1109
fn trunc(&self) -> SelfSource: complex.joule:1119
fn fract(&self) -> SelfSource: complex.joule:1129
fn to_string(&self) -> StringFormat as string
Source: complex.joule:1137
fn to_polar_string(&self) -> StringFormat in polar form
Source: complex.joule:1146
fn add(self, other: Self) -> SelfSource: complex.joule:1158
fn sub(self, other: Self) -> SelfSource: complex.joule:1165
fn mul(self, other: Self) -> SelfSource: complex.joule:1172
fn div(self, other: Self) -> SelfSource: complex.joule:1179
fn neg(self) -> SelfSource: complex.joule:1186
fn add(self, other: f64) -> SelfSource: complex.joule:1193
fn sub(self, other: f64) -> SelfSource: complex.joule:1200
fn mul(self, other: f64) -> SelfSource: complex.joule:1207
fn div(self, other: f64) -> SelfSource: complex.joule:1214
fn eq(&self, other: &Self) -> boolSource: complex.joule:1220
fn default() -> SelfSource: complex.joule:1226
fn from(re: f64) -> SelfSource: complex.joule:1232
fn from((re, im): (f64, f64)) -> SelfSource: complex.joule:1238
fn new(re: f32, im: f32) -> SelfSource: complex.joule:1250
fn from_real(re: f32) -> SelfSource: complex.joule:1256
fn from_polar(r: f32, theta: f32) -> SelfSource: complex.joule:1262
fn real(&self) -> f32Source: complex.joule:1270
fn imag(&self) -> f32Source: complex.joule:1275
fn abs(&self) -> f32Source: complex.joule:1281
fn norm_sqr(&self) -> f32Source: complex.joule:1287
fn arg(&self) -> f32Source: complex.joule:1293
fn conj(&self) -> SelfSource: complex.joule:1299
fn add(&self, other: Self) -> SelfSource: complex.joule:1305
fn sub(&self, other: Self) -> SelfSource: complex.joule:1314
fn mul(&self, other: Self) -> SelfSource: complex.joule:1323
fn div(&self, other: Self) -> SelfSource: complex.joule:1332
fn scale(&self, s: f32) -> SelfSource: complex.joule:1342
fn to_complex64(&self) -> ComplexConvert to Complex64
Source: complex.joule:1350
fn from(c: Complex) -> SelfSource: complex.joule:1356
fn dot(a: &[Complex], b: &[Complex]) -> ComplexSource: complex.joule:1371
fn norm(v: &[Complex]) -> f64Source: complex.joule:1379
fn normalize(v: &mut [Complex])Source: complex.joule:1385
fn conj(v: &[Complex]) -> Vec<Complex>Source: complex.joule:1396
fn add(a: &[Complex], b: &[Complex]) -> Vec<Complex>Source: complex.joule:1402
fn sub(a: &[Complex], b: &[Complex]) -> Vec<Complex>Source: complex.joule:1409
fn hadamard(a: &[Complex], b: &[Complex]) -> Vec<Complex>Source: complex.joule:1416
fn scale(v: &[Complex], s: Complex) -> Vec<Complex>Source: complex.joule:1423
fn sum(v: &[Complex]) -> ComplexSource: complex.joule:1429
fn product(v: &[Complex]) -> ComplexSource: complex.joule:1435
struct ComplexMatrixSource: complex.joule:1446
fn zeros(rows: usize, cols: usize) -> SelfSource: complex.joule:1455
fn identity(n: usize) -> SelfSource: complex.joule:1465
fn from_rows(rows: Vec<Vec<Complex>>) -> SelfSource: complex.joule:1475
fn get(&self, row: usize, col: usize) -> ComplexSource: complex.joule:1487
fn set(&mut self, row: usize, col: usize, value: Complex)Source: complex.joule:1493
fn row(&self, i: usize) -> &[Complex]Get row as slice
Source: complex.joule:1498
fn col(&self, j: usize) -> Vec<Complex>Get column as vector
Source: complex.joule:1504
fn transpose(&self) -> SelfSource: complex.joule:1510
fn conj_transpose(&self) -> SelfSource: complex.joule:1522
fn add(&self, other: &Self) -> SelfSource: complex.joule:1534
fn sub(&self, other: &Self) -> SelfSource: complex.joule:1548
fn mul(&self, other: &Self) -> SelfSource: complex.joule:1562
fn scale(&self, s: Complex) -> SelfSource: complex.joule:1579
fn trace(&self) -> ComplexSource: complex.joule:1589
fn frobenius_norm(&self) -> f64Source: complex.joule:1596
fn is_hermitian(&self, tol: f64) -> boolSource: complex.joule:1602
fn is_unitary(&self, tol: f64) -> boolSource: complex.joule:1619
fn lu(&self) -> Option<(Self, Self, Vec<usize>)>Source: complex.joule:1638
fn det(&self) -> ComplexSource: complex.joule:1695
fn solve(&self, b: &[Complex]) -> Option<Vec<Complex>>Source: complex.joule:1727
fn inv(&self) -> Option<Self>Source: complex.joule:1758
fn exp(&self) -> SelfSource: complex.joule:1780
fn dominant_eigenvalue(&self, max_iter: usize, tol: f64) -> (Complex, Vec<Complex>)Source: complex.joule:1838
fn complex(re: f64, im: f64) -> ComplexSource: complex.joule:1887
fn exp_i(theta: f64) -> ComplexSource: complex.joule:1893
fn real(z: Complex) -> f64Source: complex.joule:1899
fn imag(z: Complex) -> f64Source: complex.joule:1905
fn abs(z: Complex) -> f64Source: complex.joule:1911
fn arg(z: Complex) -> f64Source: complex.joule:1917
fn conj(z: Complex) -> ComplexSource: complex.joule:1923
fn test_basic_operations()Source: complex.joule:1936
fn test_polar()Source: complex.joule:1950
fn test_exp_ln()Source: complex.joule:1962
fn test_roots_of_unity()Source: complex.joule:1974
fn test_trig()Source: complex.joule:1985