docs: private double tenativeUpdate(final Vec[] columnMajor, final int j, final double w_j, final double[] y, final double[] r, final double lambda, final double s, final double[] delta)
      {
          double numer = 0, denom = 0;
          if (columnMajor != null)
          {
              Vec col_j = columnMajor[j];
              if (col_j.nnz() == 0)
                  return 0;
              for (IndexValue iv : col_j)
              {
                  final double x_ij = iv.getValue();
                  final int i = iv.getIndex();
                  numer += x_ij * y[i] / (1 + exp(r[i]));
                  denom += x_ij * x_ij * F(r[i], delta[j] * abs(x_ij));
                  if (prior == Prior.LAPLACE)
                      numer -= lambda * s;
                  else
                  {
                      numer -= w_j / lambda;
                      denom += 1 / lambda;
                  }
              }
          }
          else//bias term, all x_ij = 1
              for (int i = 0; i < y.length; i++)
              {
                  numer += y[i] / (1 + exp(r[i])) - lambda * s;
                  denom += F(r[i], delta[j]);
              }
  
          return numer / denom;
      }