1#![warn(missing_docs)]
48#![warn(clippy::all)]
49#![allow(clippy::module_inception)]
50#![allow(clippy::too_many_arguments)]
51#![allow(clippy::manual_div_ceil)]
52#![allow(clippy::needless_range_loop)]
53#![allow(clippy::excessive_precision)]
54#![allow(clippy::manual_memcpy)]
55#![allow(clippy::items_after_test_module)]
56#![allow(clippy::len_without_is_empty)]
57#![allow(clippy::needless_return)]
58#![allow(clippy::unnecessary_cast)]
59#![allow(clippy::manual_range_contains)]
60#![allow(clippy::identity_op)]
61#![allow(clippy::useless_vec)]
62#![allow(clippy::type_complexity)]
63#![allow(clippy::let_and_return)]
64#![allow(clippy::explicit_auto_deref)]
65#![allow(clippy::unnecessary_unwrap)]
66#![allow(clippy::needless_borrow)]
67#![allow(clippy::erasing_op)]
68#![allow(clippy::unnecessary_lazy_evaluations)]
69#![allow(clippy::len_zero)]
70#![allow(clippy::unnecessary_wraps)]
71#![allow(clippy::if_same_then_else)]
72#![allow(clippy::repeat_once)]
73#![allow(clippy::unused_unit)]
74#![allow(clippy::extra_unused_type_parameters)]
75#![allow(clippy::needless_question_mark)]
76#![allow(clippy::manual_repeat_n)]
77
78pub mod algorithm;
79pub mod autograd;
80pub mod dtype;
81pub mod error;
82pub mod ops;
83pub mod runtime;
84#[cfg(feature = "sparse")]
85pub mod sparse;
86pub mod tensor;
87
88pub mod prelude {
97 pub use crate::dtype::{DType, DataType};
99 pub use crate::error::{Error, Result};
100 pub use crate::tensor::{Layout, Shape, Strides, Tensor};
101
102 pub use crate::runtime::{Device, Runtime, RuntimeClient};
104
105 pub use crate::ops::{
107 ActivationOps, BinaryOps, CompareOps, ComplexOps, ConditionalOps, ConvOps, CumulativeOps,
108 DistanceMetric, DistanceOps, IndexingOps, LinalgOps, LogicalOps, MatmulOps,
109 MeshgridIndexing, NormalizationOps, PaddingMode, ReduceOps, ScalarOps, ShapeOps,
110 SortingOps, StatisticalOps, TensorOps, TypeConversionOps, UnaryOps, UtilityOps,
111 };
112 pub use crate::ops::{AdvancedRandomOps, MultivariateRandomOps, QuasiRandomOps, RandomOps};
113
114 pub use crate::algorithm::SpecialFunctions;
116 pub use crate::algorithm::fft::{FftAlgorithms, FftDirection, FftNormalization};
117
118 pub use crate::runtime::cpu::{CpuClient, CpuDevice, CpuRuntime, ParallelismConfig};
120
121 #[cfg(feature = "cuda")]
122 pub use crate::runtime::cuda::{CudaClient, CudaDevice, CudaRuntime};
123
124 #[cfg(feature = "wgpu")]
125 pub use crate::runtime::wgpu::{WgpuClient, WgpuDevice, WgpuRuntime};
126
127 #[cfg(feature = "sparse")]
129 pub use crate::sparse::Sparse24Ops;
130 #[cfg(feature = "sparse")]
131 pub use crate::sparse::{Sparse24Tensor, SparseFormat, SparseOps, SparseTensor};
132}
133
134#[cfg(feature = "cuda")]
140pub type DefaultRuntime = runtime::cuda::CudaRuntime;
141
142#[cfg(all(feature = "wgpu", not(feature = "cuda")))]
144pub type DefaultRuntime = runtime::wgpu::WgpuRuntime;
145
146#[cfg(not(any(feature = "cuda", feature = "wgpu")))]
148pub type DefaultRuntime = runtime::cpu::CpuRuntime;