Skip to main content

tensor4all_core/defaults/
mod.rs

1//! Default concrete type implementations.
2//!
3//! This module provides the default concrete types for tensor network operations:
4//!
5//! - [`DynId`]: Runtime identity (UUID-based unique identifier)
6//! - [`TagSet`]: Tag set for metadata (Arc-wrapped for cheap cloning)
7//! - [`Index`]: Generic index type (`Index<Id, Tags>`)
8//! - [`DynIndex`]: Default index type (`Index<DynId, TagSet>`)
9//! - [`TensorDynLen`]: Dense tensor with dynamic rank
10//!
11//! Linear algebra operations:
12//! - [`svd::svd`]: Singular Value Decomposition
13//! - [`qr::qr`]: QR decomposition
14//! - [`factorize::factorize`]: Unified factorization interface
15//! - [`direct_sum::direct_sum`]: Direct sum of tensors
16//!
17//! These types are suitable for most tensor network applications and provide
18//! a good balance of flexibility and performance.
19
20pub mod index;
21/// Dynamic-length tensor implementation.
22pub mod tensordynlen;
23
24// Contraction
25pub mod contract;
26pub(crate) mod structured_contraction;
27
28// Linear algebra modules
29pub mod direct_sum;
30pub mod factorize;
31pub mod qr;
32pub mod svd;
33
34pub use contract::{
35    build_diag_union, collect_sizes, contract_connected, contract_connected_with_options,
36    contract_multi, contract_multi_owned, contract_multi_with_options,
37    print_and_reset_contract_profile, remap_output_ids, remap_tensor_ids, reset_contract_profile,
38    AxisUnionFind, ContractionOptions,
39};
40pub use index::{DefaultIndex, DefaultTagSet, DynId, DynIndex, Index, TagSet};
41pub use tensordynlen::{
42    compute_permutation_from_indices, diag_tensor_dyn_len, unfold_split, RandomScalar,
43    TensorAccess, TensorDynLen,
44};
45
46// Re-export linear algebra functions and types
47pub use direct_sum::direct_sum;
48pub use factorize::{
49    factorize, Canonical, FactorizeAlg, FactorizeError, FactorizeOptions, FactorizeResult,
50};
51pub use qr::{default_qr_rtol, qr, qr_with, set_default_qr_rtol, QrError, QrOptions};
52pub use svd::{svd, svd_with, SvdError, SvdOptions};