use crate::algorithm::linalg::helpers::{linalg_demote, linalg_promote};
use crate::error::Result;
use crate::runtime::common::statistics_common;
use crate::runtime::cuda::{CudaClient, CudaRuntime};
use crate::tensor::Tensor;
pub fn skew_impl(
client: &CudaClient,
a: &Tensor<CudaRuntime>,
dims: &[usize],
keepdim: bool,
correction: usize,
) -> Result<Tensor<CudaRuntime>> {
let (a_promoted, original_dtype) = linalg_promote(client, a)?;
let result = statistics_common::skew_composite(client, &a_promoted, dims, keepdim, correction)?;
linalg_demote(client, result, original_dtype)
}
pub fn kurtosis_impl(
client: &CudaClient,
a: &Tensor<CudaRuntime>,
dims: &[usize],
keepdim: bool,
correction: usize,
) -> Result<Tensor<CudaRuntime>> {
let (a_promoted, original_dtype) = linalg_promote(client, a)?;
let result =
statistics_common::kurtosis_composite(client, &a_promoted, dims, keepdim, correction)?;
linalg_demote(client, result, original_dtype)
}