
import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute

def  __lowerCamelCase					( _lowercase = 3			)       ->      qiskit.result.counts.Counts:
     if isinstance(_lowercase						,     _lowercase			):
          raise TypeError('number of qubits must be a integer.'			)
     if number_of_qubits <= 0:
          raise ValueError('number of qubits must be > 0.'			)
     if math.floor(_lowercase			) != number_of_qubits:
          raise ValueError('number of qubits must be exact integer.'			)
     if number_of_qubits > 10:
          raise ValueError('number of qubits too large to simulate(>10).'			)

     UpperCamelCase						    =					QuantumRegister(_lowercase						,     'qr'			)
     UpperCamelCase						    =					ClassicalRegister(_lowercase						,     'cr'			)

     UpperCamelCase						    =					QuantumCircuit(_lowercase						,     _lowercase			)

     UpperCamelCase						    =					number_of_qubits

     for i in range(_lowercase			):
          quantum_circuit.h(number_of_qubits - i - 1			)
          counter -= 1
          for j in range(_lowercase			):
               quantum_circuit.cp(np.pi / 2 ** (counter - j)						,     _lowercase						,     _lowercase			)

     for k in range(number_of_qubits // 2			):
          quantum_circuit.swap(_lowercase						,     number_of_qubits - k - 1			)

     # measure all the qubits
     quantum_circuit.measure(_lowercase						,     _lowercase			)
     # simulate with 10000 shots
     UpperCamelCase						    =					Aer.get_backend('qasm_simulator'			)
     UpperCamelCase						    =					execute(_lowercase						,     _lowercase						,     shots=10000			)

     return job.result().get_counts(_lowercase			)


if __name__ == "__main__":
 print(
     F"Total count for quantum fourier transform state is: \
    {quantum_fourier_transform(3)}"
 )




# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

# rely on isort to merge the imports
from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


_snake_case      = {
    '''configuration_efficientnet''': [
        '''EFFICIENTNET_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''EfficientNetConfig''',
        '''EfficientNetOnnxConfig''',
    ]
}

try:
 if not is_vision_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _snake_case      = ['''EfficientNetImageProcessor''']

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 _snake_case      = [
     '''EFFICIENTNET_PRETRAINED_MODEL_ARCHIVE_LIST''',
     '''EfficientNetForImageClassification''',
     '''EfficientNetModel''',
     '''EfficientNetPreTrainedModel''',
 ]

if TYPE_CHECKING:
 from .configuration_efficientnet import (
     EFFICIENTNET_PRETRAINED_CONFIG_ARCHIVE_MAP,
     EfficientNetConfig,
     EfficientNetOnnxConfig,
 )

 try:
  if not is_vision_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .image_processing_efficientnet import EfficientNetImageProcessor

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_efficientnet import (
      EFFICIENTNET_PRETRAINED_MODEL_ARCHIVE_LIST,
      EfficientNetForImageClassification,
      EfficientNetModel,
      EfficientNetPreTrainedModel,
  )

else:
 import sys

 _snake_case      = _LazyModule(__name__, globals()['''__file__'''], _import_structure)


