Эта статья требует дополнительных ссылок для проверки . ( март 2018 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Язык квантовых вычислений ( QCL ) - один из первых реализованных языков квантового программирования . [1] Наиболее важной особенностью QCL является поддержка определяемых пользователем операторов и функций. Его синтаксис напоминает синтаксис языка программирования C, а его классические типы данных аналогичны примитивным типам данных в C. В одной программе можно комбинировать классический код и квантовый код.
Стандартная библиотека QCL предоставляет стандартные квантовые операторы, используемые в квантовых алгоритмах, таких как:
- Контролируется - не с большим количеством целевых кубитов,
- Операция Адамара на многих кубитах,
- Фаза и контролируемая фаза.
- Квантовые алгоритмы сложения, умножения и возведения в степень с двоичными константами (все модули n)
- Квантовое преобразование Фурье
Синтаксис [ править ]
- Типы данных
- Квантовый - qureg, quvoid, quconst, quscratch, qucond
- Классический - int, вещественное, сложное, логическое, строковое, вектор, матричное, тензорное
- Типы функций
- qufunct - Псевдоклассические операторы. Можно изменить только перестановку основных состояний.
- оператор - Общие унитарные операторы. Может изменять амплитуду.
- процедура - может вызывать измерение, печать и выгрузку внутри этой функции. Эта функция необратима.
- Встроенные функции
- Квантовый
- qufunct - Fanout, Swap, Пермь2, Пермь4, Пермь8, Не, CNot
- оператор - Matrix2x2, Matrix4x4, Matrix8x8, Rot, Mix, H, CPhase, SqrtNot, X, Y, Z, S, T
- процедура - измерение, сброс, сброс
- Классический
- Арифметика - sin, cos, tan, log, sqrt, ...
- Комплекс - Re, Im, конъюнктура
- Квантовый
Примеры [ править ]
Основным встроенным квантовым типом данных в QCL является qureg (квантовый регистр). Его можно интерпретировать как массив кубитов (квантовых битов).
qureg x1 [ 2 ]; // 2-кубитный квантовый регистр x1 qureg x2 [ 2 ]; // 2-кубитный квантовый регистр x2 H ( x1 ); // Операция Адамара над x1 H ( x2 [ 1 ]); // Операция Адамара над первым кубитом регистра x2
Поскольку интерпретатор qcl использует библиотеку моделирования qlib, можно наблюдать внутреннее состояние квантовой машины во время выполнения квантовой программы.
qcl> дамп: STATE: 4/32 кубита выделено, 28/32 кубита свободно0,35355 | 0> + 0,35355 | 1> + 0,35355 | 2> + 0,35355 | 3>+ 0,35355 | 8> + 0,35355 | 9> + 0,35355 | 10> + 0,35355 | 11>
Обратите внимание, что операция дампа отличается от измерения, поскольку она не влияет на состояние квантовой машины и может быть реализована только с помощью симулятора.
Как и в современных языках программирования, можно определять новые операции, которые можно использовать для управления квантовыми данными. Например:
оператор диффузный ( qureg q ) { H ( q ); // Преобразование Адамара Not ( q ); // Инвертировать q CPhase ( pi , q ); // Повернуть, если q = 1111 .. ! Не ( q ); // отменить инверсию ! H ( q ); // отменить преобразование Адамара }
определяет оператор, обратный к среднему, используемому в алгоритме Гровера . Это позволяет определять алгоритмы на более высоком уровне абстракции и расширять библиотеку функций, доступных для программистов.
Ссылки [ править ]
- ^ «QCL - язык программирования для квантовых компьютеров» . tuwien.ac.at . Проверено 20 июля 2017 .