Slide 17
Slide 17 text
Complex Matrix Multiplication
はい、複素行列の掛け算です。
map と zip と reduce でサクッと実装できます。
val in = Vector[Complex](
(1 + 1.i) / 4, (1 - 1.i) / 4, 1.0 / 2, 1.0 / math.sqrt(2))
val gate = Vector[Vector[Complex]](
Vector(1 , 0 , 0 , 0 ),
Vector(0 , 1 , 0 , 0 ),
Vector(0 , 0 , 0 , -1.i),
Vector(0 , 0 , 1.i , 0 ))
val out = gate.map(row =>
row.zip(in).map(pair => pair._1 * pair._2).reduce(_ + _))