Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,38 @@
|
|||
class Matrix[T](matrix:Array[Array[T]])(implicit n: Numeric[T], m: ClassManifest[T])
|
||||
{
|
||||
import n._
|
||||
val rows=matrix.size
|
||||
val cols=matrix(0).size
|
||||
def row(i:Int)=matrix(i)
|
||||
def col(i:Int)=matrix map (_(i))
|
||||
|
||||
def *(other: Matrix[T]):Matrix[T] = new Matrix(
|
||||
Array.tabulate(rows, other.cols)((row, col) =>
|
||||
(this.row(row), other.col(col)).zipped.map(_*_) reduceLeft (_+_)
|
||||
))
|
||||
|
||||
def **(x: Int)=x match {
|
||||
case 0 => createIdentityMatrix
|
||||
case 1 => this
|
||||
case 2 => this * this
|
||||
case _ => List.fill(x)(this) reduceLeft (_*_)
|
||||
}
|
||||
|
||||
def createIdentityMatrix=new Matrix(Array.tabulate(rows, cols)((row,col) =>
|
||||
if (row == col) one else zero)
|
||||
)
|
||||
|
||||
override def toString = matrix map (_.mkString("[", ", ", "]")) mkString "\n"
|
||||
}
|
||||
|
||||
object MatrixTest {
|
||||
def main(args:Array[String])={
|
||||
val m=new Matrix[BigInt](Array(Array(3,2), Array(2,1)))
|
||||
println("-- m --\n"+m)
|
||||
|
||||
Seq(0,1,2,3,4,10,20,50) foreach {x =>
|
||||
println("-- m**"+x+" --")
|
||||
println(m**x)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue