classiq 0.38.0__py3-none-any.whl → 0.65.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. classiq/__init__.py +47 -32
  2. classiq/_analyzer_extras/_ipywidgets_async_extension.py +2 -1
  3. classiq/_internals/api_wrapper.py +235 -97
  4. classiq/_internals/async_utils.py +1 -3
  5. classiq/_internals/authentication/auth0.py +26 -10
  6. classiq/_internals/authentication/authentication.py +11 -0
  7. classiq/_internals/authentication/device.py +10 -5
  8. classiq/_internals/authentication/password_manager.py +18 -6
  9. classiq/_internals/authentication/token_manager.py +10 -5
  10. classiq/_internals/client.py +94 -33
  11. classiq/_internals/config.py +3 -4
  12. classiq/_internals/host_checker.py +38 -15
  13. classiq/_internals/jobs.py +60 -57
  14. classiq/_internals/type_validation.py +9 -9
  15. classiq/analyzer/__init__.py +1 -3
  16. classiq/analyzer/analyzer.py +24 -19
  17. classiq/analyzer/analyzer_utilities.py +10 -10
  18. classiq/analyzer/rb.py +15 -15
  19. classiq/analyzer/show_interactive_hack.py +27 -4
  20. classiq/analyzer/url_utils.py +2 -3
  21. classiq/applications/__init__.py +3 -12
  22. classiq/applications/chemistry/__init__.py +14 -10
  23. classiq/applications/chemistry/ansatz_parameters.py +4 -4
  24. classiq/{applications_model_constructors → applications/chemistry}/chemistry_model_constructor.py +165 -158
  25. classiq/applications/chemistry/ground_state_problem.py +1 -1
  26. classiq/{applications_model_constructors → applications}/combinatorial_helpers/allowed_constraints.py +4 -1
  27. classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/arithmetic_expression.py +1 -1
  28. classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/isolation.py +1 -1
  29. classiq/{applications_model_constructors → applications}/combinatorial_helpers/combinatorial_problem_utils.py +51 -15
  30. classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_mapping.py +12 -12
  31. classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_utils.py +8 -6
  32. classiq/{applications_model_constructors → applications}/combinatorial_helpers/memory.py +7 -11
  33. classiq/{applications_model_constructors → applications}/combinatorial_helpers/optimization_model.py +67 -40
  34. classiq/applications/combinatorial_helpers/pauli_helpers/pauli_utils.py +46 -0
  35. classiq/applications/combinatorial_helpers/pyomo_utils.py +447 -0
  36. classiq/{applications_model_constructors → applications}/combinatorial_helpers/sympy_utils.py +2 -2
  37. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/encoding.py +15 -20
  38. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/fixed_variables.py +14 -15
  39. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/ising_converter.py +11 -15
  40. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty.py +1 -2
  41. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty_support.py +3 -7
  42. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/sign_seperation.py +2 -3
  43. classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/slack_variables.py +5 -8
  44. classiq/applications/combinatorial_optimization/__init__.py +20 -6
  45. classiq/applications/combinatorial_optimization/combinatorial_optimization_config.py +2 -2
  46. classiq/{applications_model_constructors → applications/combinatorial_optimization}/combinatorial_optimization_model_constructor.py +35 -33
  47. classiq/applications/combinatorial_optimization/combinatorial_problem.py +229 -0
  48. classiq/applications/combinatorial_optimization/examples/__init__.py +1 -3
  49. classiq/applications/finance/__init__.py +4 -5
  50. classiq/{applications_model_constructors → applications/finance}/finance_model_constructor.py +48 -42
  51. classiq/applications/grover/__init__.py +9 -0
  52. classiq/{applications_model_constructors → applications/grover}/grover_model_constructor.py +52 -51
  53. classiq/applications/hamiltonian/pauli_decomposition.py +113 -0
  54. classiq/applications/libraries/qmci_library.py +22 -0
  55. classiq/applications/qnn/__init__.py +2 -4
  56. classiq/applications/qnn/circuit_utils.py +6 -6
  57. classiq/applications/qnn/datasets/__init__.py +9 -11
  58. classiq/applications/qnn/datasets/dataset_base_classes.py +7 -5
  59. classiq/applications/qnn/datasets/dataset_not.py +2 -1
  60. classiq/applications/qnn/datasets/dataset_parity.py +2 -2
  61. classiq/applications/qnn/gradients/quantum_gradient.py +1 -1
  62. classiq/applications/qnn/gradients/simple_quantum_gradient.py +2 -1
  63. classiq/applications/qnn/qlayer.py +30 -10
  64. classiq/applications/qnn/torch_utils.py +4 -3
  65. classiq/applications/qnn/types.py +5 -5
  66. classiq/applications/qsvm/__init__.py +6 -4
  67. classiq/applications/qsvm/qsvm.py +3 -6
  68. classiq/applications/qsvm/qsvm_data_generation.py +3 -3
  69. classiq/{applications_model_constructors → applications/qsvm}/qsvm_model_constructor.py +30 -28
  70. classiq/execution/__init__.py +8 -3
  71. classiq/execution/all_hardware_devices.py +11 -0
  72. classiq/execution/execution_session.py +400 -0
  73. classiq/execution/iqcc.py +63 -0
  74. classiq/execution/jobs.py +197 -25
  75. classiq/execution/qnn.py +79 -0
  76. classiq/executor.py +20 -115
  77. classiq/interface/_version.py +1 -1
  78. classiq/interface/analyzer/analysis_params.py +43 -13
  79. classiq/interface/analyzer/cytoscape_graph.py +15 -9
  80. classiq/interface/analyzer/result.py +28 -32
  81. classiq/interface/applications/qsvm.py +20 -29
  82. classiq/interface/ast_node.py +16 -0
  83. classiq/interface/backend/backend_preferences.py +390 -121
  84. classiq/interface/backend/ionq/ionq_quantum_program.py +15 -23
  85. classiq/interface/backend/pydantic_backend.py +25 -22
  86. classiq/interface/backend/quantum_backend_providers.py +69 -16
  87. classiq/interface/chemistry/fermionic_operator.py +30 -21
  88. classiq/interface/chemistry/ground_state_problem.py +28 -25
  89. classiq/interface/chemistry/molecule.py +14 -10
  90. classiq/interface/chemistry/operator.py +64 -231
  91. classiq/interface/combinatorial_optimization/encoding_types.py +1 -1
  92. classiq/interface/combinatorial_optimization/examples/ascending_sequence.py +1 -3
  93. classiq/interface/combinatorial_optimization/examples/integer_portfolio_optimization.py +2 -4
  94. classiq/interface/combinatorial_optimization/examples/knapsack.py +3 -3
  95. classiq/interface/combinatorial_optimization/examples/mht.py +10 -6
  96. classiq/interface/combinatorial_optimization/examples/portfolio_variations.py +2 -2
  97. classiq/interface/combinatorial_optimization/examples/set_cover.py +1 -2
  98. classiq/interface/combinatorial_optimization/mht_qaoa_input.py +8 -9
  99. classiq/interface/combinatorial_optimization/optimization_problem.py +2 -2
  100. classiq/interface/combinatorial_optimization/result.py +1 -3
  101. classiq/interface/combinatorial_optimization/solver_types.py +1 -1
  102. classiq/interface/debug_info/debug_info.py +86 -0
  103. classiq/{exceptions.py → interface/exceptions.py} +37 -9
  104. classiq/interface/execution/iqcc.py +19 -0
  105. classiq/interface/execution/jobs.py +15 -12
  106. classiq/interface/execution/primitives.py +18 -0
  107. classiq/interface/executor/constants.py +1 -0
  108. classiq/interface/executor/execution_preferences.py +26 -114
  109. classiq/interface/executor/execution_request.py +24 -46
  110. classiq/interface/executor/execution_result.py +30 -8
  111. classiq/interface/executor/iqae_result.py +4 -6
  112. classiq/interface/executor/optimizer_preferences.py +17 -14
  113. classiq/interface/executor/quantum_code.py +28 -24
  114. classiq/interface/executor/quantum_instruction_set.py +2 -2
  115. classiq/interface/executor/register_initialization.py +11 -14
  116. classiq/interface/executor/result.py +83 -56
  117. classiq/interface/executor/vqe_result.py +10 -10
  118. classiq/interface/finance/function_input.py +35 -25
  119. classiq/interface/finance/gaussian_model_input.py +5 -5
  120. classiq/interface/finance/log_normal_model_input.py +4 -4
  121. classiq/interface/finance/model_input.py +4 -4
  122. classiq/interface/generator/adjacency.py +1 -3
  123. classiq/interface/generator/amplitude_loading.py +22 -12
  124. classiq/interface/generator/ansatz_library.py +5 -5
  125. classiq/interface/generator/application_apis/arithmetic_declarations.py +8 -5
  126. classiq/interface/generator/application_apis/chemistry_declarations.py +27 -187
  127. classiq/interface/generator/application_apis/combinatorial_optimization_declarations.py +18 -21
  128. classiq/interface/generator/application_apis/entangler_declarations.py +11 -6
  129. classiq/interface/generator/application_apis/finance_declarations.py +48 -69
  130. classiq/interface/generator/application_apis/qsvm_declarations.py +0 -70
  131. classiq/interface/generator/arith/argument_utils.py +46 -5
  132. classiq/interface/generator/arith/arithmetic.py +35 -16
  133. classiq/interface/generator/arith/arithmetic_arg_type_validator.py +6 -7
  134. classiq/interface/generator/arith/arithmetic_expression_abc.py +66 -25
  135. classiq/interface/generator/arith/arithmetic_expression_parser.py +11 -11
  136. classiq/interface/generator/arith/arithmetic_expression_validator.py +47 -43
  137. classiq/interface/generator/arith/arithmetic_operations.py +14 -6
  138. classiq/interface/generator/arith/arithmetic_param_getters.py +7 -8
  139. classiq/interface/generator/arith/arithmetic_result_builder.py +21 -17
  140. classiq/interface/generator/arith/ast_node_rewrite.py +3 -2
  141. classiq/interface/generator/arith/binary_ops.py +218 -130
  142. classiq/interface/generator/arith/endianness.py +1 -1
  143. classiq/interface/generator/arith/extremum_operations.py +96 -25
  144. classiq/interface/generator/arith/logical_ops.py +14 -12
  145. classiq/interface/generator/arith/number_utils.py +12 -6
  146. classiq/interface/generator/arith/register_user_input.py +60 -37
  147. classiq/interface/generator/arith/unary_ops.py +49 -29
  148. classiq/interface/generator/arith/uncomputation_methods.py +1 -1
  149. classiq/interface/generator/builtin_api_builder.py +2 -9
  150. classiq/interface/generator/chemistry_function_params.py +3 -3
  151. classiq/interface/generator/circuit_code/circuit_code.py +7 -7
  152. classiq/interface/generator/circuit_code/types_and_constants.py +4 -7
  153. classiq/interface/generator/commuting_pauli_exponentiation.py +7 -7
  154. classiq/interface/generator/compiler_keywords.py +5 -1
  155. classiq/interface/generator/complex_type.py +13 -18
  156. classiq/interface/generator/constant.py +3 -4
  157. classiq/interface/generator/control_state.py +34 -29
  158. classiq/interface/generator/copy.py +47 -0
  159. classiq/interface/generator/custom_ansatz.py +2 -5
  160. classiq/interface/generator/distance.py +3 -5
  161. classiq/interface/generator/excitations.py +3 -2
  162. classiq/interface/generator/expressions/atomic_expression_functions.py +21 -5
  163. classiq/interface/generator/expressions/enums/__init__.py +0 -10
  164. classiq/interface/generator/expressions/enums/finance_functions.py +12 -22
  165. classiq/interface/generator/expressions/evaluated_expression.py +5 -5
  166. classiq/interface/generator/expressions/expression.py +26 -14
  167. classiq/interface/generator/expressions/expression_constants.py +9 -3
  168. classiq/interface/generator/expressions/non_symbolic_expr.py +119 -0
  169. classiq/interface/generator/expressions/qmod_qarray_proxy.py +99 -0
  170. classiq/interface/generator/expressions/qmod_qscalar_proxy.py +34 -8
  171. classiq/interface/generator/expressions/qmod_qstruct_proxy.py +36 -0
  172. classiq/interface/generator/expressions/qmod_sized_proxy.py +30 -2
  173. classiq/interface/generator/expressions/qmod_struct_instance.py +14 -2
  174. classiq/interface/generator/expressions/sympy_supported_expressions.py +19 -11
  175. classiq/interface/generator/finance.py +2 -2
  176. classiq/interface/generator/function_param_library.py +6 -6
  177. classiq/interface/generator/function_param_list_without_self_reference.py +2 -10
  178. classiq/interface/generator/function_params.py +36 -64
  179. classiq/interface/generator/functions/__init__.py +0 -22
  180. classiq/interface/generator/functions/builtins/internal_operators.py +16 -0
  181. classiq/interface/generator/functions/classical_function_declaration.py +18 -9
  182. classiq/interface/generator/functions/classical_type.py +47 -166
  183. classiq/interface/generator/functions/concrete_types.py +55 -0
  184. classiq/interface/generator/functions/function_declaration.py +13 -14
  185. classiq/interface/generator/functions/port_declaration.py +1 -13
  186. classiq/interface/generator/functions/qmod_python_interface.py +2 -1
  187. classiq/interface/generator/functions/type_name.py +90 -0
  188. classiq/interface/generator/generated_circuit_data.py +153 -20
  189. classiq/interface/generator/grover_diffuser.py +32 -25
  190. classiq/interface/generator/grover_operator.py +34 -25
  191. classiq/interface/generator/hamiltonian_evolution/exponentiation.py +4 -6
  192. classiq/interface/generator/hamiltonian_evolution/qdrift.py +4 -4
  193. classiq/interface/generator/hamiltonian_evolution/suzuki_trotter.py +9 -9
  194. classiq/interface/generator/hardware/hardware_data.py +72 -34
  195. classiq/interface/generator/hardware_efficient_ansatz.py +20 -16
  196. classiq/interface/generator/hartree_fock.py +13 -5
  197. classiq/interface/generator/identity.py +10 -6
  198. classiq/interface/generator/linear_pauli_rotations.py +32 -20
  199. classiq/interface/generator/mcmt_method.py +1 -1
  200. classiq/interface/generator/mcu.py +17 -15
  201. classiq/interface/generator/mcx.py +24 -17
  202. classiq/interface/generator/model/__init__.py +2 -5
  203. classiq/interface/generator/model/constraints.py +26 -8
  204. classiq/interface/generator/model/model.py +27 -190
  205. classiq/interface/generator/model/preferences/preferences.py +115 -41
  206. classiq/{quantum_register.py → interface/generator/model/quantum_register.py} +14 -17
  207. classiq/interface/generator/oracles/arithmetic_oracle.py +2 -4
  208. classiq/interface/generator/oracles/custom_oracle.py +15 -13
  209. classiq/interface/generator/oracles/oracle_abc.py +7 -7
  210. classiq/interface/generator/partitioned_register.py +7 -7
  211. classiq/interface/generator/piecewise_linear_amplitude_loading.py +45 -29
  212. classiq/interface/generator/preferences/optimization.py +1 -2
  213. classiq/interface/generator/qpe.py +41 -30
  214. classiq/interface/generator/qsvm.py +9 -10
  215. classiq/interface/generator/quantum_function_call.py +88 -73
  216. classiq/interface/generator/quantum_program.py +41 -24
  217. classiq/interface/generator/range_types.py +11 -12
  218. classiq/interface/generator/register_role.py +18 -6
  219. classiq/interface/generator/slice_parsing_utils.py +5 -5
  220. classiq/interface/generator/standard_gates/controlled_standard_gates.py +30 -39
  221. classiq/interface/generator/standard_gates/standard_angle_metaclass.py +2 -6
  222. classiq/interface/generator/standard_gates/standard_gates.py +3 -3
  223. classiq/interface/generator/standard_gates/u_gate.py +7 -10
  224. classiq/interface/generator/state_preparation/bell_state_preparation.py +3 -3
  225. classiq/interface/generator/state_preparation/computational_basis_state_preparation.py +2 -1
  226. classiq/interface/generator/state_preparation/distributions.py +16 -15
  227. classiq/interface/generator/state_preparation/metrics.py +4 -7
  228. classiq/interface/generator/state_preparation/state_preparation.py +25 -20
  229. classiq/interface/generator/synthesis_metadata/synthesis_duration.py +0 -4
  230. classiq/interface/generator/synthesis_metadata/synthesis_execution_data.py +20 -6
  231. classiq/interface/generator/transpiler_basis_gates.py +7 -3
  232. classiq/interface/generator/types/builtin_enum_declarations.py +178 -0
  233. classiq/interface/generator/types/compilation_metadata.py +6 -0
  234. classiq/interface/generator/types/enum_declaration.py +54 -0
  235. classiq/interface/generator/types/qstruct_declaration.py +18 -0
  236. classiq/interface/generator/types/struct_declaration.py +7 -11
  237. classiq/interface/generator/ucc.py +5 -4
  238. classiq/interface/generator/unitary_gate.py +5 -5
  239. classiq/interface/generator/user_defined_function_params.py +4 -1
  240. classiq/interface/generator/validations/flow_graph.py +7 -7
  241. classiq/interface/generator/validations/validator_functions.py +4 -4
  242. classiq/interface/generator/visitor.py +23 -16
  243. classiq/interface/hardware.py +29 -8
  244. classiq/interface/helpers/classproperty.py +8 -0
  245. classiq/interface/helpers/custom_encoders.py +2 -2
  246. classiq/interface/helpers/custom_pydantic_types.py +40 -50
  247. classiq/interface/helpers/datastructures.py +26 -0
  248. classiq/interface/helpers/hashable_mixin.py +3 -2
  249. classiq/interface/helpers/hashable_pydantic_base_model.py +2 -1
  250. classiq/interface/helpers/pydantic_model_helpers.py +7 -5
  251. classiq/interface/helpers/validation_helpers.py +3 -20
  252. classiq/interface/helpers/versioned_model.py +1 -4
  253. classiq/interface/ide/ide_data.py +16 -20
  254. classiq/interface/ide/visual_model.py +130 -0
  255. classiq/interface/interface_version.py +1 -0
  256. classiq/interface/jobs.py +29 -69
  257. classiq/interface/model/allocate.py +16 -0
  258. classiq/interface/model/bind_operation.py +32 -9
  259. classiq/interface/model/classical_if.py +15 -0
  260. classiq/interface/model/classical_parameter_declaration.py +33 -3
  261. classiq/interface/model/control.py +45 -0
  262. classiq/interface/model/handle_binding.py +298 -20
  263. classiq/interface/model/inplace_binary_operation.py +29 -24
  264. classiq/interface/model/invert.py +12 -0
  265. classiq/interface/model/model.py +69 -61
  266. classiq/interface/model/native_function_definition.py +17 -20
  267. classiq/interface/model/parameter.py +13 -0
  268. classiq/interface/model/phase_operation.py +11 -0
  269. classiq/interface/model/port_declaration.py +27 -9
  270. classiq/interface/model/power.py +14 -0
  271. classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +30 -18
  272. classiq/interface/model/quantum_expressions/arithmetic_operation.py +51 -14
  273. classiq/interface/model/quantum_expressions/quantum_expression.py +12 -35
  274. classiq/interface/model/quantum_function_call.py +141 -343
  275. classiq/interface/model/quantum_function_declaration.py +190 -157
  276. classiq/interface/model/quantum_lambda_function.py +33 -32
  277. classiq/interface/model/quantum_statement.py +71 -12
  278. classiq/interface/model/quantum_type.py +177 -40
  279. classiq/interface/model/quantum_variable_declaration.py +3 -25
  280. classiq/interface/model/repeat.py +15 -0
  281. classiq/interface/model/statement_block.py +40 -14
  282. classiq/interface/model/validation_handle.py +13 -6
  283. classiq/interface/model/variable_declaration_statement.py +3 -1
  284. classiq/interface/model/within_apply_operation.py +7 -5
  285. classiq/interface/server/global_versions.py +6 -7
  286. classiq/interface/server/routes.py +17 -21
  287. classiq/interface/source_reference.py +59 -0
  288. classiq/model_expansions/atomic_expression_functions_defs.py +253 -0
  289. classiq/model_expansions/capturing/__init__.py +0 -0
  290. classiq/model_expansions/capturing/captured_vars.py +435 -0
  291. classiq/model_expansions/capturing/mangling_utils.py +56 -0
  292. classiq/model_expansions/closure.py +171 -0
  293. classiq/model_expansions/debug_flag.py +3 -0
  294. classiq/model_expansions/evaluators/__init__.py +0 -0
  295. classiq/model_expansions/evaluators/arg_type_match.py +158 -0
  296. classiq/model_expansions/evaluators/argument_types.py +42 -0
  297. classiq/model_expansions/evaluators/classical_expression.py +36 -0
  298. classiq/model_expansions/evaluators/control.py +144 -0
  299. classiq/model_expansions/evaluators/parameter_types.py +226 -0
  300. classiq/model_expansions/evaluators/quantum_type_utils.py +239 -0
  301. classiq/model_expansions/evaluators/type_type_match.py +90 -0
  302. classiq/model_expansions/expression_evaluator.py +135 -0
  303. classiq/model_expansions/expression_renamer.py +76 -0
  304. classiq/model_expansions/function_builder.py +247 -0
  305. classiq/model_expansions/generative_functions.py +158 -0
  306. classiq/model_expansions/interpreters/__init__.py +0 -0
  307. classiq/model_expansions/interpreters/base_interpreter.py +263 -0
  308. classiq/model_expansions/interpreters/frontend_generative_interpreter.py +28 -0
  309. classiq/model_expansions/interpreters/generative_interpreter.py +249 -0
  310. classiq/model_expansions/model_tables.py +18 -0
  311. classiq/model_expansions/quantum_operations/__init__.py +9 -0
  312. classiq/model_expansions/quantum_operations/bind.py +60 -0
  313. classiq/model_expansions/quantum_operations/call_emitter.py +266 -0
  314. classiq/model_expansions/quantum_operations/classicalif.py +53 -0
  315. classiq/model_expansions/quantum_operations/declarative_call_emitter.py +87 -0
  316. classiq/model_expansions/quantum_operations/emitter.py +181 -0
  317. classiq/model_expansions/quantum_operations/quantum_function_call.py +33 -0
  318. classiq/model_expansions/quantum_operations/repeat.py +56 -0
  319. classiq/model_expansions/quantum_operations/shallow_emitter.py +180 -0
  320. classiq/model_expansions/quantum_operations/variable_decleration.py +28 -0
  321. classiq/model_expansions/scope.py +240 -0
  322. classiq/model_expansions/scope_initialization.py +150 -0
  323. classiq/model_expansions/sympy_conversion/__init__.py +0 -0
  324. classiq/model_expansions/sympy_conversion/arithmetics.py +49 -0
  325. classiq/model_expansions/sympy_conversion/expression_to_sympy.py +179 -0
  326. classiq/model_expansions/sympy_conversion/sympy_to_python.py +123 -0
  327. classiq/model_expansions/transformers/__init__.py +0 -0
  328. classiq/model_expansions/transformers/ast_renamer.py +26 -0
  329. classiq/model_expansions/transformers/var_splitter.py +299 -0
  330. classiq/model_expansions/utils/__init__.py +0 -0
  331. classiq/model_expansions/utils/counted_name_allocator.py +11 -0
  332. classiq/model_expansions/utils/handles_collector.py +33 -0
  333. classiq/model_expansions/visitors/__init__.py +0 -0
  334. classiq/model_expansions/visitors/boolean_expression_transformers.py +214 -0
  335. classiq/model_expansions/visitors/variable_references.py +144 -0
  336. classiq/open_library/__init__.py +4 -0
  337. classiq/open_library/functions/__init__.py +130 -0
  338. classiq/open_library/functions/amplitude_estimation.py +30 -0
  339. classiq/open_library/functions/discrete_sine_cosine_transform.py +181 -0
  340. classiq/open_library/functions/grover.py +157 -0
  341. classiq/open_library/functions/hea.py +115 -0
  342. classiq/open_library/functions/linear_pauli_rotation.py +82 -0
  343. classiq/open_library/functions/modular_exponentiation.py +201 -0
  344. classiq/open_library/functions/qaoa_penalty.py +117 -0
  345. classiq/open_library/functions/qft_functions.py +54 -0
  346. classiq/open_library/functions/qpe.py +46 -0
  347. classiq/open_library/functions/qsvt.py +331 -0
  348. classiq/open_library/functions/state_preparation.py +301 -0
  349. classiq/open_library/functions/swap_test.py +27 -0
  350. classiq/open_library/functions/utility_functions.py +81 -0
  351. classiq/open_library/functions/variational.py +52 -0
  352. classiq/qmod/__init__.py +10 -10
  353. classiq/qmod/builtins/__init__.py +19 -2
  354. classiq/qmod/builtins/classical_execution_primitives.py +36 -14
  355. classiq/qmod/builtins/classical_functions.py +39 -43
  356. classiq/qmod/builtins/constants.py +10 -0
  357. classiq/qmod/builtins/enums.py +208 -0
  358. classiq/qmod/builtins/functions/__init__.py +137 -0
  359. classiq/qmod/builtins/functions/allocation.py +150 -0
  360. classiq/qmod/builtins/functions/arithmetic.py +55 -0
  361. classiq/qmod/builtins/functions/benchmarking.py +8 -0
  362. classiq/qmod/builtins/functions/chemistry.py +91 -0
  363. classiq/qmod/builtins/functions/exponentiation.py +105 -0
  364. classiq/qmod/builtins/functions/finance.py +34 -0
  365. classiq/qmod/builtins/functions/operators.py +16 -0
  366. classiq/qmod/builtins/functions/qsvm.py +24 -0
  367. classiq/qmod/builtins/functions/standard_gates.py +651 -0
  368. classiq/qmod/builtins/operations.py +373 -40
  369. classiq/qmod/builtins/structs.py +103 -80
  370. classiq/qmod/cfunc.py +2 -2
  371. classiq/qmod/classical_function.py +4 -8
  372. classiq/qmod/cparam.py +64 -0
  373. classiq/qmod/create_model_function.py +56 -0
  374. classiq/qmod/declaration_inferrer.py +143 -101
  375. classiq/qmod/expression_query.py +20 -4
  376. classiq/qmod/generative.py +42 -0
  377. classiq/qmod/model_state_container.py +18 -6
  378. classiq/qmod/native/__init__.py +7 -0
  379. classiq/qmod/native/expression_to_qmod.py +16 -11
  380. classiq/qmod/native/pretty_printer.py +187 -97
  381. classiq/qmod/pretty_print/__init__.py +7 -0
  382. classiq/qmod/pretty_print/expression_to_python.py +222 -0
  383. classiq/qmod/pretty_print/pretty_printer.py +572 -0
  384. classiq/qmod/python_classical_type.py +67 -0
  385. classiq/qmod/qfunc.py +60 -8
  386. classiq/qmod/qmod_constant.py +93 -26
  387. classiq/qmod/qmod_parameter.py +68 -59
  388. classiq/qmod/qmod_variable.py +468 -155
  389. classiq/qmod/quantum_callable.py +17 -7
  390. classiq/qmod/quantum_expandable.py +269 -96
  391. classiq/qmod/quantum_function.py +196 -41
  392. classiq/qmod/semantics/__init__.py +0 -0
  393. classiq/qmod/semantics/annotation/__init__.py +0 -0
  394. classiq/qmod/semantics/annotation/call_annotation.py +92 -0
  395. classiq/qmod/semantics/annotation/qstruct_annotator.py +23 -0
  396. classiq/qmod/semantics/error_manager.py +88 -0
  397. classiq/qmod/semantics/lambdas.py +25 -0
  398. classiq/qmod/semantics/static_semantics_visitor.py +384 -0
  399. classiq/qmod/semantics/validation/__init__.py +0 -0
  400. classiq/qmod/semantics/validation/constants_validation.py +16 -0
  401. classiq/qmod/semantics/validation/func_call_validation.py +99 -0
  402. classiq/qmod/semantics/validation/function_name_collisions_validation.py +23 -0
  403. classiq/qmod/semantics/validation/handle_validation.py +85 -0
  404. classiq/qmod/semantics/validation/main_validation.py +33 -0
  405. classiq/qmod/semantics/validation/types_validation.py +128 -0
  406. classiq/qmod/symbolic.py +147 -123
  407. classiq/qmod/symbolic_expr.py +27 -12
  408. classiq/qmod/symbolic_type.py +2 -5
  409. classiq/qmod/type_attribute_remover.py +32 -0
  410. classiq/qmod/utilities.py +98 -4
  411. classiq/qmod/write_qmod.py +17 -3
  412. classiq/synthesis.py +210 -22
  413. {classiq-0.38.0.dist-info → classiq-0.65.3.dist-info}/METADATA +16 -9
  414. classiq-0.65.3.dist-info/RECORD +521 -0
  415. classiq/_internals/_qfunc_ext.py +0 -6
  416. classiq/applications/benchmarking/__init__.py +0 -9
  417. classiq/applications/benchmarking/mirror_benchmarking.py +0 -70
  418. classiq/applications/numpy_utils.py +0 -37
  419. classiq/applications_model_constructors/__init__.py +0 -25
  420. classiq/applications_model_constructors/combinatorial_helpers/multiple_comp_basis_sp.py +0 -34
  421. classiq/applications_model_constructors/combinatorial_helpers/pauli_helpers/pauli_utils.py +0 -65
  422. classiq/applications_model_constructors/combinatorial_helpers/pyomo_utils.py +0 -243
  423. classiq/applications_model_constructors/libraries/ampltitude_estimation_library.py +0 -11
  424. classiq/applications_model_constructors/libraries/qmci_library.py +0 -107
  425. classiq/builtin_functions/__init__.py +0 -43
  426. classiq/builtin_functions/amplitude_loading.py +0 -3
  427. classiq/builtin_functions/binary_ops.py +0 -1
  428. classiq/builtin_functions/exponentiation.py +0 -5
  429. classiq/builtin_functions/qpe.py +0 -4
  430. classiq/builtin_functions/qsvm.py +0 -7
  431. classiq/builtin_functions/range_types.py +0 -5
  432. classiq/builtin_functions/standard_gates.py +0 -1
  433. classiq/builtin_functions/state_preparation.py +0 -6
  434. classiq/builtin_functions/suzuki_trotter.py +0 -3
  435. classiq/interface/executor/aws_execution_cost.py +0 -73
  436. classiq/interface/executor/error_mitigation.py +0 -6
  437. classiq/interface/generator/credit_risk_example/linear_gci.py +0 -122
  438. classiq/interface/generator/credit_risk_example/weighted_adder.py +0 -69
  439. classiq/interface/generator/expressions/enums/chemistry.py +0 -28
  440. classiq/interface/generator/expressions/enums/classical_enum.py +0 -5
  441. classiq/interface/generator/expressions/enums/ladder_operator.py +0 -16
  442. classiq/interface/generator/expressions/enums/optimizers.py +0 -9
  443. classiq/interface/generator/expressions/enums/pauli.py +0 -8
  444. classiq/interface/generator/expressions/enums/qsvm_feature_map_entanglement.py +0 -9
  445. classiq/interface/generator/functions/core_lib_declarations/quantum_functions/__init__.py +0 -18
  446. classiq/interface/generator/functions/core_lib_declarations/quantum_functions/atomic_quantum_functions.py +0 -641
  447. classiq/interface/generator/functions/core_lib_declarations/quantum_functions/exponentiation_functions.py +0 -89
  448. classiq/interface/generator/functions/core_lib_declarations/quantum_functions/std_lib_functions.py +0 -1229
  449. classiq/interface/generator/functions/core_lib_declarations/quantum_operators.py +0 -95
  450. classiq/interface/generator/functions/foreign_function_definition.py +0 -114
  451. classiq/interface/generator/functions/function_implementation.py +0 -107
  452. classiq/interface/generator/functions/native_function_definition.py +0 -155
  453. classiq/interface/generator/functions/quantum_function_declaration.py +0 -69
  454. classiq/interface/generator/functions/register.py +0 -44
  455. classiq/interface/generator/functions/register_mapping_data.py +0 -106
  456. classiq/interface/generator/inequality_mixer.py +0 -51
  457. classiq/interface/generator/model/classical_main_validator.py +0 -106
  458. classiq/interface/generator/range_mixer.py +0 -56
  459. classiq/interface/generator/state_propagator.py +0 -74
  460. classiq/interface/generator/types/builtin_struct_declarations/__init__.py +0 -1
  461. classiq/interface/generator/types/builtin_struct_declarations/pauli_struct_declarations.py +0 -22
  462. classiq/interface/ide/show.py +0 -34
  463. classiq/interface/model/call_synthesis_data.py +0 -68
  464. classiq/interface/model/common_model_types.py +0 -23
  465. classiq/interface/model/quantum_expressions/control_state.py +0 -38
  466. classiq/interface/model/quantum_if_operation.py +0 -94
  467. classiq/interface/model/resolvers/function_call_resolver.py +0 -43
  468. classiq/interface/model/validations/handle_validation_base.py +0 -55
  469. classiq/interface/model/validations/handles_validator.py +0 -156
  470. classiq/interface/model/validations/port_to_wire_name_generator.py +0 -12
  471. classiq/model/__init__.py +0 -14
  472. classiq/model/composite_function_generator.py +0 -33
  473. classiq/model/function_handler.py +0 -462
  474. classiq/model/logic_flow.py +0 -149
  475. classiq/model/logic_flow_change_handler.py +0 -71
  476. classiq/model/model.py +0 -229
  477. classiq/qmod/builtins/functions.py +0 -913
  478. classiq/qmod/qmod_struct.py +0 -37
  479. classiq/quantum_functions/__init__.py +0 -17
  480. classiq/quantum_functions/annotation_parser.py +0 -205
  481. classiq/quantum_functions/decorators.py +0 -22
  482. classiq/quantum_functions/function_library.py +0 -181
  483. classiq/quantum_functions/function_parser.py +0 -74
  484. classiq/quantum_functions/quantum_function.py +0 -236
  485. classiq-0.38.0.dist-info/RECORD +0 -454
  486. /classiq/{applications_model_constructors → applications}/combinatorial_helpers/__init__.py +0 -0
  487. /classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/__init__.py +0 -0
  488. /classiq/{applications_model_constructors → applications}/combinatorial_helpers/pauli_helpers/__init__.py +0 -0
  489. /classiq/{applications_model_constructors → applications}/combinatorial_helpers/pauli_helpers/pauli_sparsing.py +0 -0
  490. /classiq/{applications_model_constructors → applications}/combinatorial_helpers/py.typed +0 -0
  491. /classiq/{applications_model_constructors/combinatorial_helpers/transformations → applications/combinatorial_helpers/solvers}/__init__.py +0 -0
  492. /classiq/{applications_model_constructors/libraries → applications/combinatorial_helpers/transformations}/__init__.py +0 -0
  493. /classiq/{interface/generator/credit_risk_example → applications/hamiltonian}/__init__.py +0 -0
  494. /classiq/{interface/generator/functions/core_lib_declarations → applications/libraries}/__init__.py +0 -0
  495. /classiq/interface/{model/resolvers → debug_info}/__init__.py +0 -0
  496. /classiq/{_internals → interface}/enum_utils.py +0 -0
  497. /classiq/interface/{model/validations → generator/functions/builtins}/__init__.py +0 -0
  498. /classiq/{interface/generator/functions/core_lib_declarations/quantum_functions/chemistry_functions.py → model_expansions/__init__.py} +0 -0
  499. {classiq-0.38.0.dist-info → classiq-0.65.3.dist-info}/WHEEL +0 -0
