Skip to main content
IBM Quantum Platform

QkParam

Representa un parámetro de circuito que puede contener valores reales o simbólicos.

Aunque la funcionalidad de un QkParam dentro de un circuito es actualmente limitada, el usuario puede realizar operaciones similares a las que se encuentran en Parameter.


Tipos de datos

QkParamKind

enum QkParamKind

Representa el tipo de una instancia QkParam .

Valores:

enumerador QkParamKind_Unknown

Representa un parámetro desconocido que no se puede representar en la API de C. Normalmente, se trata de un parámetro que se define en Python.

enumerador QkParamKind_Real

Representa un parámetro de punto flotante real.

enumerador QkParamKind_ParameterExpression

Representa un símbolo de parámetro no vinculado.

enumerador QkParamKind_Int

Representa un parámetro que solo puede expresarse mediante un número entero. Normalmente, una duración expresada en términos de Dt.


Funciones

qk_param_new_symbol

QkParam *qk_param_new_symbol(const char *name)

Crea un nuevo QkParam que represente un símbolo sin asignar.

Ejemplo

QkParam *a = qk_param_new_symbol("a");

Seguridad

El name parámetro debe ser un puntero a una zona de memoria que contenga un carácter de finalización nulo válido al final de la cadena. Además, debe ser válido para la lectura de bytes hasta el carácter de terminación NUL, incluido este.

Parámetros

  • nombre : el nombre del símbolo. Esto no puede estar vacío.

Devuelve

QkParamUn puntero al archivo. creado.

qk_param_zero

QkParam *qk_param_zero(void)

Crea un nuevo QkParam objeto con el valor cero.

El valor QkParam devuelto por esta función se puede utilizar para almacenar el resultado de operaciones binarias o unarias.

Ejemplo

QkParam *t = qk_param_zero();
QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
qk_param_add(t, a, b);

Devuelve

QkParamUn puntero al archivo. creado.

qk_param_free

void qk_param_free(QkParam *param)

Liberad el QkParam.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
qk_param_free(a);

Seguridad

El comportamiento es indefinido si param no es nulo ni un puntero válido a un QkParam.

Parámetros

  • param – Un puntero al objeto QkParam que se va a liberar.

qk_param_from_double

QkParam *qk_param_from_double(double value)

doubleCrea uno nuevo QkParam a partir de uno.

Ejemplo

QkParam *r = qk_param_from_double(2.5);

Parámetros

  • valor – A double para inicializar el QkParam.

Devuelve

QkParamUn puntero al archivo. creado.

qk_param_from_complex

QkParam *qk_param_from_complex(QkComplex64 value)

Construir un nuevo QkParam a partir de un número complejo, dado como QkComplex64.

Ejemplo

QkComplex64 c = {1.0, 2.0};  // 1 + 2i
QkParam *param = qk_param_from_complex(c);

Parámetros

  • valor – A QkComplex64 para inicializar el QkParam.

Devuelve

QkParamUn puntero al archivo. creado.

qk_param_copy

QkParam *qk_param_copy(const QkParam *param)

Copia un QkParam.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_copy(a);

Seguridad

QkParamEl comportamiento es indefinido si param no es un puntero válido a un valor distinto de nulo.

Parámetros

  • param – El elemento QkParam que se va a copiar.

Devuelve

QkParamUn puntero al archivo. creado.

qk_param_str

char *qk_param_str(const QkParam *param)

QkParamObtén una representación en forma de cadena de.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
char* str = qk_param_str(a);
printf(str);
qk_str_free(str);
qk_param_free(a);

Seguridad

QkParamEl comportamiento es indefinido si param no es un puntero válido a un valor distinto de nulo.

La cadena no debe liberarse con la función «free» habitual de C; debes utilizar qk_str_free para liberar la memoria que ocupa la cadena. Si no se llama qk_str_free a esta función, se producirá una fuga de memoria.

No modifiques la longitud de la cadena una vez devuelta (añadiendo un byte nulo en algún punto de la cadena o eliminando el último), aunque sí se pueden modificar los valores.

Parámetros

  • param – Un puntero a la QkParam.

Devuelve

Un puntero a una matriz de caracteres terminada en NUL que contiene la representación en forma de cadena de param.

qk_param_add

QkExitCode qk_param_add(QkParam *out, const QkParam *lhs, const QkParam *rhs)

QkParamAñade dos.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
QkParam *out = qk_param_zero();
qk_param_add(out, a, b);

Seguridad

El comportamiento es indefinido si cualquiera de out, lhs o rhs no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero a donde QkParam se guardará el resultado de lhs + rhs.
  • QkParamlhs – Un puntero al lado izquierdo.
  • QkParamrhs – Un puntero al lado derecho.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_sub

QkExitCode qk_param_sub(QkParam *out, const QkParam *lhs, const QkParam *rhs)

