use crate::tensor::Tensor;
use crate::errors::EtensorResult;
pub trait Backend {
fn add(a: &Tensor, b: &Tensor) -> EtensorResult<Tensor>;
fn mul(a: &Tensor, b: &Tensor) -> EtensorResult<Tensor>;
fn matmul(a: &Tensor, b: &Tensor) -> EtensorResult<Tensor>;
fn sum_all(a: &Tensor) -> EtensorResult<Tensor>;
fn mean_all(a: &Tensor) -> EtensorResult<Tensor>;
fn max_all(a: &Tensor) -> EtensorResult<Tensor>;
fn relu(a: &Tensor) -> EtensorResult<Tensor>;
fn sigmoid(a: &Tensor) -> EtensorResult<Tensor>;
fn add_relu(a: &Tensor, b: &Tensor) -> EtensorResult<Tensor>;
fn linear(x: &Tensor, w: &Tensor, b: &Tensor) -> EtensorResult<Tensor>;
}