classiq 0.38.0__py3-none-any.whl → 0.65.4__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.
- classiq/__init__.py +47 -32
- classiq/_analyzer_extras/_ipywidgets_async_extension.py +2 -1
- classiq/_internals/api_wrapper.py +235 -97
- classiq/_internals/async_utils.py +1 -3
- classiq/_internals/authentication/auth0.py +26 -10
- classiq/_internals/authentication/authentication.py +11 -0
- classiq/_internals/authentication/device.py +10 -5
- classiq/_internals/authentication/password_manager.py +18 -6
- classiq/_internals/authentication/token_manager.py +10 -5
- classiq/_internals/client.py +94 -33
- classiq/_internals/config.py +3 -4
- classiq/_internals/host_checker.py +38 -15
- classiq/_internals/jobs.py +60 -57
- classiq/_internals/type_validation.py +9 -9
- classiq/analyzer/__init__.py +1 -3
- classiq/analyzer/analyzer.py +24 -19
- classiq/analyzer/analyzer_utilities.py +10 -10
- classiq/analyzer/rb.py +15 -15
- classiq/analyzer/show_interactive_hack.py +27 -4
- classiq/analyzer/url_utils.py +2 -3
- classiq/applications/__init__.py +3 -12
- classiq/applications/chemistry/__init__.py +14 -10
- classiq/applications/chemistry/ansatz_parameters.py +4 -4
- classiq/{applications_model_constructors → applications/chemistry}/chemistry_model_constructor.py +165 -158
- classiq/applications/chemistry/ground_state_problem.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/allowed_constraints.py +4 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/arithmetic_expression.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/isolation.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/combinatorial_problem_utils.py +51 -15
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_mapping.py +12 -12
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_utils.py +8 -6
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/memory.py +7 -11
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/optimization_model.py +67 -40
- classiq/applications/combinatorial_helpers/pauli_helpers/pauli_utils.py +46 -0
- classiq/applications/combinatorial_helpers/pyomo_utils.py +447 -0
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/sympy_utils.py +2 -2
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/encoding.py +15 -20
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/fixed_variables.py +14 -15
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/ising_converter.py +11 -15
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty.py +1 -2
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty_support.py +3 -7
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/sign_seperation.py +2 -3
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/slack_variables.py +5 -8
- classiq/applications/combinatorial_optimization/__init__.py +20 -6
- classiq/applications/combinatorial_optimization/combinatorial_optimization_config.py +2 -2
- classiq/{applications_model_constructors → applications/combinatorial_optimization}/combinatorial_optimization_model_constructor.py +35 -33
- classiq/applications/combinatorial_optimization/combinatorial_problem.py +229 -0
- classiq/applications/combinatorial_optimization/examples/__init__.py +1 -3
- classiq/applications/finance/__init__.py +4 -5
- classiq/{applications_model_constructors → applications/finance}/finance_model_constructor.py +48 -42
- classiq/applications/grover/__init__.py +9 -0
- classiq/{applications_model_constructors → applications/grover}/grover_model_constructor.py +52 -51
- classiq/applications/hamiltonian/pauli_decomposition.py +113 -0
- classiq/applications/libraries/qmci_library.py +22 -0
- classiq/applications/qnn/__init__.py +2 -4
- classiq/applications/qnn/circuit_utils.py +6 -6
- classiq/applications/qnn/datasets/__init__.py +9 -11
- classiq/applications/qnn/datasets/dataset_base_classes.py +7 -5
- classiq/applications/qnn/datasets/dataset_not.py +2 -1
- classiq/applications/qnn/datasets/dataset_parity.py +2 -2
- classiq/applications/qnn/gradients/quantum_gradient.py +1 -1
- classiq/applications/qnn/gradients/simple_quantum_gradient.py +2 -1
- classiq/applications/qnn/qlayer.py +30 -10
- classiq/applications/qnn/torch_utils.py +4 -3
- classiq/applications/qnn/types.py +5 -5
- classiq/applications/qsvm/__init__.py +6 -4
- classiq/applications/qsvm/qsvm.py +3 -6
- classiq/applications/qsvm/qsvm_data_generation.py +3 -3
- classiq/{applications_model_constructors → applications/qsvm}/qsvm_model_constructor.py +30 -28
- classiq/execution/__init__.py +8 -3
- classiq/execution/all_hardware_devices.py +11 -0
- classiq/execution/execution_session.py +400 -0
- classiq/execution/iqcc.py +63 -0
- classiq/execution/jobs.py +197 -25
- classiq/execution/qnn.py +79 -0
- classiq/executor.py +20 -115
- classiq/interface/_version.py +1 -1
- classiq/interface/analyzer/analysis_params.py +43 -13
- classiq/interface/analyzer/cytoscape_graph.py +15 -9
- classiq/interface/analyzer/result.py +28 -32
- classiq/interface/applications/qsvm.py +20 -29
- classiq/interface/ast_node.py +16 -0
- classiq/interface/backend/backend_preferences.py +390 -121
- classiq/interface/backend/ionq/ionq_quantum_program.py +15 -23
- classiq/interface/backend/pydantic_backend.py +25 -22
- classiq/interface/backend/quantum_backend_providers.py +69 -16
- classiq/interface/chemistry/fermionic_operator.py +30 -21
- classiq/interface/chemistry/ground_state_problem.py +28 -25
- classiq/interface/chemistry/molecule.py +14 -10
- classiq/interface/chemistry/operator.py +64 -231
- classiq/interface/combinatorial_optimization/encoding_types.py +1 -1
- classiq/interface/combinatorial_optimization/examples/ascending_sequence.py +1 -3
- classiq/interface/combinatorial_optimization/examples/integer_portfolio_optimization.py +2 -4
- classiq/interface/combinatorial_optimization/examples/knapsack.py +3 -3
- classiq/interface/combinatorial_optimization/examples/mht.py +10 -6
- classiq/interface/combinatorial_optimization/examples/portfolio_variations.py +2 -2
- classiq/interface/combinatorial_optimization/examples/set_cover.py +1 -2
- classiq/interface/combinatorial_optimization/mht_qaoa_input.py +8 -9
- classiq/interface/combinatorial_optimization/optimization_problem.py +2 -2
- classiq/interface/combinatorial_optimization/result.py +1 -3
- classiq/interface/combinatorial_optimization/solver_types.py +1 -1
- classiq/interface/debug_info/debug_info.py +86 -0
- classiq/{exceptions.py → interface/exceptions.py} +37 -9
- classiq/interface/execution/iqcc.py +19 -0
- classiq/interface/execution/jobs.py +15 -12
- classiq/interface/execution/primitives.py +18 -0
- classiq/interface/executor/constants.py +1 -0
- classiq/interface/executor/execution_preferences.py +26 -114
- classiq/interface/executor/execution_request.py +24 -46
- classiq/interface/executor/execution_result.py +30 -8
- classiq/interface/executor/iqae_result.py +4 -6
- classiq/interface/executor/optimizer_preferences.py +17 -14
- classiq/interface/executor/quantum_code.py +28 -24
- classiq/interface/executor/quantum_instruction_set.py +2 -2
- classiq/interface/executor/register_initialization.py +11 -14
- classiq/interface/executor/result.py +83 -56
- classiq/interface/executor/vqe_result.py +10 -10
- classiq/interface/finance/function_input.py +35 -25
- classiq/interface/finance/gaussian_model_input.py +5 -5
- classiq/interface/finance/log_normal_model_input.py +4 -4
- classiq/interface/finance/model_input.py +4 -4
- classiq/interface/generator/adjacency.py +1 -3
- classiq/interface/generator/amplitude_loading.py +22 -12
- classiq/interface/generator/ansatz_library.py +5 -5
- classiq/interface/generator/application_apis/arithmetic_declarations.py +8 -5
- classiq/interface/generator/application_apis/chemistry_declarations.py +27 -187
- classiq/interface/generator/application_apis/combinatorial_optimization_declarations.py +18 -21
- classiq/interface/generator/application_apis/entangler_declarations.py +11 -6
- classiq/interface/generator/application_apis/finance_declarations.py +48 -69
- classiq/interface/generator/application_apis/qsvm_declarations.py +0 -70
- classiq/interface/generator/arith/argument_utils.py +46 -5
- classiq/interface/generator/arith/arithmetic.py +35 -16
- classiq/interface/generator/arith/arithmetic_arg_type_validator.py +6 -7
- classiq/interface/generator/arith/arithmetic_expression_abc.py +66 -25
- classiq/interface/generator/arith/arithmetic_expression_parser.py +11 -11
- classiq/interface/generator/arith/arithmetic_expression_validator.py +47 -43
- classiq/interface/generator/arith/arithmetic_operations.py +14 -6
- classiq/interface/generator/arith/arithmetic_param_getters.py +7 -8
- classiq/interface/generator/arith/arithmetic_result_builder.py +21 -17
- classiq/interface/generator/arith/ast_node_rewrite.py +3 -2
- classiq/interface/generator/arith/binary_ops.py +218 -130
- classiq/interface/generator/arith/endianness.py +1 -1
- classiq/interface/generator/arith/extremum_operations.py +96 -25
- classiq/interface/generator/arith/logical_ops.py +14 -12
- classiq/interface/generator/arith/number_utils.py +12 -6
- classiq/interface/generator/arith/register_user_input.py +60 -37
- classiq/interface/generator/arith/unary_ops.py +49 -29
- classiq/interface/generator/arith/uncomputation_methods.py +1 -1
- classiq/interface/generator/builtin_api_builder.py +2 -9
- classiq/interface/generator/chemistry_function_params.py +3 -3
- classiq/interface/generator/circuit_code/circuit_code.py +7 -7
- classiq/interface/generator/circuit_code/types_and_constants.py +4 -7
- classiq/interface/generator/commuting_pauli_exponentiation.py +7 -7
- classiq/interface/generator/compiler_keywords.py +5 -1
- classiq/interface/generator/complex_type.py +13 -18
- classiq/interface/generator/constant.py +3 -4
- classiq/interface/generator/control_state.py +34 -29
- classiq/interface/generator/copy.py +47 -0
- classiq/interface/generator/custom_ansatz.py +2 -5
- classiq/interface/generator/distance.py +3 -5
- classiq/interface/generator/excitations.py +3 -2
- classiq/interface/generator/expressions/atomic_expression_functions.py +21 -5
- classiq/interface/generator/expressions/enums/__init__.py +0 -10
- classiq/interface/generator/expressions/enums/finance_functions.py +12 -22
- classiq/interface/generator/expressions/evaluated_expression.py +5 -5
- classiq/interface/generator/expressions/expression.py +26 -14
- classiq/interface/generator/expressions/expression_constants.py +9 -3
- classiq/interface/generator/expressions/non_symbolic_expr.py +119 -0
- classiq/interface/generator/expressions/qmod_qarray_proxy.py +99 -0
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py +34 -8
- classiq/interface/generator/expressions/qmod_qstruct_proxy.py +36 -0
- classiq/interface/generator/expressions/qmod_sized_proxy.py +30 -2
- classiq/interface/generator/expressions/qmod_struct_instance.py +14 -2
- classiq/interface/generator/expressions/sympy_supported_expressions.py +19 -11
- classiq/interface/generator/finance.py +2 -2
- classiq/interface/generator/function_param_library.py +6 -6
- classiq/interface/generator/function_param_list_without_self_reference.py +2 -10
- classiq/interface/generator/function_params.py +36 -64
- classiq/interface/generator/functions/__init__.py +0 -22
- classiq/interface/generator/functions/builtins/internal_operators.py +16 -0
- classiq/interface/generator/functions/classical_function_declaration.py +18 -9
- classiq/interface/generator/functions/classical_type.py +47 -166
- classiq/interface/generator/functions/concrete_types.py +55 -0
- classiq/interface/generator/functions/function_declaration.py +13 -14
- classiq/interface/generator/functions/port_declaration.py +1 -13
- classiq/interface/generator/functions/qmod_python_interface.py +2 -1
- classiq/interface/generator/functions/type_name.py +90 -0
- classiq/interface/generator/generated_circuit_data.py +153 -20
- classiq/interface/generator/grover_diffuser.py +32 -25
- classiq/interface/generator/grover_operator.py +34 -25
- classiq/interface/generator/hamiltonian_evolution/exponentiation.py +4 -6
- classiq/interface/generator/hamiltonian_evolution/qdrift.py +4 -4
- classiq/interface/generator/hamiltonian_evolution/suzuki_trotter.py +9 -9
- classiq/interface/generator/hardware/hardware_data.py +72 -34
- classiq/interface/generator/hardware_efficient_ansatz.py +20 -16
- classiq/interface/generator/hartree_fock.py +13 -5
- classiq/interface/generator/identity.py +10 -6
- classiq/interface/generator/linear_pauli_rotations.py +32 -20
- classiq/interface/generator/mcmt_method.py +1 -1
- classiq/interface/generator/mcu.py +17 -15
- classiq/interface/generator/mcx.py +24 -17
- classiq/interface/generator/model/__init__.py +2 -5
- classiq/interface/generator/model/constraints.py +26 -8
- classiq/interface/generator/model/model.py +27 -190
- classiq/interface/generator/model/preferences/preferences.py +115 -41
- classiq/{quantum_register.py → interface/generator/model/quantum_register.py} +14 -17
- classiq/interface/generator/oracles/arithmetic_oracle.py +2 -4
- classiq/interface/generator/oracles/custom_oracle.py +15 -13
- classiq/interface/generator/oracles/oracle_abc.py +7 -7
- classiq/interface/generator/partitioned_register.py +7 -7
- classiq/interface/generator/piecewise_linear_amplitude_loading.py +45 -29
- classiq/interface/generator/preferences/optimization.py +1 -2
- classiq/interface/generator/qpe.py +41 -30
- classiq/interface/generator/qsvm.py +9 -10
- classiq/interface/generator/quantum_function_call.py +88 -73
- classiq/interface/generator/quantum_program.py +41 -24
- classiq/interface/generator/range_types.py +11 -12
- classiq/interface/generator/register_role.py +18 -6
- classiq/interface/generator/slice_parsing_utils.py +5 -5
- classiq/interface/generator/standard_gates/controlled_standard_gates.py +30 -39
- classiq/interface/generator/standard_gates/standard_angle_metaclass.py +2 -6
- classiq/interface/generator/standard_gates/standard_gates.py +3 -3
- classiq/interface/generator/standard_gates/u_gate.py +7 -10
- classiq/interface/generator/state_preparation/bell_state_preparation.py +3 -3
- classiq/interface/generator/state_preparation/computational_basis_state_preparation.py +2 -1
- classiq/interface/generator/state_preparation/distributions.py +16 -15
- classiq/interface/generator/state_preparation/metrics.py +4 -7
- classiq/interface/generator/state_preparation/state_preparation.py +25 -20
- classiq/interface/generator/synthesis_metadata/synthesis_duration.py +0 -4
- classiq/interface/generator/synthesis_metadata/synthesis_execution_data.py +20 -6
- classiq/interface/generator/transpiler_basis_gates.py +7 -3
- classiq/interface/generator/types/builtin_enum_declarations.py +178 -0
- classiq/interface/generator/types/compilation_metadata.py +6 -0
- classiq/interface/generator/types/enum_declaration.py +54 -0
- classiq/interface/generator/types/qstruct_declaration.py +18 -0
- classiq/interface/generator/types/struct_declaration.py +7 -11
- classiq/interface/generator/ucc.py +5 -4
- classiq/interface/generator/unitary_gate.py +5 -5
- classiq/interface/generator/user_defined_function_params.py +4 -1
- classiq/interface/generator/validations/flow_graph.py +7 -7
- classiq/interface/generator/validations/validator_functions.py +4 -4
- classiq/interface/generator/visitor.py +23 -16
- classiq/interface/hardware.py +29 -8
- classiq/interface/helpers/classproperty.py +8 -0
- classiq/interface/helpers/custom_encoders.py +2 -2
- classiq/interface/helpers/custom_pydantic_types.py +40 -50
- classiq/interface/helpers/datastructures.py +26 -0
- classiq/interface/helpers/hashable_mixin.py +3 -2
- classiq/interface/helpers/hashable_pydantic_base_model.py +2 -1
- classiq/interface/helpers/pydantic_model_helpers.py +7 -5
- classiq/interface/helpers/validation_helpers.py +3 -20
- classiq/interface/helpers/versioned_model.py +1 -4
- classiq/interface/ide/ide_data.py +16 -20
- classiq/interface/ide/visual_model.py +130 -0
- classiq/interface/interface_version.py +1 -0
- classiq/interface/jobs.py +29 -69
- classiq/interface/model/allocate.py +16 -0
- classiq/interface/model/bind_operation.py +32 -9
- classiq/interface/model/classical_if.py +15 -0
- classiq/interface/model/classical_parameter_declaration.py +33 -3
- classiq/interface/model/control.py +45 -0
- classiq/interface/model/handle_binding.py +298 -20
- classiq/interface/model/inplace_binary_operation.py +29 -24
- classiq/interface/model/invert.py +12 -0
- classiq/interface/model/model.py +69 -61
- classiq/interface/model/native_function_definition.py +17 -20
- classiq/interface/model/parameter.py +13 -0
- classiq/interface/model/phase_operation.py +11 -0
- classiq/interface/model/port_declaration.py +27 -9
- classiq/interface/model/power.py +14 -0
- classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +30 -18
- classiq/interface/model/quantum_expressions/arithmetic_operation.py +51 -14
- classiq/interface/model/quantum_expressions/quantum_expression.py +12 -35
- classiq/interface/model/quantum_function_call.py +141 -343
- classiq/interface/model/quantum_function_declaration.py +190 -157
- classiq/interface/model/quantum_lambda_function.py +33 -32
- classiq/interface/model/quantum_statement.py +71 -12
- classiq/interface/model/quantum_type.py +177 -40
- classiq/interface/model/quantum_variable_declaration.py +3 -25
- classiq/interface/model/repeat.py +15 -0
- classiq/interface/model/statement_block.py +40 -14
- classiq/interface/model/validation_handle.py +13 -6
- classiq/interface/model/variable_declaration_statement.py +3 -1
- classiq/interface/model/within_apply_operation.py +7 -5
- classiq/interface/server/global_versions.py +6 -7
- classiq/interface/server/routes.py +17 -21
- classiq/interface/source_reference.py +59 -0
- classiq/model_expansions/atomic_expression_functions_defs.py +253 -0
- classiq/model_expansions/capturing/__init__.py +0 -0
- classiq/model_expansions/capturing/captured_vars.py +435 -0
- classiq/model_expansions/capturing/mangling_utils.py +56 -0
- classiq/model_expansions/closure.py +171 -0
- classiq/model_expansions/debug_flag.py +3 -0
- classiq/model_expansions/evaluators/__init__.py +0 -0
- classiq/model_expansions/evaluators/arg_type_match.py +158 -0
- classiq/model_expansions/evaluators/argument_types.py +42 -0
- classiq/model_expansions/evaluators/classical_expression.py +36 -0
- classiq/model_expansions/evaluators/control.py +144 -0
- classiq/model_expansions/evaluators/parameter_types.py +226 -0
- classiq/model_expansions/evaluators/quantum_type_utils.py +239 -0
- classiq/model_expansions/evaluators/type_type_match.py +90 -0
- classiq/model_expansions/expression_evaluator.py +135 -0
- classiq/model_expansions/expression_renamer.py +76 -0
- classiq/model_expansions/function_builder.py +247 -0
- classiq/model_expansions/generative_functions.py +158 -0
- classiq/model_expansions/interpreters/__init__.py +0 -0
- classiq/model_expansions/interpreters/base_interpreter.py +263 -0
- classiq/model_expansions/interpreters/frontend_generative_interpreter.py +28 -0
- classiq/model_expansions/interpreters/generative_interpreter.py +249 -0
- classiq/model_expansions/model_tables.py +18 -0
- classiq/model_expansions/quantum_operations/__init__.py +9 -0
- classiq/model_expansions/quantum_operations/bind.py +60 -0
- classiq/model_expansions/quantum_operations/call_emitter.py +266 -0
- classiq/model_expansions/quantum_operations/classicalif.py +53 -0
- classiq/model_expansions/quantum_operations/declarative_call_emitter.py +87 -0
- classiq/model_expansions/quantum_operations/emitter.py +181 -0
- classiq/model_expansions/quantum_operations/quantum_function_call.py +33 -0
- classiq/model_expansions/quantum_operations/repeat.py +56 -0
- classiq/model_expansions/quantum_operations/shallow_emitter.py +180 -0
- classiq/model_expansions/quantum_operations/variable_decleration.py +28 -0
- classiq/model_expansions/scope.py +240 -0
- classiq/model_expansions/scope_initialization.py +150 -0
- classiq/model_expansions/sympy_conversion/__init__.py +0 -0
- classiq/model_expansions/sympy_conversion/arithmetics.py +49 -0
- classiq/model_expansions/sympy_conversion/expression_to_sympy.py +179 -0
- classiq/model_expansions/sympy_conversion/sympy_to_python.py +123 -0
- classiq/model_expansions/transformers/__init__.py +0 -0
- classiq/model_expansions/transformers/ast_renamer.py +26 -0
- classiq/model_expansions/transformers/var_splitter.py +299 -0
- classiq/model_expansions/utils/__init__.py +0 -0
- classiq/model_expansions/utils/counted_name_allocator.py +11 -0
- classiq/model_expansions/utils/handles_collector.py +33 -0
- classiq/model_expansions/visitors/__init__.py +0 -0
- classiq/model_expansions/visitors/boolean_expression_transformers.py +214 -0
- classiq/model_expansions/visitors/variable_references.py +144 -0
- classiq/open_library/__init__.py +4 -0
- classiq/open_library/functions/__init__.py +130 -0
- classiq/open_library/functions/amplitude_estimation.py +30 -0
- classiq/open_library/functions/discrete_sine_cosine_transform.py +181 -0
- classiq/open_library/functions/grover.py +157 -0
- classiq/open_library/functions/hea.py +115 -0
- classiq/open_library/functions/linear_pauli_rotation.py +82 -0
- classiq/open_library/functions/modular_exponentiation.py +201 -0
- classiq/open_library/functions/qaoa_penalty.py +117 -0
- classiq/open_library/functions/qft_functions.py +54 -0
- classiq/open_library/functions/qpe.py +46 -0
- classiq/open_library/functions/qsvt.py +331 -0
- classiq/open_library/functions/state_preparation.py +301 -0
- classiq/open_library/functions/swap_test.py +27 -0
- classiq/open_library/functions/utility_functions.py +81 -0
- classiq/open_library/functions/variational.py +52 -0
- classiq/qmod/__init__.py +10 -10
- classiq/qmod/builtins/__init__.py +19 -2
- classiq/qmod/builtins/classical_execution_primitives.py +36 -14
- classiq/qmod/builtins/classical_functions.py +39 -43
- classiq/qmod/builtins/constants.py +10 -0
- classiq/qmod/builtins/enums.py +208 -0
- classiq/qmod/builtins/functions/__init__.py +137 -0
- classiq/qmod/builtins/functions/allocation.py +150 -0
- classiq/qmod/builtins/functions/arithmetic.py +55 -0
- classiq/qmod/builtins/functions/benchmarking.py +8 -0
- classiq/qmod/builtins/functions/chemistry.py +91 -0
- classiq/qmod/builtins/functions/exponentiation.py +105 -0
- classiq/qmod/builtins/functions/finance.py +34 -0
- classiq/qmod/builtins/functions/operators.py +16 -0
- classiq/qmod/builtins/functions/qsvm.py +24 -0
- classiq/qmod/builtins/functions/standard_gates.py +651 -0
- classiq/qmod/builtins/operations.py +373 -40
- classiq/qmod/builtins/structs.py +103 -80
- classiq/qmod/cfunc.py +2 -2
- classiq/qmod/classical_function.py +4 -8
- classiq/qmod/cparam.py +64 -0
- classiq/qmod/create_model_function.py +56 -0
- classiq/qmod/declaration_inferrer.py +143 -101
- classiq/qmod/expression_query.py +20 -4
- classiq/qmod/generative.py +42 -0
- classiq/qmod/model_state_container.py +18 -6
- classiq/qmod/native/__init__.py +7 -0
- classiq/qmod/native/expression_to_qmod.py +16 -11
- classiq/qmod/native/pretty_printer.py +187 -97
- classiq/qmod/pretty_print/__init__.py +7 -0
- classiq/qmod/pretty_print/expression_to_python.py +222 -0
- classiq/qmod/pretty_print/pretty_printer.py +572 -0
- classiq/qmod/python_classical_type.py +67 -0
- classiq/qmod/qfunc.py +60 -8
- classiq/qmod/qmod_constant.py +93 -26
- classiq/qmod/qmod_parameter.py +68 -59
- classiq/qmod/qmod_variable.py +468 -155
- classiq/qmod/quantum_callable.py +17 -7
- classiq/qmod/quantum_expandable.py +269 -96
- classiq/qmod/quantum_function.py +196 -41
- classiq/qmod/semantics/__init__.py +0 -0
- classiq/qmod/semantics/annotation/__init__.py +0 -0
- classiq/qmod/semantics/annotation/call_annotation.py +92 -0
- classiq/qmod/semantics/annotation/qstruct_annotator.py +23 -0
- classiq/qmod/semantics/error_manager.py +88 -0
- classiq/qmod/semantics/lambdas.py +25 -0
- classiq/qmod/semantics/static_semantics_visitor.py +384 -0
- classiq/qmod/semantics/validation/__init__.py +0 -0
- classiq/qmod/semantics/validation/constants_validation.py +16 -0
- classiq/qmod/semantics/validation/func_call_validation.py +99 -0
- classiq/qmod/semantics/validation/function_name_collisions_validation.py +23 -0
- classiq/qmod/semantics/validation/handle_validation.py +85 -0
- classiq/qmod/semantics/validation/main_validation.py +33 -0
- classiq/qmod/semantics/validation/types_validation.py +128 -0
- classiq/qmod/symbolic.py +147 -123
- classiq/qmod/symbolic_expr.py +27 -12
- classiq/qmod/symbolic_type.py +2 -5
- classiq/qmod/type_attribute_remover.py +32 -0
- classiq/qmod/utilities.py +98 -4
- classiq/qmod/write_qmod.py +17 -3
- classiq/synthesis.py +210 -22
- {classiq-0.38.0.dist-info → classiq-0.65.4.dist-info}/METADATA +16 -9
- classiq-0.65.4.dist-info/RECORD +521 -0
- classiq/_internals/_qfunc_ext.py +0 -6
- classiq/applications/benchmarking/__init__.py +0 -9
- classiq/applications/benchmarking/mirror_benchmarking.py +0 -70
- classiq/applications/numpy_utils.py +0 -37
- classiq/applications_model_constructors/__init__.py +0 -25
- classiq/applications_model_constructors/combinatorial_helpers/multiple_comp_basis_sp.py +0 -34
- classiq/applications_model_constructors/combinatorial_helpers/pauli_helpers/pauli_utils.py +0 -65
- classiq/applications_model_constructors/combinatorial_helpers/pyomo_utils.py +0 -243
- classiq/applications_model_constructors/libraries/ampltitude_estimation_library.py +0 -11
- classiq/applications_model_constructors/libraries/qmci_library.py +0 -107
- classiq/builtin_functions/__init__.py +0 -43
- classiq/builtin_functions/amplitude_loading.py +0 -3
- classiq/builtin_functions/binary_ops.py +0 -1
- classiq/builtin_functions/exponentiation.py +0 -5
- classiq/builtin_functions/qpe.py +0 -4
- classiq/builtin_functions/qsvm.py +0 -7
- classiq/builtin_functions/range_types.py +0 -5
- classiq/builtin_functions/standard_gates.py +0 -1
- classiq/builtin_functions/state_preparation.py +0 -6
- classiq/builtin_functions/suzuki_trotter.py +0 -3
- classiq/interface/executor/aws_execution_cost.py +0 -73
- classiq/interface/executor/error_mitigation.py +0 -6
- classiq/interface/generator/credit_risk_example/linear_gci.py +0 -122
- classiq/interface/generator/credit_risk_example/weighted_adder.py +0 -69
- classiq/interface/generator/expressions/enums/chemistry.py +0 -28
- classiq/interface/generator/expressions/enums/classical_enum.py +0 -5
- classiq/interface/generator/expressions/enums/ladder_operator.py +0 -16
- classiq/interface/generator/expressions/enums/optimizers.py +0 -9
- classiq/interface/generator/expressions/enums/pauli.py +0 -8
- classiq/interface/generator/expressions/enums/qsvm_feature_map_entanglement.py +0 -9
- classiq/interface/generator/functions/core_lib_declarations/quantum_functions/__init__.py +0 -18
- classiq/interface/generator/functions/core_lib_declarations/quantum_functions/atomic_quantum_functions.py +0 -641
- classiq/interface/generator/functions/core_lib_declarations/quantum_functions/exponentiation_functions.py +0 -89
- classiq/interface/generator/functions/core_lib_declarations/quantum_functions/std_lib_functions.py +0 -1229
- classiq/interface/generator/functions/core_lib_declarations/quantum_operators.py +0 -95
- classiq/interface/generator/functions/foreign_function_definition.py +0 -114
- classiq/interface/generator/functions/function_implementation.py +0 -107
- classiq/interface/generator/functions/native_function_definition.py +0 -155
- classiq/interface/generator/functions/quantum_function_declaration.py +0 -69
- classiq/interface/generator/functions/register.py +0 -44
- classiq/interface/generator/functions/register_mapping_data.py +0 -106
- classiq/interface/generator/inequality_mixer.py +0 -51
- classiq/interface/generator/model/classical_main_validator.py +0 -106
- classiq/interface/generator/range_mixer.py +0 -56
- classiq/interface/generator/state_propagator.py +0 -74
- classiq/interface/generator/types/builtin_struct_declarations/__init__.py +0 -1
- classiq/interface/generator/types/builtin_struct_declarations/pauli_struct_declarations.py +0 -22
- classiq/interface/ide/show.py +0 -34
- classiq/interface/model/call_synthesis_data.py +0 -68
- classiq/interface/model/common_model_types.py +0 -23
- classiq/interface/model/quantum_expressions/control_state.py +0 -38
- classiq/interface/model/quantum_if_operation.py +0 -94
- classiq/interface/model/resolvers/function_call_resolver.py +0 -43
- classiq/interface/model/validations/handle_validation_base.py +0 -55
- classiq/interface/model/validations/handles_validator.py +0 -156
- classiq/interface/model/validations/port_to_wire_name_generator.py +0 -12
- classiq/model/__init__.py +0 -14
- classiq/model/composite_function_generator.py +0 -33
- classiq/model/function_handler.py +0 -462
- classiq/model/logic_flow.py +0 -149
- classiq/model/logic_flow_change_handler.py +0 -71
- classiq/model/model.py +0 -229
- classiq/qmod/builtins/functions.py +0 -913
- classiq/qmod/qmod_struct.py +0 -37
- classiq/quantum_functions/__init__.py +0 -17
- classiq/quantum_functions/annotation_parser.py +0 -205
- classiq/quantum_functions/decorators.py +0 -22
- classiq/quantum_functions/function_library.py +0 -181
- classiq/quantum_functions/function_parser.py +0 -74
- classiq/quantum_functions/quantum_function.py +0 -236
- classiq-0.38.0.dist-info/RECORD +0 -454
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/pauli_helpers/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/pauli_helpers/pauli_sparsing.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/py.typed +0 -0
- /classiq/{applications_model_constructors/combinatorial_helpers/transformations → applications/combinatorial_helpers/solvers}/__init__.py +0 -0
- /classiq/{applications_model_constructors/libraries → applications/combinatorial_helpers/transformations}/__init__.py +0 -0
- /classiq/{interface/generator/credit_risk_example → applications/hamiltonian}/__init__.py +0 -0
- /classiq/{interface/generator/functions/core_lib_declarations → applications/libraries}/__init__.py +0 -0
- /classiq/interface/{model/resolvers → debug_info}/__init__.py +0 -0
- /classiq/{_internals → interface}/enum_utils.py +0 -0
- /classiq/interface/{model/validations → generator/functions/builtins}/__init__.py +0 -0
- /classiq/{interface/generator/functions/core_lib_declarations/quantum_functions/chemistry_functions.py → model_expansions/__init__.py} +0 -0
- {classiq-0.38.0.dist-info → classiq-0.65.4.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
|