flopscope.

flopscope.is_symmetric

flopscope.is_symmetric(data: 'np.ndarray', *, symmetry, atol: 'float' = 1e-06, rtol: 'float' = 1e-05) -> 'bool'[flopscope source]

Check whether *data* is invariant under the given symmetry.

Check whether data is invariant under the given symmetry.

Parameters

data:flops.ndarray

The array to test.

symmetry:SymmetryGroup or array-like specification

Symmetry to verify, normalized via normalize_symmetry_input.

atol:float, optional

Absolute tolerance used by flops.allclose. Default 1e-6.

rtol:float, optional

Relative tolerance used by flops.allclose. Default 1e-5.

Returns

:bool

True if data is invariant under every group element, otherwise False.

Examples

>>> import flopscope as flops
>>> import flopscope.numpy as fnp
>>> matrix = fnp.array([[1.0, 2.0], [2.0, 3.0]])
>>> flops.is_symmetric(
... matrix, symmetry=flops.SymmetryGroup.symmetric(axes=(0, 1))
... )
True