Skip to content

Commit

Permalink
Merge pull request #624 from criteo-forks/fix-vector-builder
Browse files Browse the repository at this point in the history
Fixed 'initialNonZero' handling in 'VectorBuilder'
  • Loading branch information
dlwh authored Apr 12, 2017
2 parents 8e42651 + 2c72e1c commit 5ae0579
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
6 changes: 4 additions & 2 deletions math/src/main/scala/breeze/linalg/VectorBuilder.scala
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ class VectorBuilder[@spec(Double, Int, Float, Long) E](private var _index: Array

def this(length: Int, initialNonZero: Int = 0)(implicit ring: Semiring[E],
man: ClassTag[E],
zero: Zero[E]) = this(new Array[Int](0), new Array[E](0), 0, length)
zero: Zero[E]) = {
this(new Array[Int](initialNonZero), new Array[E](initialNonZero), 0, length)
}

def this()(implicit ring: Semiring[E],
man: ClassTag[E],
Expand Down Expand Up @@ -311,7 +313,7 @@ class VectorBuilder[@spec(Double, Int, Float, Long) E](private var _index: Array

object VectorBuilder extends VectorBuilderOps {

def zeros[@spec(Double, Int, Float, Long) V: ClassTag:Semiring:Zero](size: Int, initialNonzero: Int = 16) = new VectorBuilder(size, initialNonzero)
def zeros[@spec(Double, Int, Float, Long) V: ClassTag:Semiring:Zero](size: Int, initialNonZero: Int = 16) = new VectorBuilder(size, initialNonZero)
def apply[@spec(Double, Int, Float, Long) V:Semiring:Zero](values: Array[V]) = new VectorBuilder(Array.range(0,values.length), values, values.length, values.length)

def apply[V:ClassTag:Semiring:Zero](values: V*):VectorBuilder[V] = apply(values.toArray)
Expand Down
5 changes: 5 additions & 0 deletions math/src/test/scala/breeze/linalg/VectorBuilderTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import breeze.numerics.closeTo
*/
@RunWith(classOf[JUnitRunner])
class VectorBuilderTest extends FunSuite with Checkers {
test("VectorBuilder respects initialNonZero") {
val vb = new VectorBuilder[Double](32, initialNonZero = 4)
assert(vb.index.length === 4)
assert(vb.data.length === 4)
}

test("Basic VectorBuilder result tests") {
val vb = VectorBuilder[Double](0.0, 1.0, 3.0)
Expand Down

0 comments on commit 5ae0579

Please sign in to comment.