use crate::error::{Error, Result};
use crate::runtime::Runtime;
use crate::tensor::Tensor;
pub trait SpecialFunctions<R: Runtime> {
fn erf(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::erf",
})
}
fn erfc(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::erfc",
})
}
fn erfinv(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::erfinv",
})
}
fn gamma(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::gamma",
})
}
fn lgamma(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::lgamma",
})
}
fn digamma(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::digamma",
})
}
fn beta(&self, a: &Tensor<R>, b: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b);
Err(Error::NotImplemented {
feature: "SpecialFunctions::beta",
})
}
fn betainc(&self, a: &Tensor<R>, b: &Tensor<R>, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b, x);
Err(Error::NotImplemented {
feature: "SpecialFunctions::betainc",
})
}
fn gammainc(&self, a: &Tensor<R>, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, x);
Err(Error::NotImplemented {
feature: "SpecialFunctions::gammainc",
})
}
fn gammaincc(&self, a: &Tensor<R>, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, x);
Err(Error::NotImplemented {
feature: "SpecialFunctions::gammaincc",
})
}
fn gammaincinv(&self, a: &Tensor<R>, p: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, p);
Err(Error::NotImplemented {
feature: "SpecialFunctions::gammaincinv",
})
}
fn betaincinv(&self, a: &Tensor<R>, b: &Tensor<R>, p: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b, p);
Err(Error::NotImplemented {
feature: "SpecialFunctions::betaincinv",
})
}
fn bessel_j0(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_j0",
})
}
fn bessel_j1(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_j1",
})
}
fn bessel_y0(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_y0",
})
}
fn bessel_y1(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_y1",
})
}
fn bessel_i0(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_i0",
})
}
fn bessel_i1(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_i1",
})
}
fn bessel_k0(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_k0",
})
}
fn bessel_k1(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::bessel_k1",
})
}
fn ellipk(&self, m: &Tensor<R>) -> Result<Tensor<R>> {
let _ = m;
Err(Error::NotImplemented {
feature: "SpecialFunctions::ellipk",
})
}
fn ellipe(&self, m: &Tensor<R>) -> Result<Tensor<R>> {
let _ = m;
Err(Error::NotImplemented {
feature: "SpecialFunctions::ellipe",
})
}
fn hyp2f1(&self, a: f64, b: f64, c: f64, z: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b, c, z);
Err(Error::NotImplemented {
feature: "SpecialFunctions::hyp2f1",
})
}
fn hyp1f1(&self, a: f64, b: f64, z: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (a, b, z);
Err(Error::NotImplemented {
feature: "SpecialFunctions::hyp1f1",
})
}
fn airy_ai(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::airy_ai",
})
}
fn airy_bi(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::airy_bi",
})
}
fn legendre_p(&self, n: i32, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (n, x);
Err(Error::NotImplemented {
feature: "SpecialFunctions::legendre_p",
})
}
fn legendre_p_assoc(&self, n: i32, m: i32, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (n, m, x);
Err(Error::NotImplemented {
feature: "SpecialFunctions::legendre_p_assoc",
})
}
fn sph_harm(&self, n: i32, m: i32, theta: &Tensor<R>, phi: &Tensor<R>) -> Result<Tensor<R>> {
let _ = (n, m, theta, phi);
Err(Error::NotImplemented {
feature: "SpecialFunctions::sph_harm",
})
}
fn fresnel_s(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::fresnel_s",
})
}
fn fresnel_c(&self, x: &Tensor<R>) -> Result<Tensor<R>> {
let _ = x;
Err(Error::NotImplemented {
feature: "SpecialFunctions::fresnel_c",
})
}
}