'Calculates the inverse using the adjugate matrix and a determinant.
See Also
inv
inverse_LU
inverse_GE'

def inverse_ADJ(self, iszerofunc=_iszero):

    if (not self.is_square):
        raise NonSquareMatrixError('A    Matrix    must    be    square    to    invert.')
    d = self.det(method='berkowitz')
    zero = d.equals(0)
    if (zero is None):
        ok = self.rref(simplify=True)[0]
        zero = any((iszerofunc(ok[(j, j)]) for j in range(ok.rows)))
    if zero:
        raise ValueError('Matrix    det    ==    0;    not    invertible.')
    return (self.adjugate() / d)
