1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! # comnum-core — the vocabulary every comnum crate speaks
//!
//! Typed containers, verb traits, unit newtypes, the random generator and the error
//! type. It contains no algorithm: the blocks that implement these traits live in the
//! crates above it (see `docs/ARCHITECTURE.md`).
//!
//! | Module | Content |
//! |---|---|
//! | [`channel`] | [`Path`], one path of a delay–Doppler channel realisation |
//! | [`signal`] | [`Bits`], [`Llr`], [`Symbols`], [`Labels`], [`Signal`] (streams × elements), [`DualPol`] |
//! | [`traits`] | [`Encode`], [`Decode`], [`Map`], [`Demap`] (with [`Demapping`] and [`Jacobian`]), [`Modulate`], [`Demodulate`], [`Precode`], [`Detect`], [`Propagate`], [`Impair`] |
//! | [`units`] | [`Db`], [`EbN0`], [`EsN0`], [`Hertz`], [`Seconds`] |
//! | [`rng`] | [`Rng`] (xoshiro256\*\*), [`SimRng`], [`stream`], [`batch_rng`] |
//! | [`error`] | [`Error`], [`Result`], [`ensure`], [`ensure_shape`], [`expect_len`], [`same_len`] |
//!
//! # Conventions
//!
//! - Complex baseband samples are [`C64`] (`num_complex::Complex<f64>`).
//! - Physical quantities are in SI units unless the name says otherwise (`_db`, `_dbm`,
//! `_km`, `_ps_nm_km`, …).
//! - There is no global or thread-local generator anywhere: every random block takes a
//! `&mut SimRng`, so every simulation is reproducible from its seed.
//!
//! [`Path`]: channel::Path
//! [`Bits`]: signal::Bits
//! [`Llr`]: signal::Llr
//! [`Symbols`]: signal::Symbols
//! [`Labels`]: signal::Labels
//! [`Signal`]: signal::Signal
//! [`DualPol`]: signal::DualPol
//! [`Encode`]: traits::Encode
//! [`Decode`]: traits::Decode
//! [`Map`]: traits::Map
//! [`Demap`]: traits::Demap
//! [`Demapping`]: traits::Demapping
//! [`Jacobian`]: traits::Jacobian
//! [`Modulate`]: traits::Modulate
//! [`Demodulate`]: traits::Demodulate
//! [`Precode`]: traits::Precode
//! [`Detect`]: traits::Detect
//! [`Propagate`]: traits::Propagate
//! [`Impair`]: traits::Impair
//! [`Db`]: units::Db
//! [`EbN0`]: units::EbN0
//! [`EsN0`]: units::EsN0
//! [`Hertz`]: units::Hertz
//! [`Seconds`]: units::Seconds
//! [`Rng`]: rng::Rng
//! [`SimRng`]: rng::SimRng
//! [`stream`]: rng::stream
//! [`batch_rng`]: rng::batch_rng
pub use ;
/// Complex number with `f64` components (the type of every complex sample).
pub type C64 = Complex;
/// The items used by most blocks.