From f51b0f93f20e23804b2f95edfb1d86b9c9cee493 Mon Sep 17 00:00:00 2001 From: Patrick Wendell Date: Sat, 23 Feb 2013 13:26:59 -0800 Subject: [PATCH 1/2] Adding Java-accessible methods to Vector.scala This is needed for the Strata machine learning tutorial (and also is generally helpful). --- core/src/main/scala/spark/util/Vector.scala | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/scala/spark/util/Vector.scala b/core/src/main/scala/spark/util/Vector.scala index 03559751bc..d03cebeea9 100644 --- a/core/src/main/scala/spark/util/Vector.scala +++ b/core/src/main/scala/spark/util/Vector.scala @@ -10,12 +10,14 @@ class Vector(val elements: Array[Double]) extends Serializable { throw new IllegalArgumentException("Vectors of different length") return Vector(length, i => this(i) + other(i)) } + def add(other: Vector) = +(other) def - (other: Vector): Vector = { if (length != other.length) throw new IllegalArgumentException("Vectors of different length") return Vector(length, i => this(i) - other(i)) } + def subtract(other: Vector) = -(other) def dot(other: Vector): Double = { if (length != other.length) @@ -60,10 +62,13 @@ class Vector(val elements: Array[Double]) extends Serializable { } this } + def addInPlace(other: Vector) = +=(other) def * (scale: Double): Vector = Vector(length, i => this(i) * scale) + def multiply (d: Double) = *(d) def / (d: Double): Vector = this * (1 / d) + def divide (d: Double) = /(d) def unary_- = this * -1 From 931f439be9048fde244b81e3eae4ad5ff9de4adf Mon Sep 17 00:00:00 2001 From: Patrick Wendell Date: Sat, 23 Feb 2013 15:40:41 -0800 Subject: [PATCH 2/2] Responding to code review --- core/src/main/scala/spark/util/Vector.scala | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/scala/spark/util/Vector.scala b/core/src/main/scala/spark/util/Vector.scala index d03cebeea9..835822edb2 100644 --- a/core/src/main/scala/spark/util/Vector.scala +++ b/core/src/main/scala/spark/util/Vector.scala @@ -10,14 +10,16 @@ class Vector(val elements: Array[Double]) extends Serializable { throw new IllegalArgumentException("Vectors of different length") return Vector(length, i => this(i) + other(i)) } - def add(other: Vector) = +(other) + + def add(other: Vector) = this + other def - (other: Vector): Vector = { if (length != other.length) throw new IllegalArgumentException("Vectors of different length") return Vector(length, i => this(i) - other(i)) } - def subtract(other: Vector) = -(other) + + def subtract(other: Vector) = this - other def dot(other: Vector): Double = { if (length != other.length) @@ -62,13 +64,16 @@ class Vector(val elements: Array[Double]) extends Serializable { } this } - def addInPlace(other: Vector) = +=(other) + + def addInPlace(other: Vector) = this +=other def * (scale: Double): Vector = Vector(length, i => this(i) * scale) - def multiply (d: Double) = *(d) + + def multiply (d: Double) = this * d def / (d: Double): Vector = this * (1 / d) - def divide (d: Double) = /(d) + + def divide (d: Double) = this / d def unary_- = this * -1