Топ питань
Часова шкала
Чат
Перспективи

OpenQASM

проміжне представлення квантових інструкцій З Вікіпедії, вільної енциклопедії

Remove ads

OpenQASM (англ. Open Quantum Assembly Language — мова квантового асемблера з відкритим кодом, вимовляється open kazm[3]) — це проміжне представлення[en] для інструкцій квантового комп'ютера. Мова вперше була описана у статті, опублікованій у липні 2017 року,[3] а зразкова реалізація вихідного коду була випущена як частина набору програмного забезпечення Quantum Information Software (Qiskit) для використання з хмарною платформою квантових обчислень IBM Q Experience.[4] Мова має якості, подібні до традиційних мов опису апаратного забезпечення, таких як Verilog.

Коротка інформація Розробник, Останній реліз ...

OpenQASM визначає свою версію на початку вихідного файлу як дійсне число, як у декларації:

OPENQASM 2.0;

Версія оригінальних опублікованих реалізацій OpenQASM (наприклад, Qiskit, інфра) — це OpenQASM 3.0.

Remove ads

Приклади

Далі подано приклад вихідного коду OpenQASM з офіційної бібліотеки. Програма додає два чотирирозрядних числа.[5]

// quantum ripple-carry adder from Cuccaro et al, quant-ph/0410184
OPENQASM 2.0;
include "qelib1.inc";
gate majority a,b,c 
{ 
  cx c,b; 
  cx c,a; 
  ccx a,b,c; 
}
gate unmaj a,b,c 
{ 
  ccx a,b,c; 
  cx c,a; 
  cx a,b; 
}
qreg cin[1];
qreg a[4];
qreg b[4];
qreg cout[1];
creg ans[5];
// set input states
x a[0]; // a = 0001
x b;    // b = 1111
// add a to b, storing result in b
majority cin[0],b[0],a[0];
majority a[0],b[1],a[1];
majority a[1],b[2],a[2];
majority a[2],b[3],a[3];
cx a[3],cout[0];
unmaj a[2],b[3],a[3];
unmaj a[1],b[2],a[2];
unmaj a[0],b[1],a[1];
unmaj cin[0],b[0],a[0];
measure b[0] -> ans[0];
measure b[1] -> ans[1];
measure b[2] -> ans[2];
measure b[3] -> ans[3];
measure cout[0] -> ans[4];
Remove ads

Примітки

Джерела

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads