gate
このオブジェクトは、quantum_registerを操作する量子ゲートを表します 。
C ++サンプルプログラム:quantum_computing_ex.cpp
#include <dlib / quantum_computing.h>
template <long bits> class gate : public gate_exp<gate<bits> > { /*! REQUIREMENTS ON bits 0 < bits <= 30 WHAT THIS OBJECT REPRESENTS This object represents a quantum gate that operates on bits qubits. It stores its gate matrix explicitly in a dense in-memory matrix. !*/ public: gate( ); /*! ensures - num_bits == bits - dims == 2^bits - #&ref() == this - for all valid r and c: #(*this)(r,c) == 0 !*/ gate ( const gate& g ); /*! ensures - *this is a copy of g !*/ template <typename T> explicit gate( const gate_exp<T>& g ); /*! requires - T::num_bits == num_bits ensures - num_bits == bits - dims == 2^bits - #&ref() == this - for all valid r and c: #(*this)(r,c) == g(r,c) !*/ const qc_scalar_type& operator() ( long r, long c ) const; /*! requires - 0 <= r < dims - 0 <= c < dims ensures - Let M denote the matrix for this gate, then this function returns a const reference to M(r,c) !*/ qc_scalar_type& operator() ( long r, long c ); /*! requires - 0 <= r < dims - 0 <= c < dims ensures - Let M denote the matrix for this gate, then this function returns a non-const reference to M(r,c) !*/ template <typename exp> qc_scalar_type compute_state_element ( const matrix_exp<exp>& reg, long row_idx ) const; /*! requires - reg.nr() == dims - reg.nc() == 1 - 0 <= row_idx < dims ensures - Let M represent the matrix for this gate, then this function returns rowm(M*reg, row_idx) (i.e. returns the row_idx row of what you get when you apply this gate to the given column vector in reg) !*/ static const long num_bits; static const long dims; };