(self, qubits, **options)
return Qubit(*outarray)
This directly calculates the controlled mod of the second half of
            the register and puts it in the second
            This will look pretty when we get Tensor Symbolically working
This directly calculates the controlled mod of the second half of
            the register and puts it in the second
            This will look pretty when we get Tensor Symbolically working
This directly calculates the controlled mod of the second half of the register and puts it in the second This will look pretty when we get Tensor Symbolically working
def _apply_operator_Qubit(self, qubits, **options):
        """
            This directly calculates the controlled mod of the second half of
            the register and puts it in the second
            This will look pretty when we get Tensor Symbolically working
        """
        n = 1
        k = 0
        # Determine the value stored in high memory.
        for i in range(self.t):
            k = k + n*qubits[self.t + i]
            n = n*2

        # The value to go in low memory will be out.
        out = int(self.a**k % self.N)

        # Create array for new qbit-ket which will have high memory unaffected
        outarray = list(qubits.args[0][:self.t])

        # Place out in low memory
        for i in reversed(range(self.t)):
            outarray.append((out >> i) & 1)

        return Qubit(*outarray)
def _apply_operator_Qubit ( self , qubits , * * options ) : n = 1 k = 0 # Determine the value stored in high memory. for i in range ( self . t ) : k = k + n * qubits [ self . t + i ] n = n * 2 # The value to go in low memory will be out. out = int ( self . a ** k % self . N ) # Create array for new qbit-ket which will have high memory unaffected outarray = list ( qubits . args [ 0 ] [ : self . t ] ) # Place out in low memory for i in reversed ( range ( self . t ) ) : outarray . append ( ( out >> i ) & 1 ) return Qubit ( * outarray )