def orthonorm_check(a, tol=_DEF.ORTHONORM_TOL, report=False):
    import numpy as np
    from .base import delta_fxn
    orth = True
    n_fail = []
    o_fail = []
    if len(a.shape) == 1:
        a_mx = np.matrix(a, dtype=np.float_).T
    else:
        a_mx = np.matrix(a, dtype=np.float_)
    a_split = np.hsplit(a_mx, a_mx.shape[1])
    for iter1 in range(a_mx.shape[1]):
        for iter2 in range(iter1,a_mx.shape[1]):
            if not abs((a_split[iter1].T * a_split[iter2])[0,0] -
                        np.float_(delta_fxn(iter1, iter2))) <= tol:
                orth = False
                if report:
                    if iter1 == iter2:
                        n_fail.append(iter1)
                    else:
                        o_fail.append((iter1, iter2))
    if report:
        return orth, n_fail, o_fail
    else:
        return orth, None, None