private def expandDense()

in core/src/main/scala/com/spotify/featran/transformers/PolynomialExpansion.scala [76:103]


  private def expandDense(
    values: Array[Double],
    lastIdx: Int,
    degree: Int,
    multiplier: Double,
    polyValues: Array[Double],
    curPolyIdx: Int
  ): Int = {
    if (multiplier == 0.0) {
      // do nothing
    } else if (degree == 0 || lastIdx < 0) {
      if (curPolyIdx >= 0) { // skip the very first 1
        polyValues(curPolyIdx) = multiplier
      }
    } else {
      val v = values(lastIdx)
      val lastIdx1 = lastIdx - 1
      var alpha = multiplier
      var i = 0
      var curStart = curPolyIdx
      while (i <= degree && alpha != 0.0) {
        curStart = expandDense(values, lastIdx1, degree - i, alpha, polyValues, curStart)
        i += 1
        alpha *= v
      }
    }
    curPolyIdx + getPolySize(lastIdx + 1, degree)
  }