Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Conversation

@cgranade
Copy link
Contributor

@cgranade cgranade commented Dec 26, 2019

This PR adds new functionality to Microsoft.Quantum.Characterization for the Hadamard and SWAP tests. Each of these new operations is compatible with EstimateFrequencyA, and hence can be accelerated using emulation functionality where available.

Currently a work in progress, opening PR for initial feedback. Still to do:

  • unit tests
  • finish API documentation comments

@cgranade cgranade marked this pull request as ready for review December 27, 2019 00:50
/// # See Also
/// - Microsoft.Quantum.Characterization.EstimateRealOverlapBetweenStates
/// - Microsoft.Quantum.Characterization.EstimateOverlapBetweenStates
operation EstimateImagOverlapBetweenStates(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imag or Imaginary? Do we have a precedent for this elsewhere in the API docs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, thanks for the catch. I guess I was thinking of the usage in Microsoft.Quantum.Math.Complex, which has a Real and an Imag named item.

Copy link
Contributor

@martinquantum martinquantum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good. Just one consistency question (Imag vs Imaginary). Otherwise, this looks good to me.

@cgranade cgranade merged commit 39358f7 into master Jan 2, 2020
@cgranade cgranade deleted the cgranade/hadamard-swap-tests branch January 2, 2020 20:58
cgranade pushed a commit that referenced this pull request Jan 8, 2020
* Clarify the restriction on the number of bits for IntAsBoolArray (#171)

* Clarify the restriction on the number of bits for IntAsBoolArray

This should fix #166 by providing a more specific error message.

* Update Standard/src/Convert/Convert.qs

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Allow to have bits = 0

Looks like our tests assume that number = 0 with bits = 0 is a valid scenario; updating the change to account for that

* Package updates (#188)

* Quantum AND gates (a.k.a. CCNOT with constant target) (#186)

* Two AND gate implementations.

* Added test case.

* Formatting.

* Code formatting.

* Update Standard/src/Canon/And.qs

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Assertion for 0-target.

* Added DOI to references.

* Named application for CCNOTop.

* Rename operations.

* Add Test attribute.

* Add links to arXiv.

* Rename operations.

* Better assertion for 0-target.

* Fix bug in LowDepthAnd.

* Docs.

* Doc string convention.

* Controlled variant for `ApplyAnd`.

* Controlled AndLowDepth.

* Adjoint Controlled LowDepthAnd.

* References.

* Simplify code.

* Apply suggestions from code review

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Integrate comment.

* Removed comment ref to IncrementByIntegerPhaseLE (#189)

There appears to be no function IncrementByIntegerPhaseLE, and I guess it is covered by ApplyLEOperationOnPhaseLE.

Co-authored-by: Chris Granade <cgranade@gmail.com>

* New Hadamard and SWAP test operations. (#196)

* First work on Hadamard and SWAP test operations.

* (c) header and typo fix.

* Fixed typo with placement of phase shift.

* Put public operations above private.

* Added tests for new operations.

* Added API documentation comments.

* Newline at end of file.

* Refactor AA namespace to use Q# style guide (#197)

* Began simplifying AA interface.

* Expose traditional AA as new public operation.

* Removed rest of "AmpAmp" prefix.

* Resolve deprecation warning.

* Switching to using the new Sdk (#194)

* Minor doc fixes (#190)

* Minor doc fixes

* Minor doc cleanup

There are probably still some unstated assumptions on the algorithms.

* Add "# Description" for MultiplyByModularInteger

...because there is inline math.

Co-Authored-By: Chris Granade <cgranade@gmail.com>

* "unitary operation" instead of "unitary operator"

Co-Authored-By: Chris Granade <cgranade@gmail.com>

* Add "# Description", remove refs in "# Summary"

Co-authored-by: Chris Granade <cgranade@gmail.com>

* Fix build by updating QML projects to use SDK.

Co-authored-by: Mariia Mykhailova <michaylova@gmail.com>
Co-authored-by: bettinaheim <34236215+bettinaheim@users.noreply.github.com>
Co-authored-by: Mathias Soeken <mathias.soeken@gmail.com>
Co-authored-by: numpde <21158052+numpde@users.noreply.github.com>
cgranade pushed a commit that referenced this pull request Jan 13, 2020
* Clarify the restriction on the number of bits for IntAsBoolArray (#171)

* Clarify the restriction on the number of bits for IntAsBoolArray

This should fix #166 by providing a more specific error message.

* Update Standard/src/Convert/Convert.qs

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Allow to have bits = 0

Looks like our tests assume that number = 0 with bits = 0 is a valid scenario; updating the change to account for that

* Package updates (#188)

* Quantum AND gates (a.k.a. CCNOT with constant target) (#186)

* Two AND gate implementations.

* Added test case.

* Formatting.

* Code formatting.

* Update Standard/src/Canon/And.qs

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Assertion for 0-target.

* Added DOI to references.

* Named application for CCNOTop.

* Rename operations.

* Add Test attribute.

* Add links to arXiv.

* Rename operations.

* Better assertion for 0-target.

* Fix bug in LowDepthAnd.

* Docs.

* Doc string convention.

* Controlled variant for `ApplyAnd`.

* Controlled AndLowDepth.

* Adjoint Controlled LowDepthAnd.

* References.

* Simplify code.

* Apply suggestions from code review

Co-Authored-By: Chris Granade <chgranad@microsoft.com>

* Integrate comment.

* Removed comment ref to IncrementByIntegerPhaseLE (#189)

There appears to be no function IncrementByIntegerPhaseLE, and I guess it is covered by ApplyLEOperationOnPhaseLE.

Co-authored-by: Chris Granade <cgranade@gmail.com>

* New Hadamard and SWAP test operations. (#196)

* First work on Hadamard and SWAP test operations.

* (c) header and typo fix.

* Fixed typo with placement of phase shift.

* Put public operations above private.

* Added tests for new operations.

* Added API documentation comments.

* Newline at end of file.

* Refactor AA namespace to use Q# style guide (#197)

* Began simplifying AA interface.

* Expose traditional AA as new public operation.

* Removed rest of "AmpAmp" prefix.

* Resolve deprecation warning.

* Begin moving classifier structure creation to Q#.

* Moving example datasets into new namespace.

* Fix datasets used in layered structure demo.

* Fixed bug with cyclic entangling layer.

* Use new Hadamard test operation to simplify grad est.

* Simplify input encoder logic.

* Removed layer construction methods moved out to Q#.

* Revised name of approximate input encoder.

* Removed unused interop library.

* Update pack script for new layout.

* Addressing feedback.

Co-authored-by: Mariia Mykhailova <michaylova@gmail.com>
Co-authored-by: bettinaheim <34236215+bettinaheim@users.noreply.github.com>
Co-authored-by: Mathias Soeken <mathias.soeken@gmail.com>
Co-authored-by: numpde <21158052+numpde@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants