You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by dl...@apache.org on 2014/08/26 07:19:31 UTC

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

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 <dl...@apache.org>
Authored: Mon Aug 25 22:13:44 2014 -0700
Committer: Dmitriy Lyubimov <dl...@apache.org>
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)