q-rs 0.0.2

Quantum Computation Simulator for Rust
Documentation
  • Coverage
  • 0%
    0 out of 43 items documented0 out of 33 items with examples
  • Size
  • Source code size: 23.54 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 5.8 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 24s Average build duration of successful builds.
  • all releases: 21s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • itsubaki/q-rs
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • itsubaki

q-rs

  • Quantum computation simulator for Rust

Example

Shor's factoring algorithm

let n: u32 = 15;
let a = number::coprime(n);
let t: u32 = 3; // precision bits

loop {
    let mut qsim = quantum::Q::new();
    let r0 = qsim.zeros(t);
    let r1 = qsim.zero_log2(n);

    qsim.x(&[r1[r1.len() - 1]]);
    qsim.h(&r0);
    qsim.cmodexp2(a, n, &r0, &r1);
    qsim.iqft(&r0);

    for state in qsim.state().iter() {
        let m0 = state.to_binary_chars(&r0);

        let (s, r, ok) = number::find_order(a, n, &m0);
        if !ok || number::is_odd(r) {
             continue;
        }

        let p0 = number::gcd(a.pow(r / 2) - 1, n);
        let p1 = number::gcd(a.pow(r / 2) + 1, n);
        if number::is_trivial(n, &[p0, p1]) {
            continue;
        }

        println!("{}; s/r={:>2}/{:>2}; p={}, q={}", state, s, r, p0, p1);
        return;
    }
}