QkTargetEntry
typedef struct QkTargetEntry QkTargetEntryUn mapeo de argumentos qubit y propiedades que representan el mapa de puertas del Objetivo. Esta función se utiliza debido a que no se dispone de mapeados nativos válidos desde C.
He aquí un ejemplo de cómo funciona esta estructura:
#include <qiskit.h>
#include <math.h>
// Create a Target Entry for a CX Gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
// Set a name for the entry
qk_target_entry_set_name(entry, "cx_gate");
// Add mapping between (0,1) and properties duration of 10e-9 and unknown error.
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 10e-9, NAN);
// Add mapping between Global, and no set duration NAN and error of 0.003)
qk_target_entry_add_property(entry, NULL, 0, NAN, 0.003);Funciones
qk_target_entry_new
QkTargetEntry *qk_target_entry_new(QkGate operation)
Crea una entrada en QkTarget basada en una instancia de QkGate .
Ejemplo
QkTargetEntry *had_entry = qk_target_entry_new(QkGate_H);Parámetros
- operation - El
QkGatecuyas propiedades define esta entrada de destino. SiQkGateacepta parámetros (lo que puede comprobarse conqk_gate_num_params) se añadirá como una instrucción en el destino que acepta cualquier valor de parámetro. Si la puerta sólo acepta un valor de parámetro fijo, puede utilizarqk_target_entry_new_fixeden su lugar.
Devuelve
Un puntero a la nueva QkTargetEntry.
qk_target_entry_new_measure
QkTargetEntry *qk_target_entry_new_measure(void)
Crea una nueva entrada para añadir una instrucción de medición a QkTarget.
Ejemplo
QkTargetEntry *entry = qk_target_entry_new_measure();
// Add fixed duration and error rates from qubits at index 0 to 4.
for (uint32_t i = 0; i < 5; i++) {
// Measure is a single qubit instruction
uint32_t qargs[1] = {i};
qk_target_entry_add_property(entry, qargs, 1, 1.928e-10, 7.9829e-11);
}
// Add the entry to a target with 5 qubits
QkTarget *measure_target = qk_target_new(5);
qk_target_add_instruction(measure_target, entry);Devuelve
Un puntero a la nueva QkTargetEntry para una instrucción de medición.
qk_target_entry_new_reset
QkTargetEntry *qk_target_entry_new_reset(void)
Crea una nueva entrada para añadir una instrucción reset a QkTarget.
Ejemplo
QkTargetEntry *entry = qk_target_entry_new_reset();
// Add fixed duration and error rates from qubits at index 0 to 2.
for (uint32_t i = 0; i < 3; i++) {
// Reset is a single qubit instruction
uint32_t qargs[1] = {i};
qk_target_entry_add_property(entry, qargs, 1, 1.2e-11, 5.9e-13);
}
// Add the entry to a target with 3 qubits
QkTarget *reset_target = qk_target_new(3);
qk_target_add_instruction(reset_target, entry);Devuelve
Un puntero a la nueva QkTargetEntry para una instrucción de reinicio.
qk_target_entry_new_fixed
QkTargetEntry *qk_target_entry_new_fixed(QkGate operation, double *params, const char *name)
Crea una entrada en QkTarget a partir de una instancia de QkGate sin parámetros.
Ejemplo
double crx_params[1] = {3.14};
QkTargetEntry *entry = qk_target_entry_new_fixed(QkGate_CRX, crx_params, "crx_fixed")";Seguridad
Se espera que el tipo params sea un puntero a una matriz de double cuya longitud coincida con las expectativas de QkGate. Si el array no es suficientemente largo, el comportamiento de esta función es indefinido, ya que leerá fuera de los límites del array. Puede ser un puntero nulo si no hay parámetros para una puerta determinada. Puede consultar qk_gate_num_params para determinar cuántos qubits se necesitan para una puerta determinada.
Se espera que el name puntero sea una cadena C compuesta por caracteres válidos UTF-8 o un puntero nulo.
Actualmente no es posible añadir un QkGate con parámetros regulares.
Parámetros
- operation - El
QkGatecuyas propiedades define esta entrada de destino. - params - Un puntero a los parámetros para los que se calibra la instrucción.
- nombre : nombre opcional para la instrucción en el destino. Si se proporciona un puntero nulo, la entrada utilizará el nombre predeterminado de la operación.
Devuelve
Un puntero a la nueva QkTargetEntry.
qk_target_entry_num_properties
size_t qk_target_entry_num_properties(const QkTargetEntry *entry)
Recupera el número de propiedades almacenadas en la entrada de destino.
Ejemplo
// Create an entry for an H gate
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
size_t props_size = qk_target_entry_num_properties(entry);Seguridad
El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .
Parámetros
- entry - El puntero al objeto de asignación.
Devuelve
El número de propiedades en QkTargetEntry.
qk_target_entry_free
void qk_target_entry_free(QkTargetEntry *entry)
Libera la entrada.
Ejemplo
QkTargetEntry *entry = qk_target_entry_new(QkGate_H);
qk_target_entry_free(entry);Seguridad
El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .
Se liberará un puntero de entrada cuando se añada a un QkTarget a través de qk_target_add_instruction, esta función sólo está pensada para ser utilizada alternativamente si nunca se añade una entrada a una instancia de QkTarget .
Parámetros
- entry - El puntero al objeto de asignación que se va a liberar.
qk_target_entry_add_property
QkExitCode qk_target_entry_add_property(QkTargetEntry *entry, uint32_t *qargs, uint32_t num_qubits, double duration, double error)
Añade una instancia de propiedad de instrucción basada en sus qargs asignados.
Ejemplo
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
uint32_t qargs[2] = {0, 1};
qk_target_entry_add_property(entry, qargs, 2, 0.0, 0.1);Seguridad
El comportamiento es indefinido si entry no es un puntero válido y no nulo a un objeto QkTargetEntry .
Parámetros
- entry - El puntero al objeto entry.
- qargs - Un puntero a la matriz de
uint32_tíndices qubit para añadir la puerta, puede ser un puntero nulo para comprobar las propiedades globales. - num_qubits - La longitud de la matriz qargs.
- duración - La duración de la instrucción en segundos en el conjunto específico de qubits.
- error - La tasa de error media de la instrucción en el conjunto específico de qubits.
Devuelve
Un código de salida.
qk_target_entry_set_name
QkExitCode qk_target_entry_set_name(QkTargetEntry *entry, const char *name)
Establece un nombre personalizado para la entrada de destino.
Ejemplo
QkTargetEntry *entry = qk_target_entry_new(QkGate_CX);
qk_target_entry_set_name(entry, "cx_gate");Seguridad
El comportamiento es indefinido si no entry es un puntero válido y distinto de nulo a un QkTargetEntry objeto. Se espera que el name puntero sea una cadena C compuesta por caracteres válidos UTF-8 o un puntero nulo.
Parámetros
- entry - El puntero al objeto entry.
- nombre : el nombre que se establecerá para la entrada de destino.
Devuelve
QkExitCode especificando si la operación se ha realizado correctamente.