Skip to main content

dsp_equations/
dsp_equations.rs

1use term_maths::render;
2
3fn main() {
4    let equations = [
5        // DFT summation
6        (
7            r"X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j \frac{2\pi}{N} kn}",
8            "DFT Summation",
9        ),
10        // Convolution integral
11        (
12            r"(f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t - \tau) \, d\tau",
13            "Convolution Integral",
14        ),
15        // Transfer function
16        (
17            r"H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}}",
18            "Transfer Function",
19        ),
20        // Hann window
21        (
22            r"w(n) = 0.5 \left(1 - \cos\left(\frac{2\pi n}{N - 1}\right)\right)",
23            "Hann Window",
24        ),
25    ];
26
27    for (latex, label) in &equations {
28        println!("=== {} ===", label);
29        println!("LaTeX: {}", latex);
30        println!();
31        println!("{}", render(latex));
32        println!();
33    }
34
35    // Also test individual components
36    println!("=== Standalone tests ===\n");
37
38    println!("--- Sum with limits ---");
39    println!("{}\n", render(r"\sum_{n=0}^{N-1}"));
40
41    println!("--- Integral with limits ---");
42    println!("{}\n", render(r"\int_{0}^{1}"));
43
44    println!("--- Product with limits ---");
45    println!("{}\n", render(r"\prod_{i=1}^{n}"));
46
47    println!("--- Delimited fraction ---");
48    println!("{}\n", render(r"\left(\frac{a}{b}\right)"));
49
50    println!("--- Overline ---");
51    println!("{}\n", render(r"\overline{x + y}"));
52
53    println!("--- Hat ---");
54    println!("{}\n", render(r"\hat{x}"));
55
56    println!("--- Sqrt of fraction ---");
57    println!("{}\n", render(r"\sqrt{\frac{a}{b}}"));
58}