@@ -0,0 +1,651 @@
1
+ from typing import Literal
2
+
3
+ from classiq.qmod.qfunc import qfunc
4
+ from classiq.qmod.qmod_parameter import CReal
5
+ from classiq.qmod.qmod_variable import QArray, QBit
6
+
7
+
8
+ @qfunc(external=True)
9
+ def H(target: QBit) -> None:
10
+ """
11
+ [Qmod core-library function]
12
+
13
+ Performs the Hadamard gate on a qubit.
14
+
15
+ This operation is represented by the following matrix:
16
+
17
+ $$
18
+ H = \\frac{1}{\\sqrt{2}} \\begin{bmatrix} 1 & 1 \\\\ 1 & -1 \\end{bmatrix}
19
+ $$
20
+
21
+ Args:
22
+ target: The qubit to apply the Hadamard gate to.
23
+ """
24
+ pass
25
+
26
+
27
+ @qfunc(external=True)
28
+ def X(target: QBit) -> None:
29
+ """
30
+ [Qmod core-library function]
31
+
32
+ Performs the Pauli-X gate on a qubit.
33
+
34
+ This operation is represented by the following matrix:
35
+
36
+ $$
37
+ X = \\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}
38
+ $$
39
+
40
+ Args:
41
+ target: The qubit to apply the Pauli-X gate to.
42
+ """
43
+ pass
44
+
45
+
46
+ @qfunc(external=True)
47
+ def Y(target: QBit) -> None:
48
+ """
49
+ [Qmod core-library function]
50
+
51
+ Performs the Pauli-Y gate on a qubit.
52
+
53
+ This operation is represented by the following matrix:
54
+
55
+ $$
56
+ Y = \\begin{bmatrix} 0 & -i \\\\ i & 0 \\end{bmatrix}
57
+ $$
58
+
59
+ Args:
60
+ target: The qubit to apply the Pauli-Y gate to.
61
+ """
62
+ pass
63
+
64
+
65
+ @qfunc(external=True)
66
+ def Z(target: QBit) -> None:
67
+ """
68
+ [Qmod core-library function]
69
+
70
+ Performs the Pauli-Z gate on a qubit.
71
+
72
+ This operation is represented by the following matrix:
73
+
74
+ $$
75
+ Z = \\begin{bmatrix} 1 & 0 \\\\ 0 & -1 \\end{bmatrix}
76
+ $$
77
+
78
+ Args:
79
+ target: The qubit to apply the Pauli-Z gate to.
80
+ """
81
+ pass
82
+
83
+
84
+ @qfunc(external=True)
85
+ def I(target: QBit) -> None:
86
+ """
87
+ [Qmod core-library function]
88
+
89
+ Performs the identity gate on a qubit.
90
+
91
+ This operation is represented by the following matrix:
92
+
93
+ $$
94
+ I = \\begin{bmatrix} 1 & 0 \\\\ 0 & 1 \\end{bmatrix}
95
+ $$
96
+
97
+ Args:
98
+ target: The qubit to apply the identity gate to.
99
+ """
100
+ pass
101
+
102
+
103
+ @qfunc(external=True)
104
+ def S(target: QBit) -> None:
105
+ """
106
+ [Qmod core-library function]
107
+
108
+ Performs the S gate on a qubit.
109
+
110
+ This operation is represented by the following matrix:
111
+
112
+ $$
113
+ S = \\begin{bmatrix} 1 & 0 \\\\ 0 & i \\end{bmatrix}
114
+ $$
115
+
116
+ Args:
117
+ target: The qubit to apply the S gate to.
118
+ """
119
+ pass
120
+
121
+
122
+ @qfunc(external=True)
123
+ def T(target: QBit) -> None:
124
+ """
125
+ [Qmod core-library function]
126
+
127
+ Performs the T gate on a qubit.
128
+
129
+ This operation is represented by the following matrix:
130
+
131
+ $$
132
+ T = \\begin{bmatrix} 1 & 0 \\\\ 0 & e^{i\\frac{\\pi}{4}} \\end{bmatrix}
133
+ $$
134
+
135
+ Args:
136
+ target: The qubit to apply the T gate to.
137
+ """
138
+ pass
139
+
140
+
141
+ @qfunc(external=True)
142
+ def SDG(target: QBit) -> None:
143
+ """
144
+ [Qmod core-library function]
145
+
146
+ Performs the S-dagger gate on a qubit.
147
+
148
+ This operation is represented by the following matrix:
149
+
150
+ $$
151
+ S^\\dagger = \\begin{bmatrix} 1 & 0 \\\\ 0 & -i \\end{bmatrix}
152
+ $$
153
+
154
+ Args:
155
+ target: The qubit to apply the S-dagger gate to.
156
+ """
157
+ pass
158
+
159
+
160
+ @qfunc(external=True)
161
+ def TDG(target: QBit) -> None:
162
+ """
163
+ [Qmod core-library function]
164
+
165
+ Performs the T-dagger gate on a qubit.
166
+
167
+ This operation is represented by the following matrix:
168
+
169
+ $$
170
+ T^\\dagger = \\begin{bmatrix} 1 & 0 \\\\ 0 & e^{-i\\frac{\\pi}{4}} \\end{bmatrix}
171
+ $$
172
+
173
+ Args:
174
+ target: The qubit to apply the T-dagger gate to.
175
+ """
176
+ pass
177
+
178
+
179
+ @qfunc(external=True)
180
+ def PHASE(theta: CReal, target: QBit) -> None:
181
+ """
182
+ [Qmod core-library function]
183
+
184
+ Performs the phase gate on a qubit.
185
+
186
+ This operation is represented by the following matrix:
187
+
188
+ $$
189
+ PHASE(\\theta) = \\begin{bmatrix} 1 & 0 \\\\ 0 & e^{i\\theta} \\end{bmatrix}
190
+ $$
191
+
192
+ Args:
193
+ theta: The phase angle in radians.
194
+ target: The qubit to apply the phase gate to.
195
+ """
196
+ pass
197
+
198
+
199
+ @qfunc(external=True)
200
+ def RX(theta: CReal, target: QBit) -> None:
201
+ """
202
+ [Qmod core-library function]
203
+
204
+ Performs the Pauli-X rotation gate on a qubit.
205
+
206
+ This operation is represented by the following matrix:
207
+
208
+ $$
209
+ R_X(\\theta) = e^{-i\\frac{\\theta}{2}X}
210
+ = \\begin{bmatrix} cos(\\frac{\\theta}{2}) & -i sin(\\frac{\\theta}{2}) \\\\ -i sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2}) \\end{bmatrix}
211
+ $$
212
+
213
+ Args:
214
+ theta: The rotation angle in radians.
215
+ target: The qubit to apply the Pauli-X rotation gate to.
216
+ """
217
+ pass
218
+
219
+
220
+ @qfunc(external=True)
221
+ def RY(theta: CReal, target: QBit) -> None:
222
+ """
223
+ [Qmod core-library function]
224
+
225
+ Performs the Pauli-Y rotation gate on a qubit.
226
+
227
+ This operation is represented by the following matrix:
228
+
229
+ $$
230
+ R_Y(\\theta) = e^{-i\\frac{\\theta}{2}Y}
231
+ = \\begin{bmatrix} cos(\\frac{\\theta}{2}) & -sin(\\frac{\\theta}{2}) \\\\ -sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2}) \\end{bmatrix}
232
+ $$
233
+
234
+ Args:
235
+ theta: The rotation angle in radians.
236
+ target: The qubit to apply the Pauli-Y rotation gate to.
237
+ """
238
+ pass
239
+
240
+
241
+ @qfunc(external=True)
242
+ def RZ(theta: CReal, target: QBit) -> None:
243
+ """
244
+ [Qmod core-library function]
245
+
246
+ Performs the Pauli-Z rotation gate on a qubit.
247
+
248
+ This operation is represented by the following matrix:
249
+
250
+ $$
251
+ R_Z(\\theta) = e^{-i\\frac{\\theta}{2}Z}
252
+ = \\begin{bmatrix} e^{-i\\frac{\\theta}{2}} & 0 \\\\ 0 & e^{i\\frac{\\theta}{2}} \\end{bmatrix}
253
+ $$
254
+
255
+ Args:
256
+ theta: The rotation angle in radians.
257
+ target: The qubit to apply the Pauli-Z rotation gate to.
258
+ """
259
+ pass
260
+
261
+
262
+ @qfunc(external=True)
263
+ def R(theta: CReal, phi: CReal, target: QBit) -> None:
264
+ """
265
+ [Qmod core-library function]
266
+
267
+ Performs a rotation of $\\theta$ around the $cos(\\phi)\\hat{x} + sin(\\phi)\\hat{y}$ axis on a qubit.
268
+
269
+ This operation is represented by the following matrix:
270
+
271
+ $$
272
+ R(\\theta, \\phi) = e^{-i \\frac{\\theta}{2} (cos(\\phi)X + sin(\\phi)Y)}
273
+ = \\begin{bmatrix} cos(\\frac{\\theta}{2}) & -i e^{-i\\phi} sin(\\frac{\\theta}{2}) \\\\ -i e^{i\\phi} sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2}) \\end{bmatrix}
274
+ $$
275
+
276
+ Args:
277
+ theta: The rotation angle in radians.
278
+ phi: The phase angle in radians.
279
+ target: The qubit to apply the general single-qubit rotation gate to.
280
+ """
281
+ pass
282
+
283
+
284
+ @qfunc(external=True)
285
+ def RXX(theta: CReal, target: QArray[QBit, Literal[2]]) -> None:
286
+ """
287
+ [Qmod core-library function]
288
+
289
+ Performs the XX rotation gate on a pair of qubits.
290
+
291
+ This operation is represented by the following matrix:
292
+
293
+ $$
294
+ R_{XX}(\\theta) = e^{-i\\frac{\\theta}{2}X \\otimes X}
295
+ = \\begin{bmatrix} cos(\\frac{\\theta}{2}) & 0 & 0 & -i sin(\\frac{\\theta}{2}) \\\\ 0 & cos(\\frac{\\theta}{2}) & -i sin(\\frac{\\theta}{2}) & 0 \\\\ 0 & -i sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2}) & 0 \\\\ -i sin(\\frac{\\theta}{2}) & 0 & 0 & cos(\\frac{\\theta}{2}) \\end{bmatrix}
296
+ $$
297
+
298
+ Args:
299
+ theta: The rotation angle in radians.
300
+ target: The pair of qubits to apply the XX rotation gate to.
301
+ """
302
+ pass
303
+
304
+
305
+ @qfunc(external=True)
306
+ def RYY(theta: CReal, target: QArray[QBit, Literal[2]]) -> None:
307
+ """
308
+ [Qmod core-library function]
309
+
310
+ Performs the YY rotation gate on a pair of qubits.
311
+
312
+ This operation is represented by the following matrix:
313
+
314
+ $$
315
+ R_{YY}(\\theta) = e^{-i\\frac{\\theta}{2}Y \\otimes Y}
316
+ = \\begin{bmatrix} cos(\\frac{\\theta}{2}) & 0 & 0 & -sin(\\frac{\\theta}{2}) \\\\ 0 & cos(\\frac{\\theta}{2}) & sin(\\frac{\\theta}{2}) & 0 \\\\ 0 & sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2}) & 0 \\\\ -sin(\\frac{\\theta}{2}) & 0 & 0 & cos(\\frac{\\theta}{2}) \\end{bmatrix}
317
+ $$
318
+
319
+ Args:
320
+ theta: The rotation angle in radians.
321
+ target: The pair of qubits to apply the YY rotation gate to.
322
+ """
323
+ pass
324
+
325
+
326
+ @qfunc(external=True)
327
+ def RZZ(theta: CReal, target: QArray[QBit, Literal[2]]) -> None:
328
+ """
329
+ [Qmod core-library function]
330
+
331
+ Performs the ZZ rotation gate on a pair of qubits.
332
+
333
+ This operation is represented by the following matrix:
334
+
335
+ $$
336
+ R_{ZZ}(\\theta) = e^{-i\\frac{\\theta}{2}Z \\otimes Z}
337
+ = \\begin{bmatrix} e^{-i\\frac{\\theta}{2}} & 0 & 0 & 0 \\\\ 0 & e^{i\\frac{\\theta}{2}} & 0 & 0 \\\\ 0 & 0 & e^{i\\frac{\\theta}{2}} & 0 \\\\ 0 & 0 & 0 & e^{-i\\frac{\\theta}{2}} \\end{bmatrix}
338
+ $$
339
+
340
+ Args:
341
+ theta: The rotation angle in radians.
342
+ target: The pair of qubits to apply the ZZ rotation gate to.
343
+ """
344
+ pass
345
+
346
+
347
+ @qfunc(external=True)
348
+ def CH(ctrl: QBit, target: QBit) -> None:
349
+ """
350
+ [Qmod core-library function]
351
+
352
+ Applies the Hadamard gate to the target qubit, conditioned on the control qubit.
353
+
354
+ This operation is represented by the following matrix:
355
+
356
+ $$
357
+ CH = \\frac{1}{\\sqrt{2}} \\begin{bmatrix}
358
+ 1 & 0 & 0 & 0 \\\\
359
+ 0 & 1 & 0 & 0 \\\\
360
+ 0 & 0 & 1 & 1 \\\\
361
+ 0 & 0 & 1 & -1
362
+ \\end{bmatrix}
363
+ $$
364
+
365
+ Args:
366
+ ctrl: The control qubit.
367
+ target: The qubit to apply the Hadamard gate on.
368
+ """
369
+ pass
370
+
371
+
372
+ @qfunc(external=True)
373
+ def CX(ctrl: QBit, target: QBit) -> None:
374
+ """
375
+ [Qmod core-library function]
376
+
377
+ Applies the Pauli-X gate to the target qubit, conditioned on the control qubit.
378
+
379
+ This operation is represented by the following matrix:
380
+
381
+ $$
382
+ CX = \\begin{bmatrix}
383
+ 1 & 0 & 0 & 0 \\\\
384
+ 0 & 1 & 0 & 0 \\\\
385
+ 0 & 0 & 0 & 1 \\\\
386
+ 0 & 0 & 1 & 0
387
+ \\end{bmatrix}
388
+ $$
389
+
390
+ Args:
391
+ ctrl: The control qubit.
392
+ target: The qubit to apply the Pauli-X gate on.
393
+ """
394
+ pass
395
+
396
+
397
+ @qfunc(external=True)
398
+ def CY(ctrl: QBit, target: QBit) -> None:
399
+ """
400
+ [Qmod core-library function]
401
+
402
+ Applies the Pauli-Y gate to the target qubit, conditioned on the control qubit.
403
+
404
+ This operation is represented by the following matrix:
405
+
406
+ $$
407
+ CY = \\begin{bmatrix}
408
+ 1 & 0 & 0 & 0 \\\\
409
+ 0 & 1 & 0 & 0 \\\\
410
+ 0 & 0 & 0 & -i \\\\
411
+ 0 & 0 & i & 0
412
+ \\end{bmatrix}
413
+ $$
414
+
415
+ Args:
416
+ ctrl: The control qubit.
417
+ target: The qubit to apply the Pauli-Y gate on.
418
+ """
419
+ pass
420
+
421
+
422
+ @qfunc(external=True)
423
+ def CZ(ctrl: QBit, target: QBit) -> None:
424
+ """
425
+ [Qmod core-library function]
426
+
427
+ Applies the Pauli-Z gate to the target qubit, conditioned on the control qubit.
428
+
429
+ This operation is represented by the following matrix:
430
+
431
+ $$
432
+ CZ = \\begin{bmatrix}
433
+ 1 & 0 & 0 & 0 \\\\
434
+ 0 & 1 & 0 & 0 \\\\
435
+ 0 & 0 & 1 & 0 \\\\
436
+ 0 & 0 & 0 & -1
437
+ \\end{bmatrix}
438
+ $$
439
+
440
+ Args:
441
+ ctrl: The control qubit.
442
+ target: The qubit to apply the Pauli-Z gate on.
443
+ """
444
+ pass
445
+
446
+
447
+ @qfunc(external=True)
448
+ def CRX(theta: CReal, ctrl: QBit, target: QBit) -> None:
449
+ """
450
+ [Qmod core-library function]
451
+
452
+ Applies the RX gate to the target qubit, conditioned on the control qubit.
453
+
454
+ This operation is represented by the following matrix:
455
+
456
+ $$
457
+ CRX = \\begin{bmatrix}
458
+ 1 & 0 & 0 & 0 \\\\
459
+ 0 & 1 & 0 & 0 \\\\
460
+ 0 & 0 & cos(\\frac{\\theta}{2}) & -i*sin(\\frac{\\theta}{2}) \\\\
461
+ 0 & 0 & -i*sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2})
462
+ \\end{bmatrix}
463
+ $$
464
+
465
+ Args:
466
+ theta: The rotation angle in radians.
467
+ ctrl: The control qubit.
468
+ target: The qubit to apply the RX gate on.
469
+ """
470
+ pass
471
+
472
+
473
+ @qfunc(external=True)
474
+ def CRY(theta: CReal, ctrl: QBit, target: QBit) -> None:
475
+ """
476
+ [Qmod core-library function]
477
+
478
+ Applies the RY gate to the target qubit, conditioned on the control qubit.
479
+
480
+ This operation is represented by the following matrix:
481
+
482
+ $$
483
+ CRY = \\begin{bmatrix}
484
+ 1 & 0 & 0 & 0 \\\\
485
+ 0 & 1 & 0 & 0 \\\\
486
+ 0 & 0 & cos(\\frac{\\theta}{2}) & -sin(\\frac{\\theta}{2}) \\\\
487
+ 0 & 0 & sin(\\frac{\\theta}{2}) & cos(\\frac{\\theta}{2})
488
+ \\end{bmatrix}
489
+ $$
490
+
491
+ Args:
492
+ theta (CReal): The rotation angle in radians.
493
+ ctrl (QBit): The control qubit.
494
+ target (QBit): The qubit to apply the RY gate on.
495
+ """
496
+ pass
497
+
498
+
499
+ @qfunc(external=True)
500
+ def CRZ(theta: CReal, ctrl: QBit, target: QBit) -> None:
501
+ """
502
+ [Qmod core-library function]
503
+
504
+ Applies the RZ gate to the target qubit, conditioned on the control qubit.
505
+
506
+ This operation is represented by the following matrix:
507
+
508
+ $$
509
+ CRZ = \\begin{bmatrix}
510
+ 1 & 0 & 0 & 0 \\\\
511
+ 0 & 1 & 0 & 0 \\\\
512
+ 0 & 0 & e^{-i\\frac{\\theta}{2}} & 0 \\\\
513
+ 0 & 0 & 0 & e^{i\\frac{\\theta}{2}}
514
+ \\end{bmatrix}
515
+ $$
516
+
517
+ Args:
518
+ theta (CReal): The rotation angle in radians.
519
+ ctrl (QBit): The control qubit.
520
+ target (QBit): The qubit to apply the RZ gate on.
521
+ """
522
+ pass
523
+
524
+
525
+ @qfunc(external=True)
526
+ def CPHASE(theta: CReal, ctrl: QBit, target: QBit) -> None:
527
+ """
528
+ [Qmod core-library function]
529
+
530
+ Applies the PHASE gate to the target qubit, conditioned on the control qubit.
531
+
532
+ This operation is represented by the following matrix:
533
+
534
+ $$
535
+ CPHASE = \\begin{bmatrix}
536
+ 1 & 0 & 0 & 0 \\\\
537
+ 0 & 1 & 0 & 0 \\\\
538
+ 0 & 0 & 1 & 0 \\\\
539
+ 0 & 0 & 0 & e^{i\\theta}
540
+ \\end{bmatrix}
541
+ $$
542
+
543
+ Args:
544
+ theta (CReal): The rotation angle in radians.
545
+ ctrl (QBit): The control qubit.
546
+ target (QBit): The qubit to apply the PHASE gate on.
547
+ """
548
+ pass
549
+
550
+
551
+ @qfunc(external=True)
552
+ def SWAP(qbit0: QBit, qbit1: QBit) -> None:
553
+ """
554
+ [Qmod core-library function]
555
+
556
+ Swaps the states of two qubits.
557
+
558
+ This operation is represented by the following matrix:
559
+
560
+ $$
561
+ SWAP = \\begin{bmatrix}
562
+ 1 & 0 & 0 & 0 \\\\
563
+ 0 & 0 & 1 & 0 \\\\
564
+ 0 & 1 & 0 & 0 \\\\
565
+ 0 & 0 & 0 & 1
566
+ \\end{bmatrix}
567
+ $$
568
+
569
+ Args:
570
+ qbit0 (QBit): The first qubit.
571
+ qbit1 (QBit): The second qubit.
572
+ """
573
+ pass
574
+
575
+
576
+ @qfunc(external=True)
577
+ def IDENTITY(target: QArray[QBit]) -> None:
578
+ """
579
+ [Qmod core-library function]
580
+
581
+ Does nothing.
582
+
583
+ This operation is represented by the following matrix:
584
+
585
+ $$
586
+ IDENTITY = {\\begin{bmatrix}
587
+ 1 & 0 \\\\
588
+ 0 & 1
589
+ \\end{bmatrix}} ^{\\otimes n}
590
+ $$
591
+
592
+ Args:
593
+ target (QArray[QBit]): The qubits to apply the IDENTITY gate on.
594
+ """
595
+ pass
596
+
597
+
598
+ @qfunc(external=True)
599
+ def U(theta: CReal, phi: CReal, lam: CReal, gam: CReal, target: QBit) -> None:
600
+ """
601
+ [Qmod core-library function]
602
+
603
+ Performs a general single-qubit unitary gate that applies phase and rotation with three Euler angles on a qubit.
604
+
605
+ This operation is represented by the following matrix:
606
+
607
+ $$
608
+ U(\\theta, \\phi, \\lambda, \\gamma) = e^{i \\gamma}
609
+ \\begin{bmatrix}
610
+ cos(\\theta/2) & -e^{i(\\lambda)} sin(\\theta/2) \\\\
611
+ e^{i\\phi} sin(\\theta/2) & e^{i(\\phi + \\lambda)} cos(\\theta/2)
612
+ \\end{bmatrix}
613
+ $$
614
+
615
+ Args:
616
+ theta (CReal): The first Euler angle in radians.
617
+ phi (CReal): The second Euler angle in radians.
618
+ lam (CReal): The third Euler angle in radians.
619
+ gam (CReal): The global phase angle in radians.
620
+ target (QBit): The qubit to apply the general single-qubit unitary gate to.
621
+ """
622
+ pass
623
+
624
+
625
+ @qfunc(external=True)
626
+ def CCX(ctrl: QArray[QBit, Literal[2]], target: QBit) -> None:
627
+ """
628
+ [Qmod core-library function]
629
+
630
+ Applies the Pauli-X gate to the target qubit, conditioned on the two control qubits (Toffoli).
631
+
632
+ This operation is represented by the following matrix:
633
+
634
+ $$
635
+ CCX = \\begin{bmatrix}
636
+ 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\
637
+ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\
638
+ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\\\
639
+ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\
640
+ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\\\
641
+ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\\\
642
+ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\\\
643
+ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0
644
+ \\end{bmatrix}
645
+ $$
646
+
647
+ Args:
648
+ ctrl (QArray[QBit, Literal[2]]): The control qubits.
649
+ target (QBit): The qubit to apply the conditioned Pauli-X gate on.
650
+ """
651
+ pass