QkParamResta dos.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
QkParam *out = qk_param_zero();
qk_param_sub(out, a, b);

Seguridad

El comportamiento es indefinido si cualquiera de out, lhs o rhs no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero a un QkParam para almacenar el resultado de lhs - rhs.
  • QkParamlhs – Un puntero al lado izquierdo.
  • QkParamrhs – Un puntero al lado derecho.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_mul

QkExitCode qk_param_mul(QkParam *out, const QkParam *lhs, const QkParam *rhs)

QkParamMultiplica dos.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
QkParam *out = qk_param_zero();
qk_param_mul(out, a, b);

Seguridad

El comportamiento es indefinido si cualquiera de out, lhs o rhs no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero a un QkParam para almacenar el resultado de lhs * rhs.
  • QkParamlhs – Un puntero al lado izquierdo.
  • QkParamrhs – Un puntero al lado derecho.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_div

QkExitCode qk_param_div(QkParam *out, const QkParam *num, const QkParam *den)

Divide a QkParam entre otro.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
QkParam *out = qk_param_zero();
qk_param_div(out, a, b);

Seguridad

El comportamiento es indefinido si cualquiera de out, num o den no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero a un QkParam para almacenar el resultado de lhs / rhs.
  • QkParamnum – Un puntero al numerador.
  • QkParamden – Un puntero al denominador.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_pow

QkExitCode qk_param_pow(QkParam *out, const QkParam *base, const QkParam *pow)

Elevar un número QkParam a la potencia de otro.

Ejemplo

QkParam *base = qk_param_new_symbol("a");
QkParam *pow = qk_param_new_symbol("b");
QkParam *out = qk_param_zero();
qk_param_pow(out, base, pow);

Seguridad

El comportamiento es indefinido si cualquiera de out, base o pow no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero a un QkParam para almacenar el resultado de lhs ** rhs.
  • QkParambase : un puntero al lado izquierdo.
  • QkParampow – Un puntero al lado derecho.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_sin

QkExitCode qk_param_sin(QkParam *out, const QkParam *src)

