

'''simple docstring'''







import math

import numpy as np
import qiskit
from qiskit import Aer, ClassicalRegister, QuantumCircuit, QuantumRegister, execute
def  UpperCAmelCase__      ( UpperCAmelCase__ = 3			)     ->     qiskit.result.counts.Counts:
       if isinstance(UpperCAmelCase__,    UpperCAmelCase__			):
              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(UpperCAmelCase__			) != 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)."""			)

       A_		   = QuantumRegister(UpperCAmelCase__,    """qr"""			)
       A_		   = ClassicalRegister(UpperCAmelCase__,    """cr"""			)

       A_		   = QuantumCircuit(UpperCAmelCase__,    UpperCAmelCase__			)

       A_		   = number_of_qubits

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

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

       # measure all the qubits
       quantum_circuit.measure(UpperCAmelCase__,    UpperCAmelCase__			)
       # simulate with 10000 shots
       A_		   = Aer.get_backend("""qasm_simulator"""			)
       A_		   = execute(UpperCAmelCase__,    UpperCAmelCase__,    shots=1_00_00			)

       return job.result().get_counts(UpperCAmelCase__			)


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






'''simple docstring'''







def  UpperCAmelCase__      ( UpperCAmelCase__			)     ->     float:

       if edge <= 0 or not isinstance(UpperCAmelCase__,    UpperCAmelCase__			):
              raise ValueError("""Length must be a positive."""			)
       return 3 * ((25 + 10 * (5 ** (1 / 2))) ** (1 / 2)) * (edge**2)
def  UpperCAmelCase__      ( UpperCAmelCase__			)     ->     float:

       if edge <= 0 or not isinstance(UpperCAmelCase__,    UpperCAmelCase__			):
              raise ValueError("""Length must be a positive."""			)
       return ((15 + (7 * (5 ** (1 / 2)))) / 4) * (edge**3)


if __name__ == "__main__":
      import doctest

      doctest.testmod()
