pub trait ComplexField<R>: Fieldwhere
R: Field,{
// Required methods
fn real(&self) -> R;
fn imag(&self) -> R;
fn conjugate(&self) -> Self;
fn norm_sqr(&self) -> R;
fn norm(&self) -> R;
fn arg(&self) -> R;
fn from_re_im(re: R, im: R) -> Self;
fn from_polar(r: R, theta: R) -> Self;
fn i() -> Self;
fn is_real(&self) -> bool;
fn is_imaginary(&self) -> bool;
}Expand description
Represents a Complex Field — a field extension of the reals with complex conjugation and component access.
A complex field is a field where elements can be decomposed into real and imaginary parts, and complex conjugation is defined.
§Mathematical Definition
A complex field K over a real field R satisfies:
Kis aField.- There exists an involution (conjugation)
*: K → Ksuch that:(a + b)* = a* + b*(a · b)* = a* · b*(a*)* = aa · a*is a non-negative real for alla
- Every element
z ∈ Kcan be written asz = x + iywherex, y ∈ R.
§Examples
- Complex numbers
ℂoverℝ - Split-complex numbers (hyperbolic numbers)
§Note
Quaternions and Octonions are NOT complex fields because they are not
commutative (Quaternions) or not associative (Octonions). They implement
DivisionAlgebra instead.
Required Methods§
Sourcefn imag(&self) -> R
fn imag(&self) -> R
Returns the imaginary part of the complex number.
For z = a + bi, returns b.
Sourcefn conjugate(&self) -> Self
fn conjugate(&self) -> Self
Returns the complex conjugate.
For z = a + bi, returns z* = a - bi.
§Properties
(z*)* = z(z + w)* = z* + w*(z · w)* = z* · w*
Sourcefn norm_sqr(&self) -> R
fn norm_sqr(&self) -> R
Returns the squared modulus (norm squared).
|z|² = z · z* = a² + b²
This is guaranteed to be a non-negative real number.
Sourcefn arg(&self) -> R
fn arg(&self) -> R
Returns the argument (phase angle) in radians.
arg(z) = atan2(b, a) for z = a + bi.
The result is in the range (-π, π].
Sourcefn from_re_im(re: R, im: R) -> Self
fn from_re_im(re: R, im: R) -> Self
Constructs a complex number from real and imaginary parts.
Returns re + im·i.
Sourcefn from_polar(r: R, theta: R) -> Self
fn from_polar(r: R, theta: R) -> Self
Constructs a complex number from polar form.
Returns r·(cos(θ) + i·sin(θ)) = r·e^(iθ).
Sourcefn is_imaginary(&self) -> bool
fn is_imaginary(&self) -> bool
Returns true if the real part is zero.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.