|
339 | 339 | @qubitop2 SQRTZZ (x1 , x1⊻x2⊻z1 , x2 , x1⊻z2⊻x2 , ~iszero((x1 & z1 & ~x2) | (~x1 & x2 & z2)))
|
340 | 340 | @qubitop2 InvSQRTZZ (x1 , x1⊻x2⊻z1 , x2 , x1⊻z2⊻x2 , ~iszero((x1 &~z1 & ~x2) | (~x1 & x2 &~z2)))
|
341 | 341 |
|
| 342 | +@qubitop2 SQRTXX (z1⊻z2⊻x1, z1 , z1⊻x2⊻z2, z2 , ~iszero((~x1 & z1 &~z2) | (~z1 &~x2 & z2))) |
| 343 | +@qubitop2 InvSQRTXX (z1⊻z2⊻x1, z1 , z1⊻x2⊻z2, z2 , ~iszero(( x1 & z1 &~z2) | (~z1 & x2 & z2))) |
| 344 | + |
| 345 | +@qubitop2 SQRTYY (z1⊻x2⊻z2, x1⊻z2⊻x2, x1⊻z1⊻z2, x1⊻x2⊻z1, ~iszero((~x1 &~z1 & x2 &~z2) | ( x1 &~z1 &~x2 &~z2) | ( x1 &~z1 & x2 & z2) | ( x1 & z1 & x2 &~z2))) |
| 346 | +@qubitop2 InvSQRTYY (z1⊻x2⊻z2, x1⊻z2⊻x2, x1⊻z1⊻z2, x1⊻x2⊻z1, ~iszero(( x1 & z1 &~x2 & z2) | (~x1 & z1 & x2 & z2) | (~x1 & z1 &~x2 &~z2) | (~x1 &~z1 &~x2 & z2))) |
| 347 | + |
342 | 348 | #=
|
343 | 349 | To get the boolean formulas for the phase, it is easiest to first write down the truth table for the phase:
|
344 | 350 | for i in 0:15
|
@@ -405,6 +411,10 @@ LinearAlgebra.inv(op::sISWAP) = sInvISWAP(op.q1, op.q2)
|
405 | 411 | LinearAlgebra.inv(op::sInvISWAP) = sISWAP(op.q1, op.q2)
|
406 | 412 | LinearAlgebra.inv(op::sSQRTZZ) = sInvSQRTZZ(op.q1, op.q2)
|
407 | 413 | LinearAlgebra.inv(op::sInvSQRTZZ) = sSQRTZZ(op.q1, op.q2)
|
| 414 | +LinearAlgebra.inv(op::sSQRTXX) = sInvSQRTXX(op.q1, op.q2) |
| 415 | +LinearAlgebra.inv(op::sInvSQRTXX) = sSQRTXX(op.q1, op.q2) |
| 416 | +LinearAlgebra.inv(op::sSQRTYY) = sInvSQRTYY(op.q1, op.q2) |
| 417 | +LinearAlgebra.inv(op::sInvSQRTYY) = sSQRTYY(op.q1, op.q2) |
408 | 418 |
|
409 | 419 | ##############################
|
410 | 420 | # Functions that perform direct application of common operators without needing an operator instance
|
|
0 commit comments