Partilhar via


Operação IncByLEUsingAddLE

Nome totalmente qualificado: Std.Arithmetic.IncByLEUsingAddLE

operation IncByLEUsingAddLE(forwardAdder : ((Qubit[], Qubit[], Qubit[]) => Unit is Adj), backwardAdder : ((Qubit[], Qubit[], Qubit[]) => Unit is Adj), xs : Qubit[], ys : Qubit[]) : Unit is Adj + Ctl

Resumo

Operação genérica para transformar dois adders out-place em um adder in-loco

Descrição

Esta implementação permite especificar dois adders distintos para a direção para frente e para trás. O aditivo para a frente é sempre aplicado na sua variante de corpo, enquanto o aditivo para trás é sempre aplicado na sua variante adjunta. Portanto, é possível, por exemplo, usar o adder ripple-carry out-of-place na direção inversa para não exigir portas T.

A variante controlada também é otimizada de forma que tudo, exceto os aditivos, seja controlado,

Referência

  • arXiv:2012.01624 "Quantum block lookahead adders e a espera por estados mágicos", Craig Gidney.