sf.physics.bargmann.complex_gaussian_integral

mrmustard.physics.bargmann.complex_gaussian_integral(Abc, idx_z, idx_zconj, measure=-1)[source]

Computes the Gaussian integral of the exponential of a complex quadratic form. The integral is defined as (note that in general we integrate over a subset of 2m dimensions):

\(\int_{C^m} F(z) d\mu(z)\)

where

\(F(z) = \textrm{exp}(-0.5 z^T A z + b^T z)\)

Here, z is an n-dim complex vector, A is an n x n complex matrix, b is an n-dim complex vector, c is a complex scalar, and \(d\mu(z)\) is a non-holomorphic complex measure over a subset of m pairs of z,z* variables. These are specified by the indices idx_z and idx_zconj. The measure parameter is the exponent of the measure:

Math:

dmu(z) = textrm{exp}(m * |z|^2) frac{d^{2n}z}{pi^n} = frac{1}{pi^n}textrm{exp}(m * |z|^2) dtextrm{Re}(z) dtextrm{Im}(z)

Note that the indices must be a complex variable pairs with each other (idx_z, idx_zconj) to make this contraction meaningful. Please make sure the corresponding complex variable with respect to your Abc triples. For examples, if the indices of Abc denotes the variables (\alpha, \beta, \alpha^*, \beta^*, \gamma, \eta), the contraction only works with the indices between (\alpha, \alpha^*) pairs and (\beta, \beta^*) pairs.

Parameters:
  • A – the (A,b,c) triple

  • b – the (A,b,c) triple

  • c – the (A,b,c) triple

  • idx_z (tuple[int, ...]) – the tuple of indices of the z variables

  • idx_zconj (tuple[int, ...]) – the tuple of indices of the z* variables

  • measure (float) – the exponent of the measure (default is -1: Bargmann measure)

Returns:

The (A,b,c) triple of the result of the integral.

Raises:

ValueError – If idx_z and idx_zconj have different lengths.