Well, I don't see, why we're using different indices for initializing `beta` and `I`, `H`, `H_diag`.  The index of the active `beta` is always one ahead.  We're initializing everything at index `nCP`, but instead of `beta[nCP]` we're touching `beta[nCP+1]`.

After looking at `clean_icp()` I'm very sure that the indices of beta, I, H and H_diag should correspond.  In this method we're moving memory to get one free cutting plane!  Suppose, we got one free cutting plane at index `foo`.  Then the next iteration initializes I, H and H_diag at index `foo`, but keeps `beta[foo]` untouched.

We're thus touching an unrelated `beta[foo+1]`, but keep working with an uninitialized `beta[foo]`.  Agree?