openfermion.circuits.low_rank_two_body_decomposition

Convert two-body operator into sum of squared one-body operators.

Main aliases

openfermion.circuits.low_rank.low_rank_two_body_decomposition, openfermion.low_rank_two_body_decomposition

As in arXiv:1808.02625, this function decomposes pqrshpqrsapaqaras as lλl(pqglpqapaq)2 l is truncated to take max value L so that L1l=0(pq|glpq|)2|λl|<x

two_body_coefficients ndarray

an N x N x N x N numpy array giving the hpqrs tensor. This tensor must be 8-fold symmetric (real integrals).

truncation_threshold optional Float

the value of x, above.

final_rank optional int

if provided, this specifies the value of L at which to truncate. This overrides truncation_threshold.

spin_basis bool

True if the two-body terms are passed in spin orbital basis. False if already in spatial orbital basis.

eigenvalues ndarray of floats

length L array giving the λl.

one_body_squares ndarray of floats

L x N x N array of floats corresponding to the value of gpql.

one_body_correction ndarray

One-body correction terms that result from reordering to chemist ordering, in spin-orbital basis.

truncation_value float

after truncation, this is the value L1l=0(pq|glpq|)2|λl|<x

TypeError Invalid two-body coefficient tensor specification.