class AutoCovarianceFunction {

    public void prepare(int rank) {
        if (rank == 0) {
            rank = BLOCK;
        } else {
            int r = rank % BLOCK;
            if (r != 0) {
                rank += BLOCK - r;
            }
        }
        if (c_ != null && c_.length > rank) {
            return;
        }

        switch (method_) {
            case Default:
                computeDefault(rank);
                break;
            case Default2:
                computeDefault2(rank);
                break;
            case SymmetricFilterDecomposition:
                computeSymmetric(rank, true);
                break;
            case SymmetricFilterDecomposition2:
                computeSymmetric(rank, false);
                break;
        }
    }

    public  AutoCovarianceFunction(final Polynomial ma, final Polynomial ar, final double var);
    public  AutoCovarianceFunction(final SymmetricFilter sma, final BackFilter ar);

}