docs: private void performDynamicStep() {
          // initially look for singular values of zero
          if( findingZeros ) {
              if( steps > 6 ) {
                  findingZeros = false;
              } else {
                  double scale = computeBulgeScale();
                  performImplicitSingleStep(scale,0,false);
              }
          } else {
              // For very large and very small numbers the only way to prevent overflow/underflow
              // is to have a common scale between the wilkinson shift and the implicit single step
              // What happens if you don't is that when the wilkinson shift returns the value it
              // computed it multiplies it by the scale twice, which will cause an overflow
              double scale = computeBulgeScale();
              // use the wilkinson shift to perform a step
              double lambda = selectWilkinsonShift(scale);
  
              performImplicitSingleStep(scale,lambda,false);
          }
      }