classiq 0.38.0__py3-none-any.whl → 0.39.0__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 +21 -22
- classiq/_internals/api_wrapper.py +13 -1
- classiq/_internals/client.py +12 -2
- classiq/analyzer/analyzer.py +3 -1
- classiq/applications/__init__.py +1 -8
- classiq/applications/chemistry/__init__.py +6 -0
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/arithmetic_expression.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/combinatorial_problem_utils.py +26 -6
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_mapping.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/encoding_utils.py +1 -1
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/memory.py +2 -4
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/optimization_model.py +6 -10
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/pauli_helpers/pauli_utils.py +10 -0
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/pyomo_utils.py +4 -2
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/encoding.py +3 -10
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/fixed_variables.py +4 -6
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/ising_converter.py +3 -5
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty_support.py +3 -7
- classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/slack_variables.py +4 -6
- classiq/applications/combinatorial_optimization/__init__.py +9 -3
- classiq/{applications_model_constructors → applications/combinatorial_optimization}/combinatorial_optimization_model_constructor.py +7 -8
- classiq/applications/finance/__init__.py +3 -2
- classiq/{applications_model_constructors → applications/finance}/finance_model_constructor.py +24 -14
- classiq/applications/grover/__init__.py +11 -0
- classiq/applications/libraries/qmci_library.py +35 -0
- classiq/applications/qsvm/__init__.py +5 -1
- classiq/execution/all_hardware_devices.py +13 -0
- classiq/executor.py +2 -1
- classiq/interface/_version.py +1 -1
- classiq/interface/analyzer/result.py +1 -5
- classiq/interface/applications/qsvm.py +4 -2
- classiq/interface/ast_node.py +23 -0
- classiq/interface/combinatorial_optimization/examples/mht.py +8 -3
- classiq/interface/executor/execution_request.py +2 -37
- classiq/interface/executor/vqe_result.py +1 -1
- classiq/interface/generator/builtin_api_builder.py +0 -5
- classiq/interface/generator/constant.py +2 -3
- classiq/interface/generator/expressions/expression.py +2 -4
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py +1 -1
- classiq/interface/generator/functions/__init__.py +2 -2
- classiq/interface/generator/functions/builtins/__init__.py +15 -0
- classiq/interface/generator/functions/builtins/core_library/__init__.py +14 -0
- classiq/interface/generator/functions/builtins/internal_operators.py +62 -0
- classiq/interface/generator/functions/{core_lib_declarations/quantum_functions/std_lib_functions.py → builtins/open_lib_functions.py} +109 -83
- classiq/interface/generator/functions/builtins/quantum_operators.py +37 -0
- classiq/interface/generator/functions/classical_type.py +2 -4
- classiq/interface/generator/functions/function_declaration.py +2 -2
- classiq/interface/generator/hartree_fock.py +10 -2
- classiq/interface/generator/model/classical_main_validator.py +1 -1
- classiq/interface/generator/model/model.py +1 -1
- classiq/interface/generator/quantum_function_call.py +1 -1
- classiq/interface/generator/types/struct_declaration.py +2 -4
- classiq/interface/model/call_synthesis_data.py +3 -3
- classiq/interface/model/classical_if.py +13 -0
- classiq/interface/model/classical_parameter_declaration.py +2 -3
- classiq/interface/model/control.py +16 -0
- classiq/interface/model/handle_binding.py +3 -2
- classiq/interface/model/invert.py +10 -0
- classiq/interface/model/model.py +2 -1
- classiq/interface/model/power.py +12 -0
- classiq/interface/model/quantum_function_call.py +9 -4
- classiq/interface/model/quantum_if_operation.py +3 -3
- classiq/interface/model/quantum_lambda_function.py +3 -9
- classiq/interface/model/quantum_statement.py +3 -2
- classiq/interface/model/quantum_type.py +2 -4
- classiq/interface/model/quantum_variable_declaration.py +2 -2
- classiq/interface/model/repeat.py +13 -0
- classiq/interface/model/resolvers/function_call_resolver.py +26 -0
- classiq/interface/model/statement_block.py +21 -4
- classiq/interface/model/validations/handles_validator.py +8 -12
- classiq/interface/model/within_apply_operation.py +4 -4
- classiq/interface/server/routes.py +0 -4
- classiq/qmod/builtins/classical_functions.py +9 -9
- classiq/qmod/builtins/functions.py +153 -226
- classiq/qmod/builtins/operations.py +160 -13
- classiq/qmod/native/pretty_printer.py +49 -20
- classiq/qmod/qmod_constant.py +26 -2
- classiq/qmod/qmod_parameter.py +2 -1
- classiq/qmod/qmod_variable.py +48 -15
- classiq/qmod/quantum_callable.py +1 -0
- classiq/qmod/quantum_expandable.py +6 -7
- classiq/qmod/quantum_function.py +4 -0
- classiq/qmod/symbolic.py +2 -2
- {classiq-0.38.0.dist-info → classiq-0.39.0.dist-info}/METADATA +1 -1
- {classiq-0.38.0.dist-info → classiq-0.39.0.dist-info}/RECORD +107 -124
- 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/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/generator/functions/core_lib_declarations/quantum_functions/__init__.py +0 -18
- classiq/interface/generator/functions/core_lib_declarations/quantum_operators.py +0 -95
- 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/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/{applications_model_constructors → applications/chemistry}/chemistry_model_constructor.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/allowed_constraints.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/arithmetic/isolation.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 → applications}/combinatorial_helpers/sympy_utils.py +0 -0
- /classiq/{applications_model_constructors/libraries → applications/combinatorial_helpers/transformations}/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/penalty.py +0 -0
- /classiq/{applications_model_constructors → applications}/combinatorial_helpers/transformations/sign_seperation.py +0 -0
- /classiq/{applications_model_constructors → applications/grover}/grover_model_constructor.py +0 -0
- /classiq/{interface/generator/functions/core_lib_declarations → applications/libraries}/__init__.py +0 -0
- /classiq/{applications_model_constructors → applications}/libraries/ampltitude_estimation_library.py +0 -0
- /classiq/{applications_model_constructors → applications/qsvm}/qsvm_model_constructor.py +0 -0
- /classiq/interface/generator/functions/{core_lib_declarations/quantum_functions → builtins/core_library}/atomic_quantum_functions.py +0 -0
- /classiq/interface/generator/functions/{core_lib_declarations/quantum_functions → builtins/core_library}/chemistry_functions.py +0 -0
- /classiq/interface/generator/functions/{core_lib_declarations/quantum_functions → builtins/core_library}/exponentiation_functions.py +0 -0
- /classiq/{quantum_register.py → interface/model/quantum_register.py} +0 -0
- {classiq-0.38.0.dist-info → classiq-0.39.0.dist-info}/WHEEL +0 -0
@@ -1,74 +0,0 @@
|
|
1
|
-
import sys
|
2
|
-
from types import FunctionType, MethodType
|
3
|
-
from typing import Any, Callable, Tuple, _GenericAlias # type: ignore[attr-defined]
|
4
|
-
|
5
|
-
if sys.version_info >= (3, 9):
|
6
|
-
from types import GenericAlias
|
7
|
-
else:
|
8
|
-
GenericAlias = _GenericAlias
|
9
|
-
|
10
|
-
|
11
|
-
from classiq.exceptions import ClassiqQFuncError
|
12
|
-
|
13
|
-
|
14
|
-
class FunctionParser:
|
15
|
-
def __init__(self, func: FunctionType) -> None:
|
16
|
-
self._func = func
|
17
|
-
|
18
|
-
@staticmethod
|
19
|
-
def _extract_function_output_by_execution(func: FunctionType) -> Any:
|
20
|
-
# Todo: Parse the type (annotations) of the arguments, and remove only those inheriting from QReg
|
21
|
-
if func.__code__.co_kwonlyargcount:
|
22
|
-
raise ClassiqQFuncError("kw only args are not supported")
|
23
|
-
|
24
|
-
arg_count = func.__code__.co_argcount - ("self" in func.__code__.co_varnames)
|
25
|
-
nones = [None] * arg_count
|
26
|
-
return func(*nones)
|
27
|
-
|
28
|
-
def extract_function_output(self) -> Any:
|
29
|
-
output = self._extract_function_output_by_execution(func=self._func)
|
30
|
-
|
31
|
-
self._validate_function_output(output)
|
32
|
-
|
33
|
-
return output
|
34
|
-
|
35
|
-
@staticmethod
|
36
|
-
def _validate_function_output(output: Any) -> None:
|
37
|
-
# Todo: validate QASM
|
38
|
-
|
39
|
-
if not isinstance(output, str):
|
40
|
-
raise ClassiqQFuncError(
|
41
|
-
"Invalid output. Please return a string of OpenQASM2.0."
|
42
|
-
)
|
43
|
-
|
44
|
-
|
45
|
-
def _convert_class_to_function(cls: type) -> Tuple[FunctionType, str]:
|
46
|
-
# Create instance
|
47
|
-
try:
|
48
|
-
inst = cls()
|
49
|
-
except TypeError as exc:
|
50
|
-
raise ClassiqQFuncError("Unable to initialize class") from exc
|
51
|
-
|
52
|
-
return inst.__call__, inst.__class__.__name__
|
53
|
-
|
54
|
-
|
55
|
-
def convert_callable_to_function(func: Callable) -> Tuple[FunctionType, str]:
|
56
|
-
# There's a story to be told here:
|
57
|
-
# Functions vs Methods.
|
58
|
-
# It's a centuries old fight, which won't end soon..
|
59
|
-
# Functions, being functions, always have a way of telling us about their functionality
|
60
|
-
# This is done using `func.__code__`
|
61
|
-
# Methods, being the heigher form of functions, are too proud to have a `__code__` attribute.
|
62
|
-
# Thus, `"__code__" in method` is false
|
63
|
-
# However, `method.__code__` exists
|
64
|
-
# Since it is inherited from the class that initialized the instance who owns the method
|
65
|
-
# Thus, we reach the important conclusion:
|
66
|
-
# Methods are shy functions. They are functions, but they don't like telling us that they're functions.
|
67
|
-
if not callable(func):
|
68
|
-
raise ClassiqQFuncError("Invalid callable given.")
|
69
|
-
|
70
|
-
if isinstance(func, (FunctionType, MethodType)):
|
71
|
-
return func, func.__name__ # type: ignore[return-value]
|
72
|
-
|
73
|
-
# Assuming `func` is an instance of some class
|
74
|
-
return _convert_class_to_function(func) # type: ignore[arg-type]
|
@@ -1,236 +0,0 @@
|
|
1
|
-
import sys
|
2
|
-
from abc import ABC, abstractmethod
|
3
|
-
from types import FunctionType
|
4
|
-
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
|
5
|
-
|
6
|
-
from classiq.interface.generator.functions import (
|
7
|
-
FunctionImplementation,
|
8
|
-
Register,
|
9
|
-
RegisterMappingData,
|
10
|
-
SynthesisForeignFunctionDefinition,
|
11
|
-
)
|
12
|
-
from classiq.interface.generator.register_role import RegisterRole as Role
|
13
|
-
|
14
|
-
from classiq.exceptions import ClassiqError
|
15
|
-
|
16
|
-
# This line is ignored because the entire annotation_parser module is ignored by mypy
|
17
|
-
from classiq.quantum_functions.annotation_parser import ( # type: ignore[attr-defined]
|
18
|
-
AnnotationParser,
|
19
|
-
get_annotation_role,
|
20
|
-
)
|
21
|
-
from classiq.quantum_functions.function_parser import (
|
22
|
-
FunctionParser,
|
23
|
-
convert_callable_to_function,
|
24
|
-
)
|
25
|
-
|
26
|
-
# isort: split
|
27
|
-
from typing import _GenericAlias # type: ignore[attr-defined]
|
28
|
-
|
29
|
-
from classiq.quantum_register import QRegGenericAlias
|
30
|
-
|
31
|
-
if sys.version_info >= (3, 9):
|
32
|
-
from types import GenericAlias
|
33
|
-
else:
|
34
|
-
GenericAlias = _GenericAlias
|
35
|
-
|
36
|
-
|
37
|
-
class QuantumFunction:
|
38
|
-
def __init__(self) -> None:
|
39
|
-
self._function_data: Optional[SynthesisForeignFunctionDefinition] = None
|
40
|
-
|
41
|
-
@staticmethod
|
42
|
-
def _generate_single_register(
|
43
|
-
first_qubit: int, name: str, obj: GenericAlias
|
44
|
-
) -> Register:
|
45
|
-
qreg_size = obj.size
|
46
|
-
|
47
|
-
qubits = tuple(range(first_qubit, first_qubit + qreg_size))
|
48
|
-
|
49
|
-
return Register(
|
50
|
-
name=name,
|
51
|
-
qubits=qubits,
|
52
|
-
)
|
53
|
-
|
54
|
-
@classmethod
|
55
|
-
def _generate_registers(
|
56
|
-
cls,
|
57
|
-
input_names: Sequence[str],
|
58
|
-
input_values: Sequence[QRegGenericAlias],
|
59
|
-
output_values: Sequence[QRegGenericAlias],
|
60
|
-
) -> Dict[Role, Tuple[Register, ...]]:
|
61
|
-
registers: Dict[Role, List[Register]] = {k: list() for k in Role}
|
62
|
-
|
63
|
-
qubit_counter = 0
|
64
|
-
for input_name, input_annotation in zip(input_names, input_values):
|
65
|
-
role = get_annotation_role(
|
66
|
-
annotation=input_annotation, default_role=Role.INPUT
|
67
|
-
)
|
68
|
-
|
69
|
-
registers[role].append(
|
70
|
-
cls._generate_single_register(
|
71
|
-
first_qubit=qubit_counter,
|
72
|
-
name=input_name,
|
73
|
-
obj=input_annotation,
|
74
|
-
)
|
75
|
-
)
|
76
|
-
|
77
|
-
if input_annotation.size is None:
|
78
|
-
raise ClassiqError("Missing size in input annotation")
|
79
|
-
|
80
|
-
qubit_counter += input_annotation.size
|
81
|
-
|
82
|
-
qubit_counter = 0
|
83
|
-
for input_name, output_annotation in zip(input_names, output_values):
|
84
|
-
role = get_annotation_role(
|
85
|
-
annotation=output_annotation, default_role=Role.OUTPUT
|
86
|
-
)
|
87
|
-
|
88
|
-
if output_annotation.size is None:
|
89
|
-
raise ClassiqError("Missing size in input annotation")
|
90
|
-
|
91
|
-
if role == Role.AUXILIARY:
|
92
|
-
qubit_counter += output_annotation.size
|
93
|
-
continue
|
94
|
-
|
95
|
-
registers[role].append(
|
96
|
-
cls._generate_single_register(
|
97
|
-
first_qubit=qubit_counter,
|
98
|
-
name=input_name,
|
99
|
-
obj=output_annotation,
|
100
|
-
)
|
101
|
-
)
|
102
|
-
qubit_counter += output_annotation.size
|
103
|
-
|
104
|
-
return {k: tuple(v) for k, v in registers.items()}
|
105
|
-
|
106
|
-
@classmethod
|
107
|
-
def _create_implementation_from_function(
|
108
|
-
cls,
|
109
|
-
func: FunctionType,
|
110
|
-
func_name: str,
|
111
|
-
auxiliary_registers: Tuple[Register, ...],
|
112
|
-
) -> FunctionImplementation:
|
113
|
-
# Return value
|
114
|
-
fp = FunctionParser(func)
|
115
|
-
serialized_circuit = fp.extract_function_output()
|
116
|
-
|
117
|
-
implementation = FunctionImplementation(
|
118
|
-
name=func_name,
|
119
|
-
serialized_circuit=serialized_circuit,
|
120
|
-
auxiliary_registers=auxiliary_registers,
|
121
|
-
)
|
122
|
-
return implementation
|
123
|
-
|
124
|
-
def add_implementation(
|
125
|
-
self, func: Callable, name: Optional[str] = None
|
126
|
-
) -> "QuantumFunction":
|
127
|
-
func, func_name = convert_callable_to_function(func=func)
|
128
|
-
func_name = name or func_name
|
129
|
-
|
130
|
-
# Annotations
|
131
|
-
ap = AnnotationParser(func)
|
132
|
-
ap.parse()
|
133
|
-
|
134
|
-
registers: Dict[Role, Tuple[Register, ...]] = self._generate_registers(
|
135
|
-
input_names=ap.input_names,
|
136
|
-
input_values=ap.input_values,
|
137
|
-
output_values=ap.output_values,
|
138
|
-
)
|
139
|
-
|
140
|
-
implementation = self._create_implementation_from_function(
|
141
|
-
func=func,
|
142
|
-
func_name=func_name,
|
143
|
-
auxiliary_registers=registers[Role.AUXILIARY],
|
144
|
-
)
|
145
|
-
|
146
|
-
if self._function_data is None:
|
147
|
-
self._function_data = SynthesisForeignFunctionDefinition(
|
148
|
-
name=func_name,
|
149
|
-
implementations=(implementation,),
|
150
|
-
register_mapping=RegisterMappingData.from_registers_dict(
|
151
|
-
regs_dict=registers
|
152
|
-
),
|
153
|
-
)
|
154
|
-
else:
|
155
|
-
self._function_data.register_mapping.validate_equal_mappings(
|
156
|
-
RegisterMappingData.from_registers_dict(regs_dict=registers)
|
157
|
-
)
|
158
|
-
current_implementations = self._function_data.implementations or tuple()
|
159
|
-
new_implementations = current_implementations + (implementation,)
|
160
|
-
implementation.validate_ranges_of_all_registers(
|
161
|
-
self._function_data.register_mapping
|
162
|
-
)
|
163
|
-
self._function_data = SynthesisForeignFunctionDefinition(
|
164
|
-
name=self._function_data.name,
|
165
|
-
register_mapping=self._function_data.register_mapping,
|
166
|
-
implementations=new_implementations,
|
167
|
-
)
|
168
|
-
|
169
|
-
return self
|
170
|
-
|
171
|
-
@property
|
172
|
-
def function_data(self) -> SynthesisForeignFunctionDefinition:
|
173
|
-
if self._function_data is None:
|
174
|
-
raise ClassiqError("Access to uninitialized function data")
|
175
|
-
|
176
|
-
return self._function_data
|
177
|
-
|
178
|
-
@function_data.setter
|
179
|
-
def function_data(
|
180
|
-
self, new_function_data: SynthesisForeignFunctionDefinition
|
181
|
-
) -> None:
|
182
|
-
self._function_data = new_function_data
|
183
|
-
|
184
|
-
|
185
|
-
class QuantumFunctionFactoryBadUsageError(Exception):
|
186
|
-
def __init__(self, msg: str) -> None:
|
187
|
-
self.message = f"{msg} Please call QuantumFunctionFactory.__init__ after initializing all user params."
|
188
|
-
super().__init__(self.message)
|
189
|
-
|
190
|
-
|
191
|
-
class QuantumFunctionFactory(ABC):
|
192
|
-
"""
|
193
|
-
Provides the capability of creating parametrized user-defined functions.
|
194
|
-
"""
|
195
|
-
|
196
|
-
def __init__(self, add_method: Callable, apply_method: Callable) -> None:
|
197
|
-
self._apply_method = apply_method
|
198
|
-
try:
|
199
|
-
definition = self.definition
|
200
|
-
except AttributeError as e:
|
201
|
-
raise QuantumFunctionFactoryBadUsageError(
|
202
|
-
f"{self.__class__.__name__} instance definition parsing failed."
|
203
|
-
) from e
|
204
|
-
definition.function_data = definition.function_data.renamed(str(self))
|
205
|
-
add_method(definition)
|
206
|
-
|
207
|
-
def __str__(self) -> str:
|
208
|
-
str_list = [self.__class__.__name__.lower()]
|
209
|
-
str_list.extend(
|
210
|
-
f"{k}_{abs(hash(str(v)))}"
|
211
|
-
for k, v in self.__dict__.items()
|
212
|
-
if k != "_apply_method"
|
213
|
-
)
|
214
|
-
return "_".join(str_list)
|
215
|
-
|
216
|
-
def __call__(self, *args: Any, **kwargs: Any) -> Any:
|
217
|
-
try:
|
218
|
-
return self._apply_method(str(self), *args, **kwargs)
|
219
|
-
except AttributeError as e:
|
220
|
-
raise QuantumFunctionFactoryBadUsageError(
|
221
|
-
f"Could not call {self.__class__.__name__}."
|
222
|
-
) from e
|
223
|
-
|
224
|
-
@property
|
225
|
-
@abstractmethod
|
226
|
-
def definition(self) -> QuantumFunction:
|
227
|
-
"""
|
228
|
-
Abstract method for providing the definition of the user function.
|
229
|
-
The QuantumFunction object may be generated either directly, or using existing
|
230
|
-
helper tools such as the @quantum_function decorator.
|
231
|
-
Instance attributes of the QuantumFunctionFactory may be used as parameters for the
|
232
|
-
definition.
|
233
|
-
|
234
|
-
Returns:
|
235
|
-
The user-defined QuantumFunction object.
|
236
|
-
"""
|
/classiq/{applications_model_constructors → applications/chemistry}/chemistry_model_constructor.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/classiq/{applications_model_constructors → applications}/combinatorial_helpers/sympy_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/classiq/{applications_model_constructors → applications/grover}/grover_model_constructor.py
RENAMED
File without changes
|
/classiq/{interface/generator/functions/core_lib_declarations → applications/libraries}/__init__.py
RENAMED
File without changes
|
/classiq/{applications_model_constructors → applications}/libraries/ampltitude_estimation_library.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|