Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Args:
R (array): square matrix parametrizing the Hermite polynomial family
cutoff (int): maximum size of the subindices in the Hermite polynomial
y (array): vector argument of the Hermite polynomial
renorm (bool): If ``True``, normalizes the returned multidimensional Hermite
polynomials such that :math:`H_k^{(R)}(y)/\prod_i k_i!`
make_tensor (bool): If ``False``, returns a flattened one dimensional array
containing the values of the polynomial
modified (bool): whether to return the modified multidimensional Hermite polynomials or the standard ones
Returns:
(array): the multidimensional Hermite polynomials
"""
input_validation(R)
n, _ = R.shape
if (modified is False) and (y is not None):
m = y.shape[0]
if m == n:
ym = R @ y
return hermite_multidimensional(
R, cutoff, y=ym, renorm=renorm, make_tensor=make_tensor, modified=True
)
if y is None:
y = np.zeros([n], dtype=complex)
m = y.shape[0]
if m != n:
raise ValueError("The matrix R and vector y have incompatible dimensions")
Args:
A (array): a square, symmetric :math:`N\times N` array.
cutoff (int): maximum size of the subindices in the Hermite polynomial
mu (array): a vector of length :math:`N` representing the vector of means/displacement
renorm (bool): If ``True``, the returned hafnians are *normalized*, that is,
:math:`haf(reduction(A, k))/\ \sqrt{prod_i k_i!}`
(or :math:`lhaf(fill\_diagonal(reduction(A, k),reduction(mu, k)))` if
``mu`` is not None)
make_tensor: If ``False``, returns a flattened one dimensional array instead
of a tensor with the values of the hafnians.
Returns:
(array): the values of the hafnians for each value of :math:`k` up to the cutoff
"""
input_validation(A, tol=tol)
n, _ = A.shape
if mu is None:
mu = np.zeros([n], dtype=complex)
return hermite_multidimensional(
-A, cutoff, y=mu, renorm=renorm, make_tensor=make_tensor, modified=True
)