use crate::error::Result;
use crate::runtime::Runtime;
use crate::tensor::Tensor;
use super::TensorOps;
pub trait ScalarOps<R: Runtime>: TensorOps<R> {
fn add_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn sub_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn mul_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn div_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn pow_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn rsub_scalar(&self, a: &Tensor<R>, scalar: f64) -> Result<Tensor<R>>;
fn fused_mul_add_scalar(&self, a: &Tensor<R>, scale: f64, bias: f64) -> Result<Tensor<R>>;
}