solvr 0.2.0

Advanced computing library for real-world problem solving - optimization, differential equations, interpolation, statistics, and more
Documentation
//! WebGPU implementation of Wiener filter algorithms.
//!
//! Wiener filtering is CPU-only because it requires computing local statistics
//! over sliding windows with sequential access patterns.

use crate::signal::traits::wiener::WienerAlgorithms;
use numr::error::{Error, Result};
use numr::runtime::wgpu::{WgpuClient, WgpuRuntime};
use numr::tensor::Tensor;

impl WienerAlgorithms<WgpuRuntime> for WgpuClient {
    fn wiener(
        &self,
        _x: &Tensor<WgpuRuntime>,
        _kernel_size: Option<usize>,
        _noise: Option<f64>,
    ) -> Result<Tensor<WgpuRuntime>> {
        Err(Error::backend_limitation(
            "wgpu",
            "wiener",
            "Wiener filtering is CPU-only due to local statistics computation. Transfer data to CPU first.",
        ))
    }

    fn wiener2d(
        &self,
        _x: &Tensor<WgpuRuntime>,
        _kernel_size: Option<(usize, usize)>,
        _noise: Option<f64>,
    ) -> Result<Tensor<WgpuRuntime>> {
        Err(Error::backend_limitation(
            "wgpu",
            "wiener2d",
            "Wiener filtering is CPU-only due to local statistics computation. Transfer data to CPU first.",
        ))
    }
}