use super::PositiveDefiniteKernel;
use crate::{KernelAdd, KernelError, KernelMul};
use opensrdk_symbolic_computation::Expression;
use rayon::prelude::*;
use std::{ops::Add, ops::Mul};
fn weighted_norm_pow(x: Expression, x_prime: Expression, params: &[Expression]) -> Expression {
todo!()
}
#[derive(Clone, Debug)]
pub struct ARD(pub usize);
impl PositiveDefiniteKernel for ARD {
fn params_len(&self) -> usize {
self.0
}
fn expression(
&self,
x: Expression,
x_prime: Expression,
params: &[Expression],
) -> Result<Expression, KernelError> {
if params.len() != self.0 {
return Err(KernelError::ParametersLengthMismatch.into());
}
todo!()
}
}
impl<R> Add<R> for ARD
where
R: PositiveDefiniteKernel,
{
type Output = KernelAdd<Self, R>;
fn add(self, rhs: R) -> Self::Output {
Self::Output::new(self, rhs)
}
}
impl<R> Mul<R> for ARD
where
R: PositiveDefiniteKernel,
{
type Output = KernelMul<Self, R>;
fn mul(self, rhs: R) -> Self::Output {
Self::Output::new(self, rhs)
}
}