Skip to main content

affine_transform_tensors_unfused

Function affine_transform_tensors_unfused 

Source
pub fn affine_transform_tensors_unfused(
    r: usize,
    params: &AffineParams,
    bc: &[BoundaryCondition],
) -> Result<Vec<Tensor3<Complex64>>>
Expand description

Create unfused affine transformation tensors.

Returns a vector of R tensors, where each tensor has shape: [left_bond, 2, 2, ..., 2, right_bond] with M+N physical indices of dimension 2.

The physical index order matches Quantics.jl: (y[1], y[2], ..., y[M], x[1], x[2], ..., x[N]) where y are output variables and x are input variables.

§Arguments

  • r - Number of bits per variable (number of sites)
  • params - Affine transformation parameters
  • bc - Boundary conditions for each output variable

§Returns

Vector of R tensors with unfused physical indices.

§Examples

use tensor4all_quanticstransform::{
    affine_transform_tensors_unfused, AffineParams, BoundaryCondition,
};
use tensor4all_simplett::Tensor3Ops;

let params = AffineParams::from_integers(vec![1, 1, 0, 1], vec![0, 0], 2, 2).unwrap();
let bc = vec![BoundaryCondition::Periodic; 2];
let tensors = affine_transform_tensors_unfused(4, &params, &bc).unwrap();

// One tensor per site
assert_eq!(tensors.len(), 4);

// Each tensor has fused site_dim = 2^(M+N) = 16 for M=2, N=2
assert_eq!(tensors[0].site_dim(), 16);