




"""simple docstring"""

import math

import qiskit






def 		_snake_case	(   _snake_case				:   int = 1							,    _snake_case				:   int = 1							,    _snake_case				:   int = 1				)       ->   qiskit.result.counts.Counts:






      '''simple docstring'''


      if (
          isinstance(_snake_case							,    _snake_case				)
          or isinstance(_snake_case							,    _snake_case				)
          or isinstance(_snake_case							,    _snake_case				)
      ):
            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(_snake_case				) != input_a)
          or (math.floor(_snake_case				) != input_a)
          or (math.floor(_snake_case				) != 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(_snake_case							,    _snake_case				)

      for i in range(0							,    3				):
            if entry[i] == 2:
                  quantum_circuit.h(_snake_case				)  # for hadamard entries
            elif entry[i] == 1:
                  quantum_circuit.x(_snake_case				)  # for 1 entries
            elif entry[i] == 0:
                  quantum_circuit.i(_snake_case				)  # 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]							,    _snake_case				)  # measure the last two qbits

      _A     =  qiskit.Aer.get_backend('aer_simulator'				)
      _A     =  qiskit.execute(_snake_case							,    _snake_case							,    shots=10_00				)

      return job.result().get_counts(_snake_case				)


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 _LazyModule


a							      =     {
    '''config''': [
        '''EXTERNAL_DATA_FORMAT_SIZE_LIMIT''',
        '''OnnxConfig''',
        '''OnnxConfigWithPast''',
        '''OnnxSeq2SeqConfigWithPast''',
        '''PatchingSpec''',
    ],
    '''convert''': ['''export''', '''validate_model_outputs'''],
    '''features''': ['''FeaturesManager'''],
    '''utils''': ['''ParameterFormat''', '''compute_serialized_parameters_size'''],
}


if TYPE_CHECKING:
       from .config import (
           EXTERNAL_DATA_FORMAT_SIZE_LIMIT,
           OnnxConfig,
           OnnxConfigWithPast,
           OnnxSeqaSeqConfigWithPast,
           PatchingSpec,
       )
       from .convert import export, validate_model_outputs
       from .features import FeaturesManager
       from .utils import ParameterFormat, compute_serialized_parameters_size

else:
       import sys

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

