def slogdet(A: LinearOperator, log_alg: Algorithm = Auto(), trace_alg: Algorithm = Auto()):
    r""" Computes sign and logdet of a linear operator. such that det(A) = sign(A) exp(logdet(A))

    Args:
        A (LinearOperator): The linear operator to compute the logdet of.
        log_alg (Algorithm, optional): The algorithm to use for the log.
            Specify LU() or Cholesky() for a dense approach.
        trace_alg (Algorithm, optional): The algorithm to use for the trace computation.

    Returns:
        Tuple[Array, Array]: sign, logdet: logdet
    # """
    # Args:
    #     A (LinearOperator): The linear operator to compute the logdet of.
    #     tol (float, optional): Tolerance for the bias of the solution. Defaults to 1e-6.
    #     vtol (float, optional): Tolerance for the variance (std) of the solution,
    #      returns a stochastic estimate if large that saves considerable computation. Default: 1e-6
    #     pbar (bool, optional): Whether to show a progress bar. Defaults to False.
    #     max_iters (int, optional): The maximum number of iterations. Defaults to 300.
    #     method (str, optional): Method to use, defaults to 'auto',
    #      options are 'auto', 'dense', 'iterative', 'iterative-exact', 'iterative-stochastic'

    # Returns:
    #     Tuple[Array, Array]: sign, logdet
    # """
 Computes sign and logdet of a linear operator. such that det(A) = sign(A) exp(logdet(A))

    Args:
        A (LinearOperator): The linear operator to compute the logdet of.
        log_alg (Algorithm, optional): The algorithm to use for the log.
            Specify LU() or Cholesky() for a dense approach.
        trace_alg (Algorithm, optional): The algorithm to use for the trace computation.

    Returns:
        Tuple[Array, Array]: sign, logdet: logdet
    # 
cola/linalg/logdet/logdet.py