1#![allow(clippy::len_zero)]
2#![allow(clippy::missing_safety_doc)]
3
4pub extern crate itertools;
5
6#[macro_use]
7mod macros;
8
9pub type TVec<T> = smallvec::SmallVec<[T; 4]>;
14
15pub type TractError = anyhow::Error;
16pub type TractResult<T> = anyhow::Result<T>;
17
18pub mod prelude {
19 pub use crate::blob::Blob;
20 pub use crate::datum::{round_ties_to_even, Datum, DatumType, QParams};
21 pub use crate::dim::{Symbol, SymbolScope, SymbolValues, TDim, ToDim};
22 pub use crate::opaque::Opaque;
23 pub use crate::tensor::litteral::*;
24 pub use crate::tensor::{natural_strides, IntoArcTensor, IntoTensor, Tensor};
25 #[cfg(feature = "complex")]
26 pub use crate::tensor::{reinterpret_complex_as_inner_dim, reinterpret_inner_dim_as_complex};
27 pub use crate::tvec;
28 pub use crate::TVec;
29 pub use crate::{
30 dispatch_copy, dispatch_copy_by_size, dispatch_datum, dispatch_datum_by_size,
31 dispatch_floatlike, dispatch_hash, dispatch_numbers, dispatch_signed,
32 };
33 pub use crate::{TractError, TractResult};
34 pub use half::f16;
35 pub use itertools as tract_itertools;
36 #[cfg(feature = "complex")]
37 pub use num_complex::Complex;
38}
39
40pub mod internal {
41 pub use crate::datum::ClampCast;
42 pub use crate::dim::{parse_tdim, solve_for, DimLike};
43 pub use crate::opaque::{ OpaquePayload, OpaqueFact };
44 pub use crate::prelude::*;
45 pub use crate::tensor::view::TensorView;
46 pub use crate::tensor::Approximation;
47 pub use crate::tensor::vector_size;
48 pub use anyhow::{anyhow, bail, ensure, format_err, Context as TractErrorContext};
49 pub use ndarray as tract_ndarray;
50 pub use num_integer;
51 pub use num_traits as tract_num_traits;
52 pub use smallvec as tract_smallvec;
53}
54
55pub use dim::TooEarly;
56pub use half;
57
58mod blob;
59mod datum;
60mod dim;
61mod opaque;
62mod scatter;
63mod tensor;