#![warn(missing_docs)]
#![warn(clippy::all)]
#![allow(clippy::module_inception)]
#![allow(clippy::too_many_arguments)]
#![allow(clippy::manual_div_ceil)]
#![allow(clippy::needless_range_loop)]
#![allow(clippy::excessive_precision)]
#![allow(clippy::manual_memcpy)]
#![allow(clippy::items_after_test_module)]
#![allow(clippy::len_without_is_empty)]
#![allow(clippy::needless_return)]
#![allow(clippy::unnecessary_cast)]
#![allow(clippy::manual_range_contains)]
#![allow(clippy::identity_op)]
#![allow(clippy::useless_vec)]
#![allow(clippy::type_complexity)]
#![allow(clippy::let_and_return)]
#![allow(clippy::explicit_auto_deref)]
#![allow(clippy::unnecessary_unwrap)]
#![allow(clippy::needless_borrow)]
#![allow(clippy::erasing_op)]
#![allow(clippy::unnecessary_lazy_evaluations)]
#![allow(clippy::len_zero)]
#![allow(clippy::unnecessary_wraps)]
#![allow(clippy::if_same_then_else)]
#![allow(clippy::repeat_once)]
#![allow(clippy::unused_unit)]
#![allow(clippy::extra_unused_type_parameters)]
#![allow(clippy::needless_question_mark)]
#![allow(clippy::manual_repeat_n)]
pub mod algorithm;
pub mod autograd;
pub mod dtype;
pub mod error;
pub mod ops;
pub mod runtime;
#[cfg(feature = "sparse")]
pub mod sparse;
pub mod tensor;
pub mod prelude {
pub use crate::dtype::{DType, DataType};
pub use crate::error::{Error, Result};
pub use crate::tensor::{Layout, Shape, Strides, Tensor};
pub use crate::runtime::{Device, Runtime, RuntimeClient};
pub use crate::ops::{
ActivationOps, BinaryOps, CompareOps, ComplexOps, ConditionalOps, ConvOps, CumulativeOps,
DistanceMetric, DistanceOps, IndexingOps, LinalgOps, LogicalOps, MatmulOps,
MeshgridIndexing, NormalizationOps, PaddingMode, ReduceOps, ScalarOps, ShapeOps,
SortingOps, StatisticalOps, TensorOps, TypeConversionOps, UnaryOps, UtilityOps,
};
pub use crate::ops::{AdvancedRandomOps, MultivariateRandomOps, QuasiRandomOps, RandomOps};
pub use crate::algorithm::SpecialFunctions;
pub use crate::algorithm::fft::{FftAlgorithms, FftDirection, FftNormalization};
pub use crate::runtime::cpu::{CpuClient, CpuDevice, CpuRuntime, ParallelismConfig};
#[cfg(feature = "cuda")]
pub use crate::runtime::cuda::{CudaClient, CudaDevice, CudaRuntime};
#[cfg(feature = "wgpu")]
pub use crate::runtime::wgpu::{WgpuClient, WgpuDevice, WgpuRuntime};
#[cfg(feature = "sparse")]
pub use crate::sparse::Sparse24Ops;
#[cfg(feature = "sparse")]
pub use crate::sparse::{Sparse24Tensor, SparseFormat, SparseOps, SparseTensor};
}
#[cfg(feature = "cuda")]
pub type DefaultRuntime = runtime::cuda::CudaRuntime;
#[cfg(all(feature = "wgpu", not(feature = "cuda")))]
pub type DefaultRuntime = runtime::wgpu::WgpuRuntime;
#[cfg(not(any(feature = "cuda", feature = "wgpu")))]
pub type DefaultRuntime = runtime::cpu::CpuRuntime;