QkParamCalcula el seno de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sin(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, sin(src).
  • src : un puntero al objeto QkParam al que se aplicará la función seno.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_cos

QkExitCode qk_param_cos(QkParam *out, const QkParam *src)

QkParamCalcula el coseno de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_cos(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, cos(src).
  • src : un puntero al objeto QkParam al que se va a aplicar la función coseno.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_tan

QkExitCode qk_param_tan(QkParam *out, const QkParam *src)

QkParamCalcula la tangente de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_tan(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, tan(src).
  • src : un puntero al elemento QkParam al que se va a aplicar la tangente.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_asin

QkExitCode qk_param_asin(QkParam *out, const QkParam *src)

QkParamCalcula el arcseno de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_asin(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, asin(src).
  • src : un puntero al objeto QkParam al que se le aplicará la función arcoseno.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_acos

QkExitCode qk_param_acos(QkParam *out, const QkParam *src)

QkParamCalcula el arcocoseno de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_acos(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, acos(src).
  • src : un puntero al objeto QkParam al que se va a aplicar la función coseno.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_atan

QkExitCode qk_param_atan(QkParam *out, const QkParam *src)

QkParamCalcula la arctangente de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_atan(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar un resultado, atan(src).
  • src : un puntero al objeto QkParam al que se va a aplicar la función arctangente.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_log

QkExitCode qk_param_log(QkParam *out, const QkParam *src)

QkParamCalcula el logaritmo natural de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_log(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, log(src).
  • src : un puntero al objeto QkParam al que se va a aplicar el logaritmo.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_exp

QkExitCode qk_param_exp(QkParam *out, const QkParam *src)

QkParamAplica la función exponencial a a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_exp(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, exp(src).
  • src : un puntero al valor del que QkParam se va a calcular la exponencial.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_abs

QkExitCode qk_param_abs(QkParam *out, const QkParam *src)

QkParamCalcula el valor absoluto de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_abs(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • out – Un puntero al objeto QkParam en el que se almacenará el resultado.
  • src : un puntero al objeto QkParam.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_sign

QkExitCode qk_param_sign(QkParam *out, const QkParam *src)

Averigua el signo de un QkParam.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sign(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, sign(src).
  • QkParam** src** – Un puntero al para obtener su signo.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_neg

QkExitCode qk_param_neg(QkParam *out, const QkParam *src)

Negar a QkParam.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_neg(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, -src.
  • src : un puntero al valor QkParam que se va a invertir.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_conjugate

QkExitCode qk_param_conjugate(QkParam *out, const QkParam *src)

QkParamCalcula el conjugado complejo de a.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_conjugate(out, a);

Seguridad

El comportamiento es indefinido si cualquiera de out o src no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParam** out** – Un puntero al para almacenar el resultado, conj(src).
  • src : un puntero al elemento QkParam que se va a conjugar.

Devuelve

Un código de salida que indica QkExitCode_Success el éxito en caso de que la operación se haya realizado correctamente y un error en caso contrario.

qk_param_equal

bool qk_param_equal(const QkParam *lhs, const QkParam *rhs)

Compara dos QkParam valores para ver si son iguales.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *one = qk_param_from_value(1.0);
QkParam *mone = qk_param_from_value(-1.0);

QkParam *x = qk_param_add(a, one);
QkParam *y = qk_param_sub(a, mone);

bool equal = qk_param_equal(x, y);

Seguridad

El comportamiento es indefinido si cualquiera de lhs o rhs no es un puntero válido y no nulo a un QkParam.

Parámetros

  • QkParamlhs – Un puntero al lado izquierdo.
  • QkParamrhs – Un puntero al lado derecho.

Devuelve

true si los QkParam objetos son iguales, false en caso contrario.

qk_param_as_real

double qk_param_as_real(const QkParam *param)

QkParam Intenta convertir en double.

Si no se ha podido convertir el parámetro a un double, debido a que había parámetros sin asignar, NAN se devuelve. Ten en cuenta que, en el caso de valores del QkParam tipo que QkParamKind_ParameterExpression representan valores complejos acotados, se devuelve la parte real.

Si el parámetro es originalmente una instancia int , se convertirá en un tipo «double», lo que dará lugar a una conversión con pérdida de información.

Ejemplo

QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_new_symbol("b");
QkParam *x = qk_param_zero();
qk_param_add(x, a, b);

const QkParam* keys[2] = {a, b};
QkParam *y = qk_param_zero();
qk_param_bind(y, x, keys, {1.0, 2.0}, 2);

double out = qk_param_as_real(y);

Seguridad

El comportamiento es indefinido si param no es un puntero válido y no nulo a un QkParam.

Parámetros

  • param – Un puntero a la función QkParam que se va a evaluar.

Devuelve

El valor, si la conversión se ha realizado correctamente; en caso contrario, NAN.

qk_param_stride

size_t qk_param_stride(void)

Obtiene el tamaño, en bytes, del tipo QkParam «opaque».

El tipo QkParam es opaco para la API de C y su ancho no está especificado. Puedes utilizar este valor para desplazar QkParam * punteros, si lo conviertes a un tipo de ancho de byte y luego lo vuelves a convertir.

Esta función devuelve el mismo valor en cada llamada dentro de cualquier proceso. El valor puede variar según la plataforma o la versión de la biblioteca Qiskit, y puede depender del entorno de compilación de la API de C de Qiskit. No debes dar por hecho que este ancho tenga un valor concreto sin consultar esta función.

Ejemplo

Si se dispone de un puntero al primer elemento de QkParam una matriz contigua, como en QkCircuitInstructionView::params, se puede acceder a los elementos siguientes desplazando el puntero un número determinado de bytes.

const QkParam *p;  // A pretend pointer to the first of 3 contiguous elements.
const size_t el_size = qk_param_stride();
for (size_t i = 0; i < 3; i++) {
// Offset the pointer by `el_size` bytes each time.
    p = (const QkParam *)((const char *)p + el_size);

char *val = qk_param_str(p);
    printf("%zu: %s\n", i, val);
qk_str_free(val);
}

Devuelve

El tamaño en bytes del tipo QkParam opaco.

qk_param_as_int

bool qk_param_as_int(const QkParam *param, int64_t *value)

Intenta convertir en QkParam int64_t. Esto está pensado para recuperar un parámetro que represente la duración de una instrucción de retardo en unidades de Dt.

Si no se ha podido convertir el parámetro a un int64_t, debido a que había parámetros sin asignar, no se escribirá en el puntero y la función devolverá false. Esto también ocurrirá si el parámetro está vinculado, pero su valor es un número de coma flotante o un número complejo.

Seguridad

El comportamiento es indefinido si no es param un puntero válido y no nulo a un QkParam. El comportamiento es indefinido si no value es un puntero válido y no nulo a una dirección que pueda contener una instancia int64_t de.

Parámetros

  • param – Un puntero a la función QkParam que se va a evaluar.
  • valor : un puntero a un int64_t en el que se escribirá el valor resultante.

Devuelve

true si el valor almacenado es un número entero; en caso contrario, false.

qk_param_kind

QkParamKind qk_param_kind(const QkParam *param)

Devuelve el tipo asociado a la instancia QkParam a través de la enumeración QkParamKind .

Seguridad

El comportamiento es indefinido si param no es un puntero válido y no nulo a un QkParam.

Parámetros

  • param – Un puntero a la función QkParam que se va a evaluar.

Devuelve

El tipo asociado al parámetro.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.