https://github.com/itsubaki/q-rs
Quantum Computation Simulator for Rust
https://github.com/itsubaki/q-rs
quantum-computation quantum-computing rust
Last synced: 7 months ago
JSON representation
Quantum Computation Simulator for Rust
- Host: GitHub
- URL: https://github.com/itsubaki/q-rs
- Owner: itsubaki
- License: mit
- Created: 2025-05-17T10:55:36.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-05-18T12:46:31.000Z (8 months ago)
- Last Synced: 2025-05-26T00:03:42.506Z (8 months ago)
- Topics: quantum-computation, quantum-computing, rust
- Language: Rust
- Homepage: https://crates.io/crates/q-rs
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# q-rs
* Quantum Computation Simulator for Rust
## Example
### Shor's factoring algorithm
```rust
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);
let mut found = false;
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;
}
}
```