// Copyright 2026 MoonBit DSP Authors
// Apache-2.0 License
///|
fn main {
println("MoonBit DSP native benchmark workload")
println("fft_radix2: \{Repr(@dsp_benchmark.benchmark_fft_radix2(256, 200))}")
println(
"iir_biquad: \{Repr(@dsp_bench.benchmark_iir_biquad(50.0, 1000.0, 1000, 100))}",
)
println("fir_filter: \{Repr(@dsp_bench.benchmark_fir_filter(31, 1000, 50))}")
println(
"matrix_inversion: \{Repr(@dsp_bench.benchmark_matrix_inversion(8, 20))}",
)
let analyzer = @streaming.FrameAnalyzer::new(
256,
128,
8000.0,
@window.WindowType::hann(),
)
let mut frames = 0
for i = 0; i < 4096; i = i + 1 {
let t = i.to_double() / 8000.0
let sample = @cmath.sin(2.0 * @cmath.PI * 1000.0 * t)
match analyzer.push(sample) {
Some(_) => frames = frames + 1
None => ()
}
}
println("frame_analyzer: frames=\{frames}, samples=4096")
}