Repository: mahout
Updated Branches:
  refs/heads/master 336f0e7db -> 74c10743d


(NOJIRA) fix: technically unary_- on vector or matrix semantically must create 
a clone
(as equivalent of mx * -1) and not have any side effects.


Project: http://git-wip-us.apache.org/repos/asf/mahout/repo
Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/74c10743
Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/74c10743
Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/74c10743

Branch: refs/heads/master
Commit: 74c10743dfaa3d00b7cea1b89a0432173187866c
Parents: 336f0e7
Author: Dmitriy Lyubimov <[email protected]>
Authored: Mon Aug 25 22:13:44 2014 -0700
Committer: Dmitriy Lyubimov <[email protected]>
Committed: Mon Aug 25 22:16:29 2014 -0700

----------------------------------------------------------------------
 .../org/apache/mahout/math/scalabindings/MatrixOps.scala      | 7 +++++--
 .../org/apache/mahout/math/scalabindings/VectorOps.scala      | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mahout/blob/74c10743/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MatrixOps.scala
----------------------------------------------------------------------
diff --git 
a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MatrixOps.scala
 
b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MatrixOps.scala
index 7abcece..d5ac026 100644
--- 
a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MatrixOps.scala
+++ 
b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/MatrixOps.scala
@@ -33,8 +33,11 @@ class MatrixOps(val m: Matrix) {
 
   def ncol = m.columnSize()
 
-
-  def unary_- = m.assign(Functions.NEGATE)
+  /**
+   * Warning: this creates a clone (as in mx * -1), in many applications 
inplace inversion `mx *= -1`
+   * might be an infinitely better choice.
+   */
+  def unary_- = cloned.assign(Functions.NEGATE)
 
   def +=(that: Matrix) = m.assign(that, Functions.PLUS)
 

http://git-wip-us.apache.org/repos/asf/mahout/blob/74c10743/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/VectorOps.scala
----------------------------------------------------------------------
diff --git 
a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/VectorOps.scala
 
b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/VectorOps.scala
index 48c1619..c20354d 100644
--- 
a/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/VectorOps.scala
+++ 
b/math-scala/src/main/scala/org/apache/mahout/math/scalabindings/VectorOps.scala
@@ -73,7 +73,7 @@ class VectorOps(private[scalabindings] val v: Vector) {
 
   def nequiv(that: Vector) = !equiv(that)
 
-  def unary_- = v.assign(Functions.NEGATE)
+  def unary_- = cloned.assign(Functions.NEGATE)
 
   def +=(that: Vector) = v.assign(that, Functions.PLUS)
 

Reply via email to