← Back

Module complex

struct Complex

Source: complex.joule:8

struct Complex32

Source: complex.joule:17

const I: Complex

Imaginary unit i

Source: complex.joule:29

const ZERO: Complex

Zero

Source: complex.joule:32

const ONE: Complex

One

Source: complex.joule:35

const NEG_ONE: Complex

Negative one

Source: complex.joule:38

const E_I_PI_2: Complex

e^(i*pi) = -1, so e^(i*pi/2) = i

Source: complex.joule:41

fn new(re: f64, im: f64) -> Self

Source: complex.joule:55

fn from_real(re: f64) -> Self

Source: complex.joule:62

fn from_imag(im: f64) -> Self

Source: complex.joule:69

fn from_polar(r: f64, theta: f64) -> Self

Source: complex.joule:76

fn from_mag_phase(mag: f64, phase: f64) -> Self

Source: complex.joule:86

fn cis(theta: f64) -> Self

Source: complex.joule:93

fn parse(s: &str) -> Option<Self>

Source: complex.joule:102

fn real(&self) -> f64

Source: complex.joule:154

fn imag(&self) -> f64

Source: complex.joule:160

fn is_zero(&self) -> bool

Source: complex.joule:166

fn is_real(&self) -> bool

Source: complex.joule:172

fn is_imag(&self) -> bool

Source: complex.joule:178

fn is_nan(&self) -> bool

Source: complex.joule:184

fn is_infinite(&self) -> bool

Source: complex.joule:190

fn is_finite(&self) -> bool

Source: complex.joule:196

fn abs(&self) -> f64

Source: complex.joule:207

fn magnitude(&self) -> f64

Source: complex.joule:214

fn modulus(&self) -> f64

Source: complex.joule:221

fn norm_sqr(&self) -> f64

Source: complex.joule:228

fn arg(&self) -> f64

Source: complex.joule:235

fn phase(&self) -> f64

Source: complex.joule:242

fn to_polar(&self) -> (f64, f64)

Source: complex.joule:249

fn conj(&self) -> Self

Source: complex.joule:260

fn neg(&self) -> Self

Source: complex.joule:270

fn add(&self, other: Self) -> Self

Source: complex.joule:280

fn sub(&self, other: Self) -> Self

Source: complex.joule:290

fn mul(&self, other: Self) -> Self

Source: complex.joule:300

fn div(&self, other: Self) -> Self

Source: complex.joule:310

fn scale(&self, s: f64) -> Self

Source: complex.joule:321

fn unscale(&self, s: f64) -> Self

Source: complex.joule:331

fn inv(&self) -> Self

Source: complex.joule:341

fn normalize(&self) -> Self

Source: complex.joule:352

fn lerp(&self, other: Self, t: f64) -> Self

Source: complex.joule:364

fn sqr(&self) -> Self

Source: complex.joule:378

fn cube(&self) -> Self

Source: complex.joule:388

fn powi(&self, n: i32) -> Self

Source: complex.joule:399

fn powc(&self, w: Self) -> Self

Source: complex.joule:425

fn powf(&self, x: f64) -> Self

Source: complex.joule:441

fn sqrt(&self) -> Self

Source: complex.joule:448

fn cbrt(&self) -> Self

Source: complex.joule:468

fn nroot(&self, n: u32) -> Self

Source: 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) -> Self

Source: complex.joule:516

fn exp(&self) -> Self

Source: complex.joule:526

fn exp_m1(&self) -> Self

Source: complex.joule:536

fn ln(&self) -> Self

Source: complex.joule:557

fn ln_1p(&self) -> Self

Source: complex.joule:566

fn log10(&self) -> Self

Source: complex.joule:587

fn log2(&self) -> Self

Source: complex.joule:593

fn log(&self, base: Self) -> Self

Source: complex.joule:599

fn sin(&self) -> Self

Source: complex.joule:609

fn cos(&self) -> Self

Source: complex.joule:619

fn tan(&self) -> Self

Source: complex.joule:629

fn cot(&self) -> Self

Source: complex.joule:635

fn sec(&self) -> Self

Source: complex.joule:641

fn csc(&self) -> Self

Source: complex.joule:647

fn asin(&self) -> Self

Source: complex.joule:657

fn acos(&self) -> Self

Source: complex.joule:669

fn atan(&self) -> Self

Source: complex.joule:677

fn acot(&self) -> Self

Source: complex.joule:689

fn asec(&self) -> Self

Source: complex.joule:695

fn acsc(&self) -> Self

Source: complex.joule:701

fn sinh(&self) -> Self

Source: complex.joule:711

fn cosh(&self) -> Self

Source: complex.joule:721

fn tanh(&self) -> Self

Source: complex.joule:731

fn coth(&self) -> Self

Source: complex.joule:737

fn sech(&self) -> Self

Source: complex.joule:743

fn csch(&self) -> Self

Source: complex.joule:749

fn asinh(&self) -> Self

Source: complex.joule:759

fn acosh(&self) -> Self

Source: complex.joule:767

fn atanh(&self) -> Self

Source: complex.joule:775

fn acoth(&self) -> Self

Source: complex.joule:784

fn asech(&self) -> Self

Source: complex.joule:790

fn acsch(&self) -> Self

Source: complex.joule:796

fn gamma(&self) -> Self

Source: complex.joule:806

fn lanczos_gamma(&self) -> Self

