





'''simple docstring'''


import math

import qiskit






def  UpperCAmelCase_       (		lowercase__ = 1       ,	lowercase__ = 1       ,	lowercase__ = 1       ):


     '''simple docstring'''







     if (
         isinstance(lowercase__       ,	lowercase__       )
         or isinstance(lowercase__       ,	lowercase__       )
         or isinstance(lowercase__       ,	lowercase__       )
     ):
          raise TypeError("inputs must be integers."       )

     if (input_a < 0) or (input_a < 0) or (carry_in < 0):
          raise ValueError("inputs must be positive."       )

     if (
         (math.floor(lowercase__       ) != input_a)
         or (math.floor(lowercase__       ) != input_a)
         or (math.floor(lowercase__       ) != carry_in)
     ):
          raise ValueError("inputs must be exact integers."       )

     if (input_a > 2) or (input_a > 2) or (carry_in > 2):
          raise ValueError("inputs must be less or equal to 2."       )

     # build registers
     a_       		=qiskit.QuantumRegister(4       ,	"qr"       )
     a_       		=qiskit.ClassicalRegister(2       ,	"cr"       )
     # list the entries
     a_       		=[input_a, input_a, carry_in]

     a_       		=qiskit.QuantumCircuit(lowercase__       ,	lowercase__       )

     for i in range(0       ,	3       ):
          if entry[i] == 2:
               quantum_circuit.h(lowercase__       )  # for hadamard entries
          elif entry[i] == 1:
               quantum_circuit.x(lowercase__       )  # for 1 entries
          elif entry[i] == 0:
               quantum_circuit.i(lowercase__       )  # for 0 entries

    # build the circuit
     quantum_circuit.ccx(0       ,	1       ,	3       )  # ccx = toffoli gate
     quantum_circuit.cx(0       ,	1       )
     quantum_circuit.ccx(1       ,	2       ,	3       )
     quantum_circuit.cx(1       ,	2       )
     quantum_circuit.cx(0       ,	1       )

     quantum_circuit.measure([2, 3]       ,	lowercase__       )  # measure the last two qbits

     a_       		=qiskit.Aer.get_backend("aer_simulator"       )
     a_       		=qiskit.execute(lowercase__       ,	lowercase__       ,	shots=1_0_0_0       )

     return job.result().get_counts(lowercase__       )


if __name__ == "__main__":
  print(F"""Total sum count for state is: {quantum_full_adder(1, 1, 1)}""")







'''simple docstring'''


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


lowercase							       =			{
    '''configuration_rag''': ['''RagConfig'''],
    '''retrieval_rag''': ['''RagRetriever'''],
    '''tokenization_rag''': ['''RagTokenizer'''],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowercase							       =			[
      '''RagModel''',
      '''RagPreTrainedModel''',
      '''RagSequenceForGeneration''',
      '''RagTokenForGeneration''',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowercase							       =			[
      '''TFRagModel''',
      '''TFRagPreTrainedModel''',
      '''TFRagSequenceForGeneration''',
      '''TFRagTokenForGeneration''',
  ]


if TYPE_CHECKING:
  from .configuration_rag import RagConfig
  from .retrieval_rag import RagRetriever
  from .tokenization_rag import RagTokenizer

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_rag import RagModel, RagPreTrainedModel, RagSequenceForGeneration, RagTokenForGeneration

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_rag import (
        TFRagModel,
        TFRagPreTrainedModel,
        TFRagSequenceForGeneration,
        TFRagTokenForGeneration,
    )

else:
  import sys

  lowercase							       =			_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


