--- a/AbstractNumberVector.st Wed Jun 01 13:23:33 2016 +0200
+++ b/AbstractNumberVector.st Thu Jun 02 11:26:05 2016 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2011 by Claus Gittinger
All Rights Reserved
@@ -215,9 +217,13 @@
!AbstractNumberVector methodsFor:'destructive arithmetic support'!
primAbs
- "low performance fall back: destructive replace each element by its absolute value"
+ "low performance fall back: destructive replace each element by its absolute value.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) abs].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at:i put: (self at:i) abs].
"
|f|
@@ -232,11 +238,15 @@
"
!
-primAddArray: floatArray
+primAddArray:anArray
"low performance fallback: destructively add the vector argument into the receiver.
- The argument must be another vector"
+ The argument must be another vector.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) + (floatArray at: i)].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to:sz do:[:i| self at:i put: (self at:i) + (anArray at:i)].
"
|f1 f2|
@@ -249,16 +259,24 @@
!
primAddScalar: aScalar
- "low performance fallback: destructively add the scalar argument into the receiver."
+ "low performance fallback: destructively add the scalar argument into the receiver.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) + aScalar].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to:sz do:[:i| self at:i put:(self at:i) + aScalar].
!
primDivArray: floatArray
"low performance fallback: destructively divide the vector argument into the receiver.
- The argument must be another vector"
+ The argument must be another vector.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) / (floatArray at: i)].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) / (floatArray at: i)].
"
|f1 f2|
@@ -271,16 +289,25 @@
!
primDivScalar: aScalar
- "low performace fallback: destructively divide each element of the receiver by the scalar argument."
+ "low performace fallback: destructively divide each element of the receiver
+ by the scalar argument.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) / aScalar ].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) / aScalar ].
!
primMulArray: floatArray
"low performance fallback: destructively multiply the vector argument into the receiver.
- The argument must be another vector"
+ The argument must be another vector.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) * (floatArray at: i)].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) * (floatArray at: i)].
"
|f1 f2|
@@ -293,15 +320,24 @@
!
primMulScalar: aScalar
- "low performace fallback: destructively multiply each element of the receiver by the scalar argument."
+ "low performace fallback: destructively multiply each element of the receiver
+ by the scalar argument.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) * aScalar ].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) * aScalar ].
!
primNegated
- "low performance fallback: destructively negative value of each element"
+ "low performance fallback: destructively negative value of each element.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) negated].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) negated].
"
|f|
@@ -314,9 +350,13 @@
primSubtractArray: floatArray
"low performance fallback: destructively subtract the vector argument into the receiver.
- The argument must be another vector"
+ The argument must be another vector.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) - (floatArray at: i)].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) - (floatArray at: i)].
"
|f1 f2|
@@ -329,9 +369,14 @@
!
primSubtractScalar: aScalar
- "low performace fallback: destructively subtract the scalar argument from each element of the receiver."
+ "low performace fallback: destructively subtract the scalar argument
+ from each element of the receiver.
+ May be redefined in subclasses to use vector instructions"
- 1 to: self size do:[:i| self at: i put: (self at: i) - aScalar ].
+ |sz "{ Class: SmallInteger }"|
+
+ sz := self size.
+ 1 to: sz do:[:i| self at: i put: (self at: i) - aScalar ].
! !
!AbstractNumberVector methodsFor:'queries'!