Skip to main content

JKQ DDSIM - A quantum simulator based on decision diagrams written in C++

Project description

License: MIT toolset: JKQ PyPI CI codecov Language grade: Python Language grade: C/C++

JKQ DDSIM - A quantum circuit simulator based on decision diagrams written in C++

A tool for quantum circuit simulation by the Institute for Integrated Circuits at the Johannes Kepler University Linz and a part of the JKQ toolset.

The tool builds upon our quantum functionality representation (QFR) which in turns builds on our decision diagram (DD) package.

For more information, on our work on quantum circuit simulation please visit iic.jku.at/eda/research/quantum_simulation or, for more information on our work on noise-aware quantum circuit simulation, please visit iic.jku.at/eda/research/noise_aware_simulation.

If you have any questions, feel free to contact us via iic-quantum@jku.at or by creating an issue on GitHub.

Table of contents

Usage

This tool can be used for simulating quantum circuits provided in any of the following formats:

The format is automatically detected through the file extension.

The following additional algorithms are integrated in QFR and hence available in the simulator as well:

  • Quantum Fourier Transformation
  • Bernstein-Vazirani
  • GHZ / Entanglement
  • Grover's search (see --help for different call options)

For details on the available methods we refer to iic.jku.at/eda/research/quantum_simulation.

The simulator is based on the references listed below and can either be used as a standalone executable with command-line interface, or as a library for the incorporation in other projects.

Using the Python Bindings / Backend for Qiskit

The backend for Qiskit is available via PyPi as wheel for Linux, Windows and MacOS. Install with the following command. (We strongly recommend using a virtual environment.)

(venv) $ pip install jkq.ddsim

The following code gives an example on the usage:

from qiskit import *
from jkq import ddsim

circ = QuantumCircuit(3)
circ.h(0)
circ.cx(0, 1)
circ.cx(0, 2)

print(circ.draw(fold=-1))

provider = ddsim.JKQProvider()

backend = provider.get_backend('qasm_simulator')

job = execute(circ, backend, shots=10000)
result = job.result()

counts = result.get_counts(circ)
print(counts)

The provider currently has five backends:

  • qasm_simulator which simulates the circuit and returns the requested number of shots
  • statevector_simulator which also simulates the circuit and returns the statevector along the requested number of shots
  • hybrid_qasm_simulator which simulates the circuit in parallel using a hybrid Schrodinger-Feynman technique and returns the requested number of shots
  • hybrid_statevector_simulator which also simulates the circuit in parallel using a hybrid Schrodinger-Feynman technique and returns the statevector
  • unitary_simulator which constructs the unitary functionality of a circuit and returns the corresponding unitary matrix

A slightly more elaborate example can be found in the notebook ddsim.ipynb.

System Requirements

Building (and running) is continuously tested under Linux, MacOS, and Windows using the latest available system versions for GitHub Actions. However, the implementation should be compatible with any current C++ compiler supporting C++17 and a minimum CMake version of 3.14.

OpenMP >= 4.0 is required for building the ddsim library. Additionally, boost/program_options >= 1.50 is required for building the commandline interface for ddsim_simple and ddsim_noise_aware. The ddsim_noise_aware simulator further requires Threads::Threads.

Clone, Build, and Run

The code uses quite a few submodules, which have to be initialized. There are two ways to do this:

  1. While cloning the repository with the --recurse-submodules option to git clone. For HTTPS access: git clone --recurse-submodules https://github.com/iic-jku/ddsim/.
  2. After cloning with git submodule update --init --recursive.

Library

For building the library alone the CMake target ddsim is available. In CMake from version 3.13 you can use the following commands:

$ cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
$ cmake --build build --config Release --target ddsim

Windows users need to configure CMake by calling

$ cmake -A x64 -DCMAKE_BUILD_TYPE=Release -S . -B build
$ cmake --build build --config Release --target ddsim

instead.

The library can be used by including, for example, the QFRSimulator.hpp header file and

std::string file1 = "PATH_TO_FILE_1.EXT";
qc::QuantumComputation qc1(file1);

qc::SimpleSimulator sim(qc1);
sim.Simulate();
auto samples = sim.MeasureAllNonCollapsing(1000);
/* Use the results */

