QkParam
Représente un paramètre de circuit pouvant prendre des valeurs réelles ou symboliques.
Bien que les fonctionnalités d'un QkParam au sein d'un circuit soient actuellement limitées, l'utilisateur peut effectuer des opérations similaires à celles disponibles dans Parameter.
Fonctions
qk_param_new_symbol
QkParam *qk_param_new_symbol(const char *name)
Construisez un nouveau QkParam représentant un symbole non lié.
Exemple
QkParam *a = qk_param_new_symbol("a");Sécurité
Le name paramètre doit être un pointeur vers une zone de mémoire contenant un caractère de fin de chaîne nul valide à la fin de la chaîne. Elle doit également être valide pour la lecture des octets jusqu'au caractère de fin de chaîne inclus.
Paramètres
- nom – Le nom du symbole. Ce champ ne peut pas être vide.
Retours
QkParamUn pointeur vers le fichier. créé
qk_param_zero
QkParam *qk_param_zero(void)
Construisez un nouvel QkParam élément avec la valeur zéro.
La valeur QkParam renvoyée par cette fonction peut être utilisée pour stocker le résultat d'opérations binaires ou unaires.
Exemple
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);Retours
QkParamUn pointeur vers le fichier. créé
qk_param_free
void qk_param_free(QkParam *param)
Libérez le QkParam.
Exemple
QkParam *a = qk_param_new_symbol("a");
qk_param_free(a);Sécurité
Le comportement est indéfini si param n'est ni nul ni un pointeur valide vers un QkParam.
Paramètres
- param – Un pointeur vers la mémoire
QkParamà libérer.
qk_param_from_double
QkParam *qk_param_from_double(double value)
Créer un nouveau QkParam à partir d'un double.
Exemple
QkParam *r = qk_param_from_double(2.5);Paramètres
- valeur – A
doublepour initialiser leQkParam.
Retours
QkParamUn pointeur vers le fichier. créé
qk_param_from_complex
QkParam *qk_param_from_complex(QkComplex64 value)
Construisez un nouveau QkParam à partir d'un nombre complexe donné par QkComplex64.
Exemple
QkComplex64 c = {1.0, 2.0}; // 1 + 2i
QkParam *param = qk_param_from_complex(c);Paramètres
- valeur – A
QkComplex64pour initialiser leQkParam.
Retours
QkParamUn pointeur vers le fichier. créé
qk_param_copy
QkParam *qk_param_copy(const QkParam *param)
Copier un fichier QkParam.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_copy(a);Sécurité
QkParamLe comportement est indéfini si param n'est pas un pointeur valide vers un élément non nul.
Paramètres
- param – Le paramètre
QkParamà copier.
Retours
QkParamUn pointeur vers le fichier. créé
qk_param_str
char *qk_param_str(const QkParam *param)
Obtenir une représentation sous forme de chaîne du QkParam.
Exemple
QkParam *a = qk_param_new_symbol("a");
char* str = qk_param_str(a);
printf(str);
qk_str_free(str);
qk_param_free(a);Sécurité
QkParamLe comportement est indéfini si param n'est pas un pointeur valide vers un élément non nul.
La chaîne ne doit pas être libérée à l'aide de la fonction free standard du langage C; vous devez utiliser qk_str_free pour libérer la mémoire occupée par la chaîne. Si vous ne l'appelez qk_str_free pas, cela entraînera une fuite de mémoire.
Ne modifiez pas la longueur de la chaîne une fois qu'elle a été renvoyée (en insérant un octet nul à un endroit quelconque de la chaîne ou en supprimant le dernier octet), même si les valeurs peuvent être modifiées.
Paramètres
- param – Un pointeur vers le
QkParam.
Retours
Un pointeur vers un tableau de caractères terminé par un caractère nul contenant la représentation sous forme de chaîne de param.
qk_param_add
QkExitCode qk_param_add(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamAjoutez deux.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments out, lhs ou rhs n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
lhs + rhsout – Un pointeur vers laQkParamvariable dans laquelle le résultat de doit être stocké.QkParamlhs – Un pointeur vers le côté gauche.QkParamrhs – Un pointeur vers le côté droit.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_sub
QkExitCode qk_param_sub(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamSoustrais deux.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments out, lhs ou rhs n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- out – Un pointeur vers un
QkParampour stocker le résultat delhs - rhs. QkParamlhs – Un pointeur vers le côté gauche.QkParamrhs – Un pointeur vers le côté droit.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_mul
QkExitCode qk_param_mul(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamMultipliez deux.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments out, lhs ou rhs n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- out – Un pointeur vers un
QkParampour stocker le résultat delhs * rhs. QkParamlhs – Un pointeur vers le côté gauche.QkParamrhs – Un pointeur vers le côté droit.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_div
QkExitCode qk_param_div(QkParam *out, const QkParam *num, const QkParam *den)
Divisez a QkParam par un autre nombre.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments out, num ou den n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- out – Un pointeur vers un
QkParampour stocker le résultat delhs / rhs. QkParamnum – Un pointeur vers le numérateur.QkParamden – Un pointeur vers le dénominateur.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_pow
QkExitCode qk_param_pow(QkParam *out, const QkParam *base, const QkParam *pow)
Élever un nombre QkParam à une autre puissance.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments out, base ou pow n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- out – Un pointeur vers un
QkParampour stocker le résultat delhs ** rhs. QkParambase – Un pointeur vers le côté gauche.QkParampow – Un pointeur vers le côté droit.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_sin
QkExitCode qk_param_sin(QkParam *out, const QkParam *src)
QkParamCalculez le sinus de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sin(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
sin(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamauquel appliquer la fonction sinus.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_cos
QkExitCode qk_param_cos(QkParam *out, const QkParam *src)
QkParamCalculez le cosinus de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_cos(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
cos(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers le
QkParamauquel appliquer la fonction cosinus.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_tan
QkExitCode qk_param_tan(QkParam *out, const QkParam *src)
QkParamCalculez la tangente de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_tan(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
tan(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamauquel appliquer la tangente.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_asin
QkExitCode qk_param_asin(QkParam *out, const QkParam *src)
QkParamCalculez l'arc sinus de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_asin(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
asin(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamauquel appliquer la fonction arc sinus.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_acos
QkExitCode qk_param_acos(QkParam *out, const QkParam *src)
QkParamCalculez l'arc cosinus de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_acos(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
acos(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers le
QkParamauquel appliquer la fonction cosinus.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_atan
QkExitCode qk_param_atan(QkParam *out, const QkParam *src)
QkParamCalculez l'arctangente de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_atan(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
atan(src)out – Un pointeur vers la zoneQkParamde stockage du résultat.- src – Un pointeur vers l'élément
QkParamauquel appliquer l'arctangente.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_log
QkExitCode qk_param_log(QkParam *out, const QkParam *src)
QkParamCalculez le logarithme naturel de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_log(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
log(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamauquel appliquer le logarithme.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_exp
QkExitCode qk_param_exp(QkParam *out, const QkParam *src)
QkParamAppliquez la fonction exponentielle à a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_exp(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
exp(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers la valeur
QkParamdont on souhaite calculer l'exponentielle.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_abs
QkExitCode qk_param_abs(QkParam *out, const QkParam *src)
QkParamCalculez la valeur absolue de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_abs(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- out – Un pointeur vers l' QkParam e dans laquelle le résultat doit être stocké.
- src – Un pointeur vers l' QkParam.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_sign
QkExitCode qk_param_sign(QkParam *out, const QkParam *src)
Obtenez le signe d'un QkParam.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sign(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
sign(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamdont on souhaite déterminer le signe.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_neg
QkExitCode qk_param_neg(QkParam *out, const QkParam *src)
Nier a QkParam.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_neg(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
-srcout – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamà inverser.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_conjugate
QkExitCode qk_param_conjugate(QkParam *out, const QkParam *src)
QkParamCalculez le conjugué complexe de a.
Exemple
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_conjugate(out, a);Sécurité
Le comportement est indéfini si l'un des éléments out ou src n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
conj(src)out – Un pointeur vers la variableQkParamdans laquelle le résultat doit être stocké.- src – Un pointeur vers l'élément
QkParamà conjuguer.
Retours
Un code de sortie indiquant QkExitCode_Success la réussite de l'opération ou une erreur dans le cas contraire.
qk_param_equal
bool qk_param_equal(const QkParam *lhs, const QkParam *rhs)
Comparer deux éléments QkParam pour vérifier s'ils sont égaux.
Exemple
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);Sécurité
Le comportement est indéfini si l'un des éléments lhs ou rhs n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
QkParamlhs – Un pointeur vers le côté gauche.QkParamrhs – Un pointeur vers le côté droit.
Retours
true si les QkParam objets sont égaux, false sinon.
qk_param_as_real
double qk_param_as_real(const QkParam *param)
Essayez de convertir QkParam en double.
Si le paramètre n'a pas pu être converti en double, en raison de la présence de paramètres non liés, NAN est renvoyé. Notez que pour QkParam la représentation des valeurs complexes, c'est la partie réelle qui est renvoyée.
Exemple
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);Sécurité
Le comportement est indéfini si param n'est pas un pointeur valide et non nul vers un QkParam.
Paramètres
- param – Un pointeur vers l'élément
QkParamà évaluer.
Retours
La valeur, si la conversion a réussi, sinon NAN.