Conjugate gradient with incomplete Cholesky preconditioner

I am not sure this is accurate. Have a look at my implementation IncompleteCholeskyDecompositionThreshold Project.
From what I understand we can have 3 types of incomplete (At least those are 3 options):

  1. Threshold Based - IC( \tau ) .
    MATLAB’s ichol() supports this.
  2. Pattern Based - IC( l )
    MATLAB’s ichol() supports this with l = 0, namely only where non zero elements exists. This basically also guarantees upper memory boundary.
  3. Number of Non Zero Elements - IC( p )
    MATLAB doesn’t support this. This allows exact memory allocation control.

So what I see is that MATLAB has 2 out of 3 and has a mode to control the amount of memory.
It also has a mode for Modified Cholesky which compensate the diagonal components for the inaccurate decomposition.

If I get it correctly, LimitedLDLFactorizations.jl is doing something like (2), hence the memory allocation is a multiplication of the number of non zeros of the input matrix. Am I right?
I can see there is also support for Thresholding so if one allocates enough memory then this become (1) as well.
So we’re missing (3) and the Modified ICT.