Операция CheckOperationsAreEqual
Полное имя: Std.Diagnostics.CheckOperationsAreEqual
operation CheckOperationsAreEqual(nQubits : Int, actual : (Qubit[] => Unit), expected : (Qubit[] => Unit is Adj)) : Bool
Сводка
Учитывая две операции, проверяет, что они действуют одинаково для всех входных состояний.
Описание
Эта проверка реализуется с помощью isomorphism Choi-Jamiołkowski, чтобы уменьшить эту проверку до проверки двух запутанных регистров. Таким образом, эта операция требует только одного вызова для каждой проверяемой операции, но требует, чтобы было выделено в два раза больше кубитов. Эту проверку можно использовать для обеспечения того, что оптимизированная версия операции действует идентично его наивной реализации или что операция, которая действует в диапазоне не квантовых входных данных, согласуется с известными случаями.
Замечания
Эта операция требует, чтобы операция моделирования ожидаемого поведения была связана, чтобы обратный объект можно было выполнять только в целевом регистре. Формально можно указать операцию транспонирования, которая ослабляет это требование, но транспозисная операция не является в целом физически реализуемой для произвольных квантовых операций и поэтому не включается здесь как вариант.
Ввод
nQubits
Количество кубитов для передачи каждой операции.
действительный
Операция для тестирования.
ожидаемый
Операция, определяющая ожидаемое поведение для тестовой операции.
Выпуск
Значение True, если операции равны, значение false в противном случае.