(circuit, nqubits, identity_only)
Checks if a given circuit, in matrix form, is equivalent to
    a scalar value.

    Parameters
    ==========

    circuit : Gate tuple
        Sequence of quantum gates representing a quantum circuit
    nqubits : int
        Number of qubits in the circuit
    identity_only : bool
        Check for only identity matrices

    Note: Used in situations when is_scalar_sparse_matrix has bugs
Checks if a given circuit, in matrix form, is equivalent to
    a scalar value.
Checks if a given circuit in matrix form is equivalent to a scalar value .
def is_scalar_nonsparse_matrix(circuit, nqubits, identity_only):
    """Checks if a given circuit, in matrix form, is equivalent to
    a scalar value.

    Parameters
    ==========

    circuit : Gate tuple
        Sequence of quantum gates representing a quantum circuit
    nqubits : int
        Number of qubits in the circuit
    identity_only : bool
        Check for only identity matrices

    Note: Used in situations when is_scalar_sparse_matrix has bugs
    """

    matrix = represent(Mul(*circuit), nqubits=nqubits)

    # In some cases, represent returns a 1D scalar value in place
    # of a multi-dimensional scalar matrix
    if (isinstance(matrix, Number)):
        return matrix == 1 if identity_only else True

    # If represent returns a matrix, check if the matrix is diagonal
    # and if every item along the diagonal is the same
    else:
        # Added up the diagonal elements
        matrix_trace = matrix.trace()
        # Divide the trace by the first element in the matrix
        # if matrix is not required to be the identity matrix
        adjusted_matrix_trace = (matrix_trace/matrix[0]
                                 if not identity_only
                                 else matrix_trace)

        is_identity = matrix[0] == 1.0 if identity_only else True

        has_correct_trace = adjusted_matrix_trace == pow(2, nqubits)

        # The matrix is scalar if it's diagonal and the adjusted trace
        # value is equal to 2^nqubits
        return bool(
            matrix.is_diagonal() and has_correct_trace and is_identity)
def is_scalar_nonsparse_matrix ( circuit , nqubits , identity_only ) : matrix = represent ( Mul ( * circuit ) , nqubits = nqubits ) # In some cases, represent returns a 1D scalar value in place # of a multi-dimensional scalar matrix if ( isinstance ( matrix , Number ) ) : return matrix == 1 if identity_only else True # If represent returns a matrix, check if the matrix is diagonal # and if every item along the diagonal is the same else : # Added up the diagonal elements matrix_trace = matrix . trace ( ) # Divide the trace by the first element in the matrix # if matrix is not required to be the identity matrix adjusted_matrix_trace = ( matrix_trace / matrix [ 0 ] if not identity_only else matrix_trace ) is_identity = matrix [ 0 ] == 1.0 if identity_only else True has_correct_trace = adjusted_matrix_trace == pow ( 2 , nqubits ) # The matrix is scalar if it's diagonal and the adjusted trace # value is equal to 2^nqubits return bool ( matrix . is_diagonal ( ) and has_correct_trace and is_identity )