✨ Add controlled multiplication modulo N benchmark - #2409
Draft
denialhaag wants to merge 5 commits into
Draft
Conversation
denialhaag
force-pushed
the
codex/add-controlled-multiplication-modulo-n
branch
from
September 5, 2026 17:34
83fc28f to
9c5d25f
Compare
12 tasks
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Base automatically changed from
codex/add-classical-qft-adder
to
codex/add-quantum-qft-adder
September 7, 2026 15:07
An error occurred while trying to automatically change base from
codex/add-quantum-qft-adder
to
codex/add-teleportation-benchmark
September 8, 2026 13:55
denialhaag
force-pushed
the
codex/add-controlled-multiplication-modulo-n
branch
from
September 8, 2026 14:01
f0f26ef to
2e8f20e
Compare
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Assisted-by: GPT-5.6 Sol via Codex
Use the consolidated QFT utility and the family-specific Python test layout. Move execution sampling to the native MLIR test and rely on the shared registry test for jeff serialization. Keep direction- and register-aware checks for every QFT stage. Update the binding documentation and plan to match the current contracts. Assisted-by: GPT-5.6 Sol via Codex
denialhaag
force-pushed
the
codex/add-controlled-multiplication-modulo-n
branch
from
September 8, 2026 14:54
2e8f20e to
d6beeff
Compare
denialhaag
commented
Sep 9, 2026
Member
Author
There was a problem hiding this comment.
Once again, this is mostly testing the QCProgramBuilder. Please simplify the tests to something meaningful.
Comment on lines
+428
to
+446
| [[nodiscard]] ControlledMultiplicationModuloN | ||
| parseControlledMultiplicationModuloNParameters(const Json& parameters, | ||
| const std::string_view source) { | ||
| rejectUnknownKeys(parameters, {"multiplier", "modulus"}, source, | ||
| "$/parameters"); | ||
| try { | ||
| return ControlledMultiplicationModuloN({ | ||
| .multiplier = stringValue( | ||
| required(parameters, "multiplier", source, "$/parameters"), source, | ||
| "$/parameters/multiplier"), | ||
| .modulus = | ||
| stringValue(required(parameters, "modulus", source, "$/parameters"), | ||
| source, "$/parameters/modulus"), | ||
| }); | ||
| } catch (const std::invalid_argument& error) { | ||
| fail(source, "$/parameters", error.what()); | ||
| } | ||
| } | ||
|
|
Member
Author
There was a problem hiding this comment.
The three ControlledMultiplicationModuloN functions below are just above GHZ. Let's keep the order consistent.
Comment on lines
+32
to
+33
| [[nodiscard]] std::string subtract(const std::string_view minuend, | ||
| const std::string_view subtrahend) { |
Member
Author
There was a problem hiding this comment.
There must be a less manual way of doing this. Same for the helper functions below.
Member
Author
There was a problem hiding this comment.
Can you double-check whether this can be simplified?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
🤖 AI text below 🤖
Add a controlled multiplication modulo N benchmark based on Figures 5 and 6 of Beauregard's circuit for Shor's algorithm: https://arxiv.org/abs/quant-ph/0205095
Each instance prepares the control and multiplicand registers in a uniform superposition, then conditionally writes
multiplier * multiplicand mod modulusto ann + 1-qubit accumulator. The logical result preserves the control, multiplicand, and accumulator so the analytic reference checks their full correlation.Expose the benchmark through validated C++ and Python APIs, strict instance specifications and manifests, command-line discovery, and structured MLIR generation. The generator retains the modular Fourier-adder schedule, including its multi-controlled phase operations and work-qubit cleanup.
This PR is stacked on #2408.
AI notice
This PR and its contents were created with the assistance of GPT-5.6 Sol via Codex.
Checklist
I have added migration instructions to the upgrade guide (if needed).If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).