Skip to content

Commit e2e7e09

Browse files
authored
refactor(tket2-hseries): use smaller angle decompositions for CZ and CCX (#883)
Closes #882
1 parent ef0fe68 commit e2e7e09

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

tket2-hseries/src/extension/qsystem.rs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,11 @@ pub trait QSystemOpBuilder: Dataflow + UnwrapBuilder + ArrayOpBuilder {
384384
let pi_2 = pi_mul_f64(self, 0.5);
385385
let pi_minus_2 = pi_mul_f64(self, -0.5);
386386

387-
let a = self.add_phased_x(a, pi, pi)?;
388-
let [a, b] = self.build_zz_max(a, b)?;
389387
let a = self.add_phased_x(a, pi, pi_2)?;
388+
let [a, b] = self.build_zz_max(a, b)?;
389+
let a = self.add_phased_x(a, pi, pi_minus_2)?;
390390
let b = self.add_rz(b, pi_2)?;
391-
let a = self.add_rz(a, pi_minus_2)?;
391+
let a = self.add_rz(a, pi_2)?;
392392

393393
Ok([a, b])
394394
}
@@ -430,22 +430,21 @@ pub trait QSystemOpBuilder: Dataflow + UnwrapBuilder + ArrayOpBuilder {
430430
let pi_minus_3_4 = pi_mul_f64(self, -0.75);
431431
let zero = pi_mul_f64(self, 0.0);
432432

433-
let c = self.add_phased_x(c, pi, pi)?;
433+
let c = self.add_phased_x(c, pi, pi_minus_2)?;
434434
let [b, c] = self.build_zz_max(b, c)?;
435-
let c = self.add_phased_x(c, pi_4, pi_minus_2)?;
435+
let c = self.add_phased_x(c, pi_4, pi_2)?;
436436
let [a, c] = self.build_zz_max(a, c)?;
437-
let c = self.add_phased_x(c, pi_minus_4, zero)?;
437+
let c = self.add_phased_x(c, pi_4, zero)?;
438438
let [b, c] = self.build_zz_max(b, c)?;
439-
let b = self.add_phased_x(b, pi_minus_2, pi_4)?;
440-
let c = self.add_phased_x(c, pi_4, pi_2)?;
439+
let c = self.add_phased_x(c, pi_4, pi_minus_2)?;
441440
let [a, c] = self.build_zz_max(a, c)?;
442-
let [a, b] = self.build_zz_max(a, b)?;
443-
let c = self.add_phased_x(c, pi_minus_3_4, zero)?;
444-
let b = self.add_phased_x(b, pi_4, pi_4)?;
445-
let [a, b] = self.build_zz_max(a, b)?;
441+
let a = self.add_phased_x(a, pi, pi_4)?;
442+
let c = self.add_phased_x(c, pi_minus_3_4, pi)?;
443+
let [a, b] = self.add_zz_phase(a, b, pi_4)?;
444+
let c = self.add_rz(c, pi)?;
445+
let a = self.add_phased_x(a, pi, pi_minus_4)?;
446+
let b = self.add_rz(b, pi_minus_3_4)?;
446447
let a = self.add_rz(a, pi_4)?;
447-
let b = self.add_phased_x(b, pi_minus_2, pi_4)?;
448-
let b = self.add_rz(b, pi_4)?;
449448

450449
Ok([a, b, c])
451450
}

0 commit comments

Comments
 (0)