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.
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
QkParamque 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
doublepara inicializar elQkParam.
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
QkComplex64para inicializar elQkParam.
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
QkParamque 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
QkParamse guardará el resultado delhs + 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
QkParampara almacenar el resultado delhs - 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
QkParampara almacenar el resultado delhs * 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
QkParampara almacenar el resultado delhs / 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
QkParampara almacenar el resultado delhs ** 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
QkParamal 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
QkParamal 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
QkParamal 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
QkParamal 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
QkParamal 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
QkParamal 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
QkParamal 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
QkParamse 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
QkParamen 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
QkParamque 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
QkParamque 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, al QkParam representar valores complejos, se devuelve la parte real.
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
QkParamque se va a evaluar.
Devuelve
El valor, si la conversión se ha realizado correctamente; en caso contrario, NAN.