Executable Simulator

To build the executable simulator, build the ddsim_simple CMake target (which requires boost/program_options) and run the resulting executable with options according to your needs.

The standalone executable is launched in the following way, showing available options:

$ ./ddsim_simple --help
JKQ DDSIM by https://iic.jku.at/eda/ -- Allowed options:
-h [ --help ]                         produce help message
--seed arg (=0)                       seed for random number generator (default zero is possibly directly used as seed!)
--shots arg (=0)                      number of measurements (if the algorithm does not contain non-unitary gates, weak simulation is used)
--pv                                  display the state vector as list of pairs (real and imaginary parts)
--ps                                  print simulation stats (applied gates, sim. time, and maximal size of the DD)
--pm                                  print measurement results
--pcomplex                            print print additional statistics on complex numbers
--verbose                             Causes some simulators to print additional information to STDERR
--simulate_file arg                   simulate a quantum circuit given by file (detection by the file extension)
--simulate_file_hybrid arg            simulate a quantum circuit given by file (detection by the file extension) using the hybrid Schrodinger-Feynman simulator
--hybrid_mode arg                     mode used for hybrid Schrodinger-Feynman simulation (*amplitude*, dd)
--nthreads arg (=2)                   #threads used for hybrid simulation
--simulate_qft arg                    simulate Quantum Fourier Transform for given number of qubits
--simulate_ghz arg                    simulate state preparation of GHZ state for given number of qubits
--step_fidelity arg (=1)              target fidelity for each approximation run (>=1 = disable approximation)
--steps arg (=1)                      number of approximation steps
--simulate_grover arg                 simulate Grover's search for given number of qubits with random oracle
--simulate_grover_emulated arg        simulate Grover's search for given number of qubits with random oracle and emulation
--simulate_grover_oracle_emulated arg simulate Grover's search for given number of qubits with given oracle and emulation
--simulate_shor arg                   simulate Shor's algorithm factoring this number
--simulate_shor_coprime arg (=0)      coprime number to use with Shor's algorithm (zero randomly generates a coprime)
--simulate_shor_no_emulation          Force Shor simulator to do modular exponentiation instead of using emulation (you'll usually want emulation)
--simulate_fast_shor arg              simulate Shor's algorithm factoring this number with intermediate measurements
--simulate_fast_shor_coprime arg (=0) coprime number to use with Shor's algorithm (zero randomly generates a coprime)

The output is JSON-formatted as shown below (with hopefully intuitive naming).

$ cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
$ cmake --build build --config Release --target ddsim_simple
$ ./build/ddsim_simple --simulate_ghz 4 --shots 1000 --ps --pm
{
  "measurement_results": {
    "0000": 484,
    "1111": 516
  },
  "statistics": {
    "applied_gates": 4,
    "approximation_runs": "0",
    "benchmark": "entanglement_4",
    "distinct_results": 2,
    "final_fidelity": "1.000000",
    "max_nodes": 9,
    "n_qubits": 4,
    "seed": "0",
    "shots": 1000,
    "simulation_time": 0.00013726699398830533,
    "single_shots": "1",
    "step_fidelity": "1.000000"
  }
}

Quickstart Guide

Execute the following lines to get the simulator running in no time:

$ git clone --recurse-submodules https://github.com/iic-jku/ddsim/
[...]

$ cd ddsim

ddsim/ $ cmake -S . -B build
-- Build files have been written to: /.../build

ddsim/ $ cmake --build build --config Release --target ddsim_simple
[...]
[100%] Built target ddsim_simple

ddsim/ $ build/ddsim_simple --help                            
JKQ DDSIM by https://iic.jku.at/eda/ -- Allowed options:
  -h [ --help ]                         produce help message
[...]

From here on you can start simulating quantum circuits or run the integrated algorithms.

Note that you have to have the Boost program_options library installed.

Executable Noise-aware Simulator

The tool also supports noise-aware quantum circuit simulation, based on a stochastic approach. It currently supports global decoherence and gate error noise effects. A detailed summary of the simulator is presented in [2]. Note that the simulator currently does not support simulating the integrated algorithms.

Building the simulator requires boost/program_options and Threads::Threads. It can be built by executing

$ cmake -DCMAKE_BUILD_TYPE=Release -S . -B build
$ cmake --build build --config Release --target ddsim_noise_aware

The simulator provides a help function which is called in the following way:

$ ./build/ddsim_noise_aware -h
JKQ DDSIM by https://iic.jku.at/eda/ -- Allowed options:
  -h [ --help ]                         produce help message
  --seed arg (=0)                       seed for random number generator (default zero is possibly directly used as seed!)
  --pm                                  print measurements
  --ps                                  print simulation stats (applied gates, sim. time, and maximal size of the DD)
  --verbose                             Causes some simulators to print additional information to STDERR
  --simulate_file arg                   simulate a quantum circuit given by file (detection by the file extension)
  --step_fidelity arg (=1)              target fidelity for each approximation run (>=1 = disable approximation)
  --steps arg (=1)                      number of approximation steps
  --noise_effects arg (=APD)            Noise effects (A (=amplitude damping),D (=depolarization),P (=phase flip)) in the form of a character string describing the noise effects
  --noise_prob arg (=0.001)             Probability for applying noise
  --confidence arg (=0.05)              Confidence in the error bound of the stochastic simulation
  --error_bound arg (=0.1)              Error bound of the stochastic simulation
  --stoch_runs arg (=0)                 Number of stochastic runs. When the value is 0 the value is calculated using the confidence, error_bound and number of tracked properties.
  --properties arg (=-3-1000)           Comma separated list of tracked properties. Note that -1 is the fidelity and "-" can be used to specify a range.

Process finished with exit code 0

An example run, with amplitude damping, phase flip, and depolarization error (each with a probability of 0.1% whenever a gate is applied) looks like this:

$ ./build/ddsim_noise_aware --ps --noise_effects APD --stoch_runs 10000 --noise_prob 0.001 --simulate_file adder4.qasm
{
  "statistics": {
    "applied_gates": 23,
    "approximation_runs": "0.000000",
    "benchmark": "stoch_APD_adder_n4",
    "final_fidelity": "0.937343",
    "max_nodes": 10,
    "mean_stoch_run_time": "0.015796",
    "n_qubits": 4,
    "parallel_instances": "28",
    "perfect_run_time": "0.000066",
    "seed": "0",
    "simulation_time": 5.911194324493408,
    "step_fidelity": "1.000000",
    "stoch_runs": 10000,
    "stoch_wall_time": "5.911118",
    "threads": 28
  }
}

Running Tests

The repository also includes some (rudimentary) unit tests (using GoogleTest), which aim to ensure the correct behavior of the tool. They can be built and executed in the following way:

$ cmake -DBUILD_DDSIM_TESTS=ON -DCMAKE_BUILD_TYPE=Release -S . -B build
$ cmake --build build/ --config Release
$ ./build/test/ddsim_test
[...]

Frequently Asked Questions

Why is target ddsim_simple unavailable when I try to build it?

To build the commandline interfaces such as ddsim_simple you require the Boost program_options library. If it is missing, you will see the following message in the CMake generation step

-- Did not find Boost! Commandline interface will not be an available target!

Under Ubuntu you can simply install libboost-program-options-dev.

Why does generation step of CMake fail?

If you see the following error message

$ cmake -S . -B <build target directory>
CMake Error at CMakeLists.txt:27 (message):
qfr was not found.  Please init/update submodules (git submodule update --init --recursive) and try again.

Please run git submodule update --init --recursive and try again.

Why do I get a linking error at the end of the build process?

If you are using gcc for building, and you get the error message

lto1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
lto-wrapper: fatal error: /usr/bin/c++ returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make[2]: *** [test/CMakeFiles/ddsim_test.dir/build.make:166: test/ddsim_test] Error 1
make[1]: *** [CMakeFiles/Makefile2:464: test/CMakeFiles/ddsim_test.dir/all] Error 2

Configure the simulator again and add the parameter -DBINDINGS=ON

References

If you use our tool for your research, we will be thankful if you refer to it by citing the appropriate publication:

[1] A. Zulehner and R. Wille, “Advanced Simulation of Quantum Computations,” Transactions on CAD of Integrated Circuits and Systems (TCAD), vol. 38, no. 5, pp. 848–859, 2019
@article{zulehner2019advanced,
    title = {Advanced Simulation of Quantum Computations},
    author = {Zulehner, Alwin and Wille, Robert},
    journal = {Transactions on {CAD} of Integrated Circuits and Systems},
    volume = {38},
    number = {5},
    pages = {848--859},
    year = {2019},
    doi = {10.1109/TCAD.2018.2834427}
}
[2] S. Hillmich, I.L. Markov, and R. Wille, “Just Like the Real Thing: Fast Weak Simulation of Quantum Computation,” in Design Automation Conference (DAC), 2020
@inproceedings{DBLP:conf/dac/HillmichMW20,
  author    = {Stefan Hillmich and
               Igor L. Markov and
               Robert Wille},
  title     = {Just Like the Real Thing: {F}ast Weak Simulation of Quantum Computation},
  booktitle = {Design Automation Conference},
  publisher = {{IEEE}},
  year      = {2020}
}
[3] T. Grurl, R. Kueng, J. Fuß, and R. Wille, “Stochastic Quantum Circuit Simulation Using Decision Diagrams,” in Design, Automation and Test in Europe (DATE), 2021
@inproceedings{Grurl2020,
    author = {Grurl, Thomas and Kueng, Richard and Fu{\ss}, J{\"{u}}rgen and Wille, Robert},
    booktitle = {Design, Automation and Test in Europe (DATE)},
    title = {{Stochastic Quantum Circuit Simulation Using Decision Diagrams}},
    url = {http://arxiv.org/abs/2012.05620},
    year = {2021}
}
[4] S. Hillmich, R. Kueng, I. L. Markov, and R. Wille, "As Accurate as Needed, as Efficient as Possible: Approximations in DD-based Quantum Circuit Simulation," in Design, Automation and Test in Europe (DATE), 2021
@inproceedings{DBLP:conf/date/HillmichKMW21,
  author    = {Stefan Hillmich and
               Richard Kueng and
               Igor L. Markov and
               Robert Wille},
  title     = {As Accurate as Needed, as Efficient as Possible: Approximations in DD-based Quantum Circuit Simulation},
  booktitle = {Design, Automation and Test in Europe},
  year      = {2021}
}
[5] L. Burgholzer, H. Bauer, and R. Wille, "Hybrid Schrödinger-Feynman Simulation of Quantum Circuits With Decision Diagrams," arXiv:2105.07045, 2021
@misc{burgholzer2021hybrid,
      author={Lukas Burgholzer and
               Hartwig Bauer and
               Robert Wille},
      title={Hybrid Schrödinger-Feynman Simulation of Quantum Circuits With Decision Diagrams},
      year={2021},
      eprint={2105.07045},
      archivePrefix={arXiv},
      primaryClass={quant-ph}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jkq.ddsim-1.9.0.tar.gz (895.3 kB view details)

Uploaded Source

Built Distributions

jkq.ddsim-1.9.0-cp39-cp39-win_amd64.whl (433.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

jkq.ddsim-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

jkq.ddsim-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl (455.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

jkq.ddsim-1.9.0-cp38-cp38-win_amd64.whl (433.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

jkq.ddsim-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (623.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

jkq.ddsim-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl (455.5 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

jkq.ddsim-1.9.0-cp37-cp37m-win_amd64.whl (440.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

jkq.ddsim-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (628.8 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

jkq.ddsim-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl (452.0 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

jkq.ddsim-1.9.0-cp36-cp36m-win_amd64.whl (440.5 kB view details)

Uploaded CPython 3.6m Windows x86-64

jkq.ddsim-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (628.6 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

jkq.ddsim-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl (452.2 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file jkq.ddsim-1.9.0.tar.gz.

File metadata

  • Download URL: jkq.ddsim-1.9.0.tar.gz
  • Upload date:
  • Size: 895.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0.tar.gz
Algorithm Hash digest
SHA256 34e816f5265a7e73d02e860b7e03a0e3438e01e08e1466fb573e5f960307da6e
MD5 52baa9f6d5d1d882413376a65c5a64c3
BLAKE2b-256 6e92e9c8df6ff181f4b817eae2f32c4d323231d66bf028235d94273db2d8c307

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 433.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d2f8811c3e27b82ec93874a5461c307d322efb45181c020d47bb747bd2596ab4
MD5 95006ad7215754ce380cab74ce013c64
BLAKE2b-256 b154605d70c17e1ecd902649c94f78fbdda1b566ccae728f1eaa4b6adeec7967

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jkq.ddsim-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c17d98761e11f53fd39bf3aebc1171f699717e14b8ec159bbc3ccd5da61ad90
MD5 8164274c2a3c0fe43d1a098477e845b7
BLAKE2b-256 33cb88a7a09dc92cc857f4161223b681290dbd184ad625469a889fbe26707ce2

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 455.4 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f93d374ad72234bc0329516b3f4f3ff0e831738c996049c3e987a775e387376
MD5 1b6a699964f9f0403cfa91e5fecaf7d0
BLAKE2b-256 18a4ea94b85e032da20960f471bcc789806191332e5e342d7fa74f6fca2b441e

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 433.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9eb81b9237c02466d858628994036364793133cac6677b487a36830a043f36c8
MD5 5dd92896709f720eb0008605708ed3ce
BLAKE2b-256 8a8afa1497345a1e4616f8c232640ba86a50156073ad8004183a2d76375c2710

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jkq.ddsim-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7d9890725656f155027361c06bde1da53557eb0423031bb31ddc29bade826add
MD5 b9caf21fb688c9032434b59a66a454d6
BLAKE2b-256 f52e628735c554c01fac4b3097bff8cf321bc69e2e68d59e62ae16dffaf0137d

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 455.5 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d8402aefaa7fb9077449ee1837b897e40367ebb79221b2e9f8e3d420264aa386
MD5 7726a1f466bc59f375b8c68135cff226
BLAKE2b-256 26fd09db70467e256ee099451bfefadc1d9bc6f559427b2e54685e195d6fdc64

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 440.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7238b237b023ad7a1146846862732d14e1a02b1ca2ef608d726ec5c02426164d
MD5 8308451986a91dec936f15808a241a4a
BLAKE2b-256 60cb65ae0963e950189b8a96458f75017928622cd0ed38f70919a62326c85b41

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jkq.ddsim-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cba47572d935c0c6ca48936738c30ba904b271bc2a628223ae90b5a57339a10e
MD5 0158c4cd0011a84c2455d6e0cb14d711
BLAKE2b-256 fd3b781abce11e4359a8cd648ab07efcf1bc79b8554095fabc234d15d73d4310

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 452.0 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 416355c47521a3eb64bd982f649b312c49c889f4b80a06358707e646682ecf59
MD5 047dc2c50518003287d64eaf4d9c75de
BLAKE2b-256 4ff1500ccfc254da042ccbd132deeaaad793c24ce1cb36e3108067d6de78a9ec

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 440.5 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 883fb85df96622a7aa7a9028257034209ee509f6893f6a185e95e01a15f2c870
MD5 5c0d1c270a191dbdf42bc52724254f7c
BLAKE2b-256 e05af8a66be4cea28d5333f3baf0dc66ee23bbd5275ab27bfc74cf46e81c8e6f

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jkq.ddsim-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 12818dd08ffb012e7058136f7b634792282bb190054d56c36b65836998c3ffa6
MD5 4450a9032eb350eee47dab1c4c2d1777
BLAKE2b-256 2e04036592f8b75e1f0323a6bc2b73f43fd99d01263f540a68d57e39c5977ef0

See more details on using hashes here.

File details

Details for the file jkq.ddsim-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: jkq.ddsim-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 452.2 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for jkq.ddsim-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 37fd4c587e1ce983385ebaa90ff3c3b72b8f9c2751f9eee499ccb71eb4abeafb
MD5 fe234fb8e2e1a0c3e258784050b8388b
BLAKE2b-256 280e457503a6a294ebc84f3c3fea2e35c8b72bbc1b2697fba282cde2f086a9d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page