Lanczos approximation for gamma function

Source: complex.joule:821

const G: f64

Source: complex.joule:822

const COEFFS: [f64; 9]

Source: complex.joule:823

fn lgamma(&self) -> Self

Source: complex.joule:849

fn digamma(&self) -> Self

Source: complex.joule:855

fn beta(a: Self, b: Self) -> Self

Source: complex.joule:903

fn erf(&self) -> Self

Source: complex.joule:910

fn erfc(&self) -> Self

Source: complex.joule:941

fn besselj0(&self) -> Self

Source: complex.joule:947

fn besselj1(&self) -> Self

Source: complex.joule:972

fn besseljn(&self, n: i32) -> Self

Source: complex.joule:997

fn zeta(&self) -> Self

Source: complex.joule:1041

fn round(&self) -> Self

Source: complex.joule:1089

fn floor(&self) -> Self

Source: complex.joule:1099

fn ceil(&self) -> Self

Source: complex.joule:1109

fn trunc(&self) -> Self

Source: complex.joule:1119

fn fract(&self) -> Self

Source: complex.joule:1129

fn to_string(&self) -> String

Format as string

Source: complex.joule:1137

fn to_polar_string(&self) -> String

Format in polar form

Source: complex.joule:1146

fn add(self, other: Self) -> Self

Source: complex.joule:1158

fn sub(self, other: Self) -> Self

Source: complex.joule:1165

fn mul(self, other: Self) -> Self

Source: complex.joule:1172

fn div(self, other: Self) -> Self

Source: complex.joule:1179

fn neg(self) -> Self

Source: complex.joule:1186

fn add(self, other: f64) -> Self

Source: complex.joule:1193

fn sub(self, other: f64) -> Self

Source: complex.joule:1200

fn mul(self, other: f64) -> Self

Source: complex.joule:1207

fn div(self, other: f64) -> Self

Source: complex.joule:1214

fn eq(&self, other: &Self) -> bool

Source: complex.joule:1220

fn default() -> Self

Source: complex.joule:1226

fn from(re: f64) -> Self

Source: complex.joule:1232

fn from((re, im): (f64, f64)) -> Self

Source: complex.joule:1238

fn new(re: f32, im: f32) -> Self

Source: complex.joule:1250

fn from_real(re: f32) -> Self

Source: complex.joule:1256

fn from_polar(r: f32, theta: f32) -> Self

Source: complex.joule:1262

fn real(&self) -> f32

Source: complex.joule:1270

fn imag(&self) -> f32

Source: complex.joule:1275

fn abs(&self) -> f32

Source: complex.joule:1281

fn norm_sqr(&self) -> f32

Source: complex.joule:1287

fn arg(&self) -> f32

Source: complex.joule:1293

fn conj(&self) -> Self

Source: complex.joule:1299

fn add(&self, other: Self) -> Self

Source: complex.joule:1305

fn sub(&self, other: Self) -> Self

Source: complex.joule:1314

fn mul(&self, other: Self) -> Self

Source: complex.joule:1323

fn div(&self, other: Self) -> Self

Source: complex.joule:1332

fn scale(&self, s: f32) -> Self

Source: complex.joule:1342

fn to_complex64(&self) -> Complex

Convert to Complex64

Source: complex.joule:1350

fn from(c: Complex) -> Self

Source: complex.joule:1356

fn dot(a: &[Complex], b: &[Complex]) -> Complex

Source: complex.joule:1371

fn norm(v: &[Complex]) -> f64

Source: 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]) -> Complex

Source: complex.joule:1429

fn product(v: &[Complex]) -> Complex

Source: complex.joule:1435

struct ComplexMatrix

Source: complex.joule:1446

fn zeros(rows: usize, cols: usize) -> Self

Source: complex.joule:1455

fn identity(n: usize) -> Self

Source: complex.joule:1465

fn from_rows(rows: Vec<Vec<Complex>>) -> Self

Source: complex.joule:1475

fn get(&self, row: usize, col: usize) -> Complex

Source: 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) -> Self

Source: complex.joule:1510

fn conj_transpose(&self) -> Self

Source: complex.joule:1522

fn add(&self, other: &Self) -> Self

Source: complex.joule:1534

fn sub(&self, other: &Self) -> Self

Source: complex.joule:1548

fn mul(&self, other: &Self) -> Self

Source: complex.joule:1562

fn scale(&self, s: Complex) -> Self

Source: complex.joule:1579

fn trace(&self) -> Complex

Source: complex.joule:1589

fn frobenius_norm(&self) -> f64

Source: complex.joule:1596

fn is_hermitian(&self, tol: f64) -> bool

Source: complex.joule:1602

fn is_unitary(&self, tol: f64) -> bool

Source: complex.joule:1619

fn lu(&self) -> Option<(Self, Self, Vec<usize>)>

Source: complex.joule:1638

fn det(&self) -> Complex

Source: 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) -> Self

Source: 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) -> Complex

Source: complex.joule:1887

fn exp_i(theta: f64) -> Complex

Source: complex.joule:1893

fn real(z: Complex) -> f64

Source: complex.joule:1899

fn imag(z: Complex) -> f64

Source: complex.joule:1905

fn abs(z: Complex) -> f64

Source: complex.joule:1911

fn arg(z: Complex) -> f64

Source: complex.joule:1917

fn conj(z: Complex) -> Complex

Source: 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