///|
pub fn convolve(
signal : ArrayView[Double],
kernel : ArrayView[Double],
) -> Array[Double] raise SpectrumError {
let n = signal.length()
let m = kernel.length()
if n == 0 || m == 0 {
raise EmptySignal
}
let out = Array::make(n + m - 1, 0.0)
for i in 0.. Array[Double] raise SpectrumError {
let n = signal.length()
let m = kernel.length()
if n == 0 || m == 0 {
raise EmptySignal
}
let len = if n > m { n } else { m }
let out = Array::make(len, 0.0)
for i in 0..