






import math

import qiskit


def        _a  (     UpperCamelCase_					:				int = 1    ,   UpperCamelCase_					:				int = 1    ,   UpperCamelCase_					:				int = 1   ) ->   qiskit.result.counts.Counts:
						"""simple docstring"""







						if (
						    isinstance(UpperCamelCase_    ,   UpperCamelCase_   )
						    or isinstance(UpperCamelCase_    ,   UpperCamelCase_   )
						    or isinstance(UpperCamelCase_    ,   UpperCamelCase_   )
						):
												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(UpperCamelCase_   ) != input_a)
						    or (math.floor(UpperCamelCase_   ) != input_a)
						    or (math.floor(UpperCamelCase_   ) != 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
						lowerCAmelCase__       =						qiskit.QuantumRegister(4    ,   "qr"   )
						lowerCAmelCase__       =						qiskit.ClassicalRegister(2    ,   "cr"   )
						# list the entries
						lowerCAmelCase__       =						[input_a, input_a, carry_in]

						lowerCAmelCase__       =						qiskit.QuantumCircuit(UpperCamelCase_    ,   UpperCamelCase_   )

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

						lowerCAmelCase__       =						qiskit.Aer.get_backend("aer_simulator"   )
						lowerCAmelCase__       =						qiskit.execute(UpperCamelCase_    ,   UpperCamelCase_    ,   shots=1_000   )

						return job.result().get_counts(UpperCamelCase_   )


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














from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_							=    {'''configuration_ibert''': ['''IBERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''IBertConfig''', '''IBertOnnxConfig''']}

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	a_							=    [
	    '''IBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
	    '''IBertForMaskedLM''',
	    '''IBertForMultipleChoice''',
	    '''IBertForQuestionAnswering''',
	    '''IBertForSequenceClassification''',
	    '''IBertForTokenClassification''',
	    '''IBertModel''',
	    '''IBertPreTrainedModel''',
	]

if TYPE_CHECKING:
	from .configuration_ibert import IBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, IBertConfig, IBertOnnxConfig

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_ibert import (
		    IBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    IBertForMaskedLM,
		    IBertForMultipleChoice,
		    IBertForQuestionAnswering,
		    IBertForSequenceClassification,
		    IBertForTokenClassification,
		    IBertModel,
		    IBertPreTrainedModel,
		)

else:
	import sys

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






