in core/src/main/scala/com/spotify/featran/transformers/PolynomialExpansion.scala [112:126]
override def featureDimension(c: Int): Int =
PolynomialExpansion.getPolySize(c, degree) - 1
override def featureNames(c: Int): Seq[String] = names(featureDimension(c))
override def buildFeatures(a: Option[Array[Double]], c: Int, fb: FeatureBuilder[_]): Unit =
a match {
case Some(x) =>
if (x.length != c) {
fb.skip(featureDimension(c))
fb.reject(this, FeatureRejection.WrongDimension(c, x.length))
} else {
val data = PolynomialExpansion.expand(x, degree)
fb.add[Array](names(featureDimension(c)), data)(ArraySeq.unsafeWrapArray)
}
case None => fb.skip(featureDimension(c))
}