pyqres.primitives¶
门操作¶
新门 (Phase 2)¶
- class pyqres.primitives.gates.Hadamard_Bool(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveHadamard gate on a single boolean qubit.
Maps |0⟩ → (|0⟩+|1⟩)/√2, |1⟩ → (|0⟩−|1⟩)/√2. Self-conjugate: H† = H.
- class pyqres.primitives.gates.Hadamard_PartialQubit(reg_list, param_list)[源代码]¶
基类:
PrimitiveHadamard on a subset of qubits within a register.
- 参数:
reg_list -- [register_name]
param_list -- [set of qubit positions (int)] e.g. {0, 2}
- class pyqres.primitives.gates.Sgate(reg_list, param_list=None)[源代码]¶
基类:
PrimitivePhase gate S = diag(1, i) on a boolean qubit.
Also known as P-gate or Phase gate. Clifford: T-count = 0.
- class pyqres.primitives.gates.Tgate(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveT gate = diag(1, e^{iπ/4}) on a boolean qubit.
Non-Clifford. T-count = 4 (fourth root of Z).
- class pyqres.primitives.gates.SXgate(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveSquare-root of X gate: SX = √X = [[1+i, 1-i], [1-i, 1+i]]/2.
Non-Clifford (depth-2 from T/T†).
- class pyqres.primitives.gates.U2gate(reg_list, param_list)[源代码]¶
基类:
PrimitiveTwo-parameter unitary gate U2(φ, λ) = [[1, e^{iλ}], [e^{iφ}, -e^{i(φ+λ)]]]/√2.
- 参数:
reg_list -- [register_name]
param_list -- [digit_position, phi, lambda_]
- class pyqres.primitives.gates.Swap_Bool_Bool(reg_list, param_list)[源代码]¶
基类:
PrimitiveSwap two individual boolean qubits in different registers.
- 参数:
reg_list -- [register1, register2]
param_list -- [digit1, digit2]
算术操作¶
- class pyqres.primitives.arithmetic.Add_UInt_UInt_InPlace(reg_list, param_list=None)[源代码]¶
基类:
Primitive
- class pyqres.primitives.arithmetic.Swap_General_General(reg_list, param_list=None)[源代码]¶
基类:
Primitive
新算术操作 (Phase 2)¶
- class pyqres.primitives.arithmetic.Add_Mult_UInt_ConstUInt(reg_list, param_list)[源代码]¶
基类:
PrimitiveMultiply-add: output = input * multiplier + add_const.
Computes output = input * multiplier + add_const in a single fused operation. Used in block encoding and Shor's algorithm.
- class pyqres.primitives.arithmetic.AddAssign_AnyInt_AnyInt(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveIn-place addition: dst += src on arbitrary integer types.
Type-flexible in-place addition across Integer register types. Used in CKS TOperator for column position finding.
- class pyqres.primitives.arithmetic.CustomArithmetic(reg_list, param_list)[源代码]¶
基类:
PrimitiveCustom classical arithmetic function applied as a quantum operation.
- 参数:
reg_list -- [reg1, reg2, ...] - input and output registers
param_list -- [func, in_sz, out_sz] func: callable f(input_values) -> output_values in_sz: total input bit size out_sz: total output bit size
Used in Shor's modular exponentiation.
- class pyqres.primitives.arithmetic.PlusOneAndOverflow(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveIncrement a register by 1, with separate overflow flag qubit.
Used in block encoding for carry/borrow logic. Inverse = MinusOneAndOverflow (different op, use dagger).
- class pyqres.primitives.arithmetic.GetDataAddr(reg_list, param_list)[源代码]¶
基类:
PrimitiveCompute XOR-based data address for QRAM access.
data_addr ^= data_offset + row * row_size + col Self-adjoint: applying twice cancels (XOR property). Used in CKS TOperator for matrix element loading.
QEC 中间层 Primitive¶
这些 primitive 是 pyqres 与 QEC-compiler 第一版联调使用的冻结中间层。
它们可以通过 pyqres.core.lowering.to_abstract_circuit lowering 为
QEC-compiler AbstractGate,并由 QEC-compiler 继续分解到
MCX/Clifford/rotation/CCZ 路径。
- class pyqres.primitives.intermediate.MCX(reg_list=None, param_list=None)[源代码]¶
基类:
PrimitiveMulti-controlled X gate. Maps directly to AbstractGate('MCX').
- class pyqres.primitives.intermediate.ADD(reg_list=None, param_list=None)[源代码]¶
基类:
PrimitiveN-bit ripple-carry adder. Maps to AbstractGate('ADD', (n_bits,)).
- class pyqres.primitives.intermediate.PLUS_ONE(reg_list=None, param_list=None)[源代码]¶
基类:
PrimitiveIncrement circuit. Maps to AbstractGate('PLUS_ONE', (n_bits,)).
- class pyqres.primitives.intermediate.REFLECT(reg_list=None, param_list=None)[源代码]¶
基类:
PrimitiveMulti-controlled Z (reflection). Maps to AbstractGate('REFLECT', (n_bits,)).
- class pyqres.primitives.intermediate.MOD_ADD(reg_list=None, param_list=None)[源代码]¶
基类:
PrimitiveModular addition a+b mod N. Maps to AbstractGate('MOD_ADD', (modulus,)).
寄存器操作¶
- class pyqres.primitives.register_ops.SplitRegister(reg_list, param_list)[源代码]¶
基类:
PrimitiveSplit a register into sub-registers, or merge them back on dagger.
新寄存器操作 (Phase 2)¶
- class pyqres.primitives.register_ops.AddRegister(reg_list, param_list)[源代码]¶
基类:
PrimitiveAdd a new quantum register to the system.
Registers must be declared before they can be used in other operations. Note: this is a system management operation, not a quantum gate. T-count = 0.
- class pyqres.primitives.register_ops.AddRegisterWithHadamard(reg_list, param_list)[源代码]¶
基类:
PrimitiveAdd a new quantum register initialized with Hadamard superposition.
Equivalent to AddRegister + Hadamard on all qubits. T-count = 0.
- class pyqres.primitives.register_ops.RemoveRegister(reg_list, param_list)[源代码]¶
基类:
PrimitiveRemove a quantum register from the system.
Note: this is a system management operation. T-count = 0.
变换操作¶
态制备¶
QRAM¶
- class pyqres.primitives.qram.QRAM(reg_list, param_list)[源代码]¶
基类:
PrimitiveQuantum random-access memory load primitive (DISABLED).
Once implemented, will load data from a QRAM circuit at the address in addr_reg into data_reg. Currently raises NotImplementedError on all operational methods.
条件旋转¶
- class pyqres.primitives.cond_rot.CondRot_General_Bool(reg_list, param_list=None, angle_function=None)[源代码]¶
基类:
PrimitiveConditional rotation based on rational value register.
Supports two forms: - 2-arg (resource estimation only): reg_list=[cond_reg, target_reg] - 3-arg (simulation): reg_list=[cond_reg, target_reg], param_list=[angle_function]
where angle_function is a Callable[[int], list[complex]].
pysparq requires the 3-arg form: CondRot_General_Bool(reg_in, reg_out, angle_function). angle_function receives the register value and returns a 2x2 unitary matrix.
- class pyqres.primitives.cond_rot.CondRot_General_Bool_QW(reg_list, param_list)[源代码]¶
基类:
PrimitiveConditional rotation for quantum walk operations.
Similar to CondRot_General_Bool but optimized for quantum walk style amplitude loading with 2x2 rotation matrices. Uses CondRot_Rational_Bool internally with a matrix-structured angle function.
- class pyqres.primitives.cond_rot.ZeroConditionalPhaseFlip(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveApply phase flip to states where all specified qubits are zero.
- class pyqres.primitives.cond_rot.RangeConditionalPhaseFlip(reg_list, param_list)[源代码]¶
基类:
PrimitiveApply phase flip to states in a specified range.
- class pyqres.primitives.cond_rot.CondRot_Rational_Bool(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveConditional rotation using rational (fractional) angle encoding.
Applies a rotation to the target qubit based on the rational value in the input register. Used in CKS quantum walk and block encoding.
Note: pysparq marks this as self-adjoint (CondRot_Rational_Bool† = CondRot_Rational_Bool).
- class pyqres.primitives.cond_rot.Rot_GeneralUnitary(reg_list, param_list)[源代码]¶
基类:
PrimitiveGeneral unitary rotation specified by an arbitrary 2x2 complex matrix.
- 参数:
reg_list -- [register_name]
param_list -- [unitary_matrix] where unitary_matrix is a 4-element list [a, b, c, d] representing [[a, b], [c, d]].
Used in block encoding for arbitrary rotation angles.
测量¶
- class pyqres.primitives.measurement.PartialTrace(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveTrace out specified registers from the quantum state.
Removes (traces over) the degrees of freedom of given registers, producing a reduced density matrix for the remaining registers. T-count = 0.
- class pyqres.primitives.measurement.PartialTraceSelect(reg_list, param_list)[源代码]¶
基类:
PrimitiveSelectively trace out registers based on their values.
Keeps only basis states where each named register has the specified value. T-count = 0.
- class pyqres.primitives.measurement.PartialTraceSelectRange(reg_list, param_list)[源代码]¶
基类:
PrimitiveTrace out registers in a specified range of values.
Keeps only basis states where the register value falls within [low, high]. T-count = 0.
- class pyqres.primitives.measurement.Prob(reg_list, param_list=None)[源代码]¶
基类:
PrimitiveCompute measurement probabilities for the current quantum state.
Returns the probability distribution over basis states. T-count = 0 (classical post-processing).