@Strilanc Strilanc released this Sep 19, 2017 · 9 commits to master since this release

Assets 3

Notable User Changes:

  • Added the dynamic phase gradient gate "Grad^t"
  • Worked around a Chrome bug causing shader compilation to fail
  • The NOT gate is now drawn as a circled plus even when uncontrolled or in the toolbox.
  • Fixed permutation gates with coherent controls not being disabled when applied to measured qubits.
  • Added a "clear circuit" button that doesn't remove custom gates
  • Location-independent gates (e.g. set-input gates and global phase gates) are now drawn as octagons
  • Set-input gates are now considered "non-local" and show a vertical dashed line
  • Removed reversed-input gates from toolbox
  • Fixed gates not being removed when middle-clicking through their resize tab
  • Change the phase gradient gate's symbol to "Grad^1/2"
  • Entering a single value when defining a custom matrix gate now produces a global phase gate
  • X/Y post-selection gates symbols now use circled characters
  • Fixed a precision-loss bug in the shader used by phase gradient gates

Notable Dev Changes:

  • Renamed the template folder to html
  • Added hidden modular-multiply-accumulate and pivot-flip gates
  • Added license headers (Quirk's copyright is now owned by Google)
  • Added utility testing methods for gates that only perform phasing
  • Test pages now include a progress indicator
  • Worked around travis-ci adding enough webgl support to run circuit tests, but not enough to pass all of them
  • ketShaderPhase now works with angles instead of complex unit values.

@Strilanc Strilanc released this Apr 30, 2017 · 74 commits to master since this release

Assets 3

Breaking changes from v1 to v2:

  • Changed spherical coordinate system to match physics conventions
    • Off is upward, On is downward
    • Z up/down, Y left/right, X toward/away
    • Theta ranges from 0 (up) to 180 (down)
    • Phi=0 points toward user, Phi=90 points rightward
  • Swapped the Off/On symbols for both the X-controls and Y-controls
    • X-On is a circled plus (matches the NOT gate, since they interchange)
    • X-Off is a circled-minus
    • Y-On is a circled cross
    • Y-Off is a circled slash
    • Serialized ids did not change; old circuits will load correctly

Notable User Changes:

  • Bug fixes:
    • Fixed reversed-input gates not reversing
    • Fixed input gates not drawing control lines into custom circuit gates
    • Fixed drawing control lines to custom identity operations
    • Fixed permute-wire drawings not fully erasing covered wires
    • Fixed bad URLs being created for custom gates with '%' or '&' in their names
  • Toolbox changes
    • Hid exp(iUt) gates
    • Hid 16'th-root gates
    • Hid shift-cycling gates
    • Moved all X/Y/Z gates to top
    • Added parametrized X/Y/Z gates
    • Added comparison gates
    • Added multiplication gates
    • Added 'set default input' gates
    • Added modular arithmetic gates and Input R
    • Added interleave gates
  • Appearance:
    • Bottom toolbox has a fourth row
    • Input gates shaded gray
    • Bit-rotate gates show a rearranged-wire symbol
    • Bit-permutating gates show the wire re-arranging even when controlled
    • Increment/Decrement gates now show "+1" and "-1" instead of "++" and "--"
    • Sample gate shows an extra decimal ket in its tooltip text
    • Added 'Shor Period Finding' example
    • Added version indicator
    • Gates no longer show a 'resizable' symbol
    • Phase gradient gates now show "e^iπ%" instead of incorrect "Z^#"

Notable Dev Changes:

  • Improved startup time
    • Added mutation-based GateBuilder and used it instead of replacement-based Gate.with methods
    • All resizable gates now give matrix functions instead of spending time making matrices
    • Avoided creating webgl context twice
    • Switched shaderFromBitPermutation from Seq to a raw loop
  • Support for multi-line gate symbols
  • Support for clickable gate buttons
  • Separated gate effect properties into 'actual' (for simulating) and 'known' (for drawing/testing)
  • Commented the Gate class
  • Extracted unit-tested methods from control-line-drawing code
  • Added 'knownPermutation' gate effect, and added tests for validating actual effect against permutation
  • Added ketInputGateShaderCode/ketInputGateArgs, unifying how gates get inputs
  • Added serialized 'param' property to gates

@Strilanc Strilanc released this Mar 5, 2017 · 191 commits to master since this release

Assets 3

Notable user changes:

  • Fixed extra digit in output-superposition column labels in odd-sized circuits
  • Removed 8-wire height limit on counting gates
  • Added more example circuits

Notable dev changes:

  • Added hidden ±=A² gates

@Strilanc Strilanc released this Mar 3, 2017 · 197 commits to master since this release

Assets 3

Notable User Changes:

  • Added an intro menu w/ tutorial video, github link, example circuits
  • Kets are now big-endian
  • Showing per-gate-column loss%/gain% due to non-unitary operations such as post-selection
  • No longer drawing 'control wire' from input gates to non-input-taking gates
  • Shift gates now drawn as a wire-rearrangement
  • Reverse and Shift gates now allowed on wires that are a mix of measured and coherent
  • Small performance boost from cached drawing of output superposition labels

Notable Dev Changes:

  • Added hidden "±1s(A)" bitcount gates
  • Added hidden "⊕A" xor gates
  • Full react-simulate-redraw integration test
  • Fixed columns not dragging downward when 16 wires visible
  • Fixed column drag error on macs
  • Lint fixes

@Strilanc Strilanc released this Oct 24, 2016 · 234 commits to master since this release

Assets 3

Notable user changes:

  • iPhone compatibility
  • Performance improvements
  • Drag columns up and down with ctrl+drag
  • 'Use controls' tutorial hint

Notable dev changes:

  • Added perf tests
  • Tests now pass on iPhone and on Android
  • 'ketShader' utility for writing gate shaders easily (order of magnitude fewer lines per shader)
  • Introduced ShaderCoder/ShaderParts to allow transparent fallback to byte textures
  • Refactored every single shader to use ShaderCoder / ketShader
  • Test circuit diagrams can now select from a gate family by adding hole characters below a gate character
  • Lots of Seq stuff turned into loops for performance reasons
  • No more caching of circuits containing dynamic gates
  • webGlTests now run once with float textures allowed and once with the byte texture fallback forced
  • All texture alloc management is now done via WglTexturePool and WglTextureTrader, creating a more imperative style
  • Texture sizes now commonly specified by the power-of-2 exponent of their area
  • Cached toolbox painting
  • Skipping unit tests that require float textures when running on a device without support for that.
  • Debugged some seriously challenging shader precision issues
Assets 3

Fixes a bug where controlled display gates were conditioning on the Z axis, even for X and Y controls.

@Strilanc Strilanc released this Sep 26, 2016 · 360 commits to master since this release

Assets 3

Notable user changes:

  • Ability to make custom rotation/matrix/circuit gates
  • Input gates
  • Arithmetic gates now use the Input gates
  • Shift gates now use up/down arrow symbols
  • Silly Ne-Gate
  • 'Clear ALL' button
  • Dynamic gates have yellow highlight in toolbox
  • Removed default density matrix displays at right of circuit

Notable dev changes:

  • Improved startup time
  • Added meta tags
  • Fixed disabled controls starting a control line
  • Added hidden 'anti-cross' (/) and |/></| gates
  • Reworked circuit inspection code to work on inner circuits within a gate in an outer circuit
  • Gates specify custom disable reason finders and texture->texture transformations
  • Optimized final amplitude display drawing (200ms -> 20ms for 16 qubit circuit)
  • Optimized redraw scheduling
  • Unit testing utilities to compare a circuit operation against a matrix
  • Serializing custom gates
  • Parsing formulas

@Strilanc Strilanc released this Jun 29, 2016 · 489 commits to master since this release

Assets 3

Notable user changes:

  • Export menu
  • Undo/redo buttons
  • A second toolbox below the circuit
  • Showing 'discard rate' when post-selection is present
  • New gates (Inverse QFT, reverse, zero, shifts [<<, >>, <<t, >>t], multiply-accumulates [c+=ab, c-=ab], X/Y-axis control/post-selection [⊕, ⊖, ⊗, |X⟩⟨X|, |+⟩⟨+|, |-⟩⟨-|])

Notable dev changes:

  • Build output is now a single html file
  • Testing that gate shaders correspond to their claimed matrices
  • Testing backwards/forwards serializer compatibility w.r.t. known gate ids
  • Support for saving an offline copy (including all code and current circuit)
  • Support for transformed controls (via pre/post shaders)
  • 'sans-serif' instead of 'helvetica'
  • Hidden tiny-Z gates ("Z^⅟₁₂₈", "Z^⅟₆₄", and "Z^⅟₃₂")
  • Fixed double-draw when grabbing things
  • Fixed not showing "Scripts disabled" in some cases
  • Some untangling in main.js

@Strilanc Strilanc released this May 31, 2016 · 538 commits to master since this release

Assets 3

Notable changes:

  • Increased maximum size of all display gates
  • Fixed amplitudes display showing NaN for initial state on some machines
  • Amplitude display now highlights which amplitude is being phased locked
  • Added shadows to gates in toolbox, so they look more tangible
  • Fixed WebGL being disabled not causing a known issue warning

@Strilanc Strilanc released this May 22, 2016 · 557 commits to master since this release

Assets 3

Notable user changes:

  • Added amplitudes display
  • Added log-scale indicators to amplitude/density displays
  • Flipped the toolbox gate order vertically, so common-er gates are closer to the circuit
  • Fixed chance gate appearing darker when covering more wires
  • Showing favicon while loading
  • Polished animation of time-varying rotation gates
  • Fixed bloch sphere tooltips inverting the sign of X and Z
  • Detection of known wontfix issues

Notable dev changes:

  • Added hidden +/- postselection gates
  • Made 16-qubit gates tractable by making the known matrix optional
  • Gates defined in various files under src/gates instead of all in one file