diff options
author | michelou <michelou@epfl.ch> | 2008-01-30 10:52:10 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2008-01-30 10:52:10 +0000 |
commit | 345d649bb252f9835a23776db036188bf875283a (patch) | |
tree | c5c2cf78c1bb1060195383b899bc5ed9bb2318dc /test | |
parent | ca644940538c86aca051d38a18a630028a76c4fc (diff) | |
download | scala-345d649bb252f9835a23776db036188bf875283a.tar.gz scala-345d649bb252f9835a23776db036188bf875283a.tar.bz2 scala-345d649bb252f9835a23776db036188bf875283a.zip |
fixed #421
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/t0421.check | 3 | ||||
-rw-r--r-- | test/files/run/t0421.scala | 28 |
2 files changed, 31 insertions, 0 deletions
diff --git a/test/files/run/t0421.check b/test/files/run/t0421.check new file mode 100644 index 0000000000..eac788606b --- /dev/null +++ b/test/files/run/t0421.check @@ -0,0 +1,3 @@ +[[0,1],[2,3],[4,5]] +[[31.0]] +[[24.0,32.0]] diff --git a/test/files/run/t0421.scala b/test/files/run/t0421.scala new file mode 100644 index 0000000000..91a2b0cb4a --- /dev/null +++ b/test/files/run/t0421.scala @@ -0,0 +1,28 @@ +// ticket #421 +object Test extends Application { + + def transpose[A](xss: Array[Array[A]]) = { + for (i <- Array.range(0, xss(0).length)) yield + for (xs <- xss) yield xs(i) + } + + def scalprod(xs: Array[Double], ys: Array[Double]) = { + var acc = 0.0 + for ((x, y) <- xs zip ys) acc = acc + x * y + acc + } + + def matmul(xss: Array[Array[Double]], yss: Array[Array[Double]]) = { + val ysst = transpose(yss) + for (xs <- xss) yield + for (yst <- ysst) yield + scalprod(xs, yst) + } + + val a1 = Array(Array(0, 2, 4), Array(1, 3, 5)) + println(transpose(a1).deepMkString("[", ",", "]")) + + println(matmul(Array(Array(2, 3)), Array(Array(5), Array(7))).deepMkString("[", ",", "]")) + + println(matmul(Array(Array(4)), Array(Array(6, 8))).deepMkString("[", ",", "]")) +} |