Skip to main content

tensor_train_to_treetn

Function tensor_train_to_treetn 

Source
pub fn tensor_train_to_treetn<T>(
    tt: &TensorTrain<T>,
) -> Result<(TreeTN<TensorDynLen, usize>, Vec<DynIndex>)>
where T: TTScalar + TensorElement + Clone,
Expand description

Convert a linear-chain simple tensor train into a TreeTN with node names 0..n-1.

The returned site indices are ordered by tensor-train site position, which is convenient for downstream state/layout bookkeeping.

ยงExamples

use tensor4all_core::{IndexLike, TensorIndex, TensorLike};
use tensor4all_simplett::{tensor3_from_data, AbstractTensorTrain, TensorTrain};
use tensor4all_treetn::tensor_train_to_treetn;

let tt = TensorTrain::new(vec![
    tensor3_from_data(vec![1.0_f64, 2.0], 1, 2, 1),
]).unwrap();

let (treetn, site_indices) = tensor_train_to_treetn(&tt).unwrap();
let dense = treetn.contract_to_tensor().unwrap();

assert_eq!(treetn.node_names(), vec![0]);
assert_eq!(site_indices.len(), 1);
assert_eq!(dense.external_indices()[0].id(), site_indices[0].id());
assert_eq!(dense.dims(), vec![2]);