open-standards/wai/quantum-conformance/qasm3/lang/ctrl_user.ref.qasm
Transaction Science 71df7608d4
Some checks failed
wai-audit collector and player integration / does this change touch it (push) Successful in 46s
wai-quantum command line / does this change touch it (push) Successful in 37s
WAI operation catalogue / does this change touch it (push) Successful in 41s
wai-quantum for JavaScript / does this change touch it (push) Successful in 14s
wai-quantum contract / does this change touch it (push) Successful in 1m39s
wai-quantum editors / does this change touch it (push) Successful in 1m36s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 1m41s
wai-quantum resource estimation / does this change touch it (push) Successful in 1m5s
wai-quantum other formats / does this change touch it (push) Successful in 1m5s
wai-quantum OpenQASM reader / does this change touch it (push) Successful in 40s
wai-quantum pulse and dynamics / does this change touch it (push) Successful in 59s
wai-quantum for Python / does this change touch it (push) Successful in 40s
wai-quantum service / does this change touch it (push) Successful in 42s
wai-quantum error correction and mitigation / does this change touch it (push) Successful in 1m16s
wai-quantum extension points / does this change touch it (push) Successful in 1m15s
wai-quantum service / service energy · linux packages (push) Failing after 19s
wai-quantum studio and desktop / does this change touch it (push) Successful in 1m17s
wai-quantum variational and algorithm library / does this change touch it (push) Successful in 1m12s
wai-quantum verdicts and repairs / does this change touch it (push) Successful in 1m11s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 55s
WAI Studio / does this change touch it (push) Successful in 54s
wai-sink-swift native sink package / does this change touch it (push) Successful in 54s
wai-sink-android native sink library / does this change touch it (push) Successful in 49s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (push) Successful in 3m31s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 6m28s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (push) Successful in 2m42s
wai-quantum extension points / the registry and the example · linux-arm64 (push) Successful in 7m2s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m57s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 20s
wai-quantum wasmQ / does this change touch it (push) Successful in 14s
wai-audit collector and player integration / collector · linux (push) Successful in 2m0s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 11s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 8m36s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 18s
wai-quantum for JavaScript / javascript · linux (push) Successful in 5m24s
wai-quantum editors / editors · linux (push) Successful in 3m44s
wai-quantum contract / API compatibility · linux (push) Successful in 5m45s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (push) Successful in 2m32s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 3m43s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (push) Successful in 1m7s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (push) Successful in 1m13s
wai-quantum other formats / readers, writers and the set · linux (push) Successful in 6m9s
wai-quantum OpenQASM reader / reader and corpus · linux (push) Successful in 3m41s
wai-quantum resource estimation / estimation and calibration · linux, release (push) Successful in 7m15s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 8m50s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (push) Successful in 4m52s
wai-quantum for Python / python · linux (push) Successful in 4m16s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (push) Successful in 1m17s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (push) Successful in 3m4s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (push) Successful in 4m53s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (push) Successful in 1m41s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (push) Successful in 2m48s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m11s
wai-quantum service / service · linux (push) Failing after 6m47s
wai-quantum studio and desktop / studio · browser (push) Successful in 4m25s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 4m48s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 4m7s
wai-quantum extension points / the registry and the example · linux (push) Successful in 7m48s
wai-quantum command line / command line · macos (push) Successful in 2m41s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 7m5s
wai-quantum editors / editors · macos (push) Successful in 1m28s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 10m37s
wai-quantum pulse and dynamics / the same bits · macos (push) Successful in 1m4s
wai-quantum for Python / python · macos (push) Successful in 2m40s
wai-quantum service / service · macos (push) Successful in 6m20s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 3m51s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Failing after 2m2s
WAI Studio / Studio in WebKit · linux (push) Successful in 23m30s
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (push) Failing after 38s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (push) Successful in 3m42s
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (push) Successful in 4m27s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 8m18s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 8m47s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 10m34s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 10m14s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 50m35s
wai-quantum command line / command line · linux (push) Failing after 1h0m9s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 19m9s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (push) Successful in 1m49s
wai-quantum: the OpenQASM reader reads eight constructs as OpenQASM 3.1 defines them, and the feature matrix says what each path does
Held to the 3.1 specification construct by construct, the reader read these
to another program without a word; each now reads as the specification
says, with a test that failed first (qasm::spec_tests):

- ctrl @ U(θ, φ, λ): OpenQASM 3's U is e^{iθ/2} times OpenQASM 2's
  matrix (gates.rst), a phase a control sees. It read as controlled
  OpenQASM 2 U, a phase θ/2 short on the control; it is now
  cu(θ, φ, λ, θ/2). ctrl @ u3 and ctrl @ u2 carry e^{−i(φ+λ)/2}
  (standard_library.rst). stdgates.inc's own definitions written into a
  program are now its gates under ctrl @ (its x so written read as cx then
  sdg on the control, overlap 0.71). Uncontrolled, nothing changes.
- A gate a program defines under a built-in name ran the built-in gate and
  dropped the definition; the program's own gate now runs, noted with the
  new warning Q213, unless it is the built-in gate exactly (global phase
  included; up to one in OpenQASM 2), when the built-in gate stands in as
  before. `gate U` and `gate gphase` are refused (Q106).
- A mutable array argument given a slice or a row lost the subroutine's
  writes (subroutines.rst's own example); they are written back. A write
  to a readonly array argument was read; it is refused (new code Q131).
- angle[n] / angle[n] was a float ratio; it is the uint[n] quotient of
  their bits. A float cast to angle[n] exactly halfway rounded away from
  zero; it rounds to even.
- pow(r) @ of a gate written in U with global phases that cancel (the
  libraries' x and rx) was refused; it is the gate's principal power.

The conformance case qasm3/lang/ctrl_user.qasm held ctrl @ U(0.1, 0.2, 0.3)
to cu(0.1, 0.2, 0.3, 0), the first of these; its reference is now
cu(..., 0.05). The jeff reader writes jeff's controlled u, OpenQASM 2's U,
as cu(θ, φ, λ, 0). lang_tests' controlled-U and user-gate cases are held to
the specification's U. docs/qasm-feature-matrix.md gives every construct
with what the reader and the bit-exact path each do, the eight above
before and after, and what is refused and why; the CLI's committed docs
follow. wai-quantum-lang.yml requires the new tests by name.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 14:23:24 -05:00

8 lines
212 B
Text

OPENQASM 3.1;
qubit[2] q;
h q[0];
ch q[0], q[1];
cp(pi / 4) q[0], q[1];
crz(0.7) q[1], q[0];
// ctrl @ U(θ, φ, λ) is cu(θ, φ, λ, θ/2): OpenQASM 3's U carries e^{iθ/2}.
cu(0.1, 0.2, 0.3, 0.05) q[0], q[1];