Skip to content

Commit fe18dfc

Browse files
committed
.
1 parent 04c9eb7 commit fe18dfc

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package vecxt
2+
3+
object JvmFloatMatrix:
4+
end JvmFloatMatrix

vecxt/src-jvm/floatmatrix.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,16 @@ object JvmFloatMatrix:
123123
inline def *:*=(bmat: Matrix[Boolean])(using inline boundsCheck: BoundsCheck): Unit =
124124
sameDimMatCheck(m, bmat)
125125
if sameDenseElementWiseMemoryLayoutCheck(m, bmat) then
126+
val zero = FloatVector.zero(spf)
126127
var i = 0
128+
while i < spf.loopBound(m.raw.length) do
129+
val mask = VectorMask.fromArray(spf, bmat.raw, i)
130+
// keep float value where mask=true, zero where mask=false
131+
zero.blend(FloatVector.fromArray(spf, m.raw, i), mask).intoArray(m.raw, i)
132+
i += spfl
133+
end while
127134
while i < m.raw.length do
128-
m.raw.update(i, (if bmat.raw(i) then 1.0f else 0.0f) * m.raw(i))
135+
if !bmat.raw(i) then m.raw.update(i, 0.0f)
129136
i += 1
130137
end while
131138
else ???

0 commit comments

Comments
 (0)