QkParam
Bezeichnet einen Schaltungsparameter, der reelle oder symbolische Werte annehmen kann.
ParameterZwar ist die QkParam Funktionalität innerhalb eines Schaltkreises derzeit noch eingeschränkt, doch kann der Benutzer Vorgänge ausführen, die denen in [Name] ähneln.
Funktionen
qk_param_new_symbol
QkParam *qk_param_new_symbol(const char *name)
Erstelle ein neues QkParam , das ein ungebundenes Symbol darstellt.
Beispiel
QkParam *a = qk_param_new_symbol("a");Sicherheit
Der name Parameter muss ein Zeiger auf einen Speicherbereich sein, der am Ende der Zeichenkette ein gültiges Null-Terminatorzeichen enthält. Sie muss auch für das Lesen von Bytes bis einschließlich des Null-Terminators gültig sein.
Parameter
- name – Der Name des Symbols. Dieses Feld darf nicht leer sein.
Rückgabe
Ein Zeiger auf die erstellte QkParam.
qk_param_zero
QkParam *qk_param_zero(void)
Erstelle ein neues QkParam mit dem Wert Null.
Der QkParam von dieser Funktion zurückgegebene Wert kann verwendet werden, um das Ergebnis binärer oder unärer Operationen zu speichern.
Beispiel
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);Rückgabe
Ein Zeiger auf die erstellte QkParam.
qk_param_free
void qk_param_free(QkParam *param)
Befreit die QkParam.
Beispiel
QkParam *a = qk_param_new_symbol("a");
qk_param_free(a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn param weder null noch ein gültiger Zeiger auf ein ist.
Parameter
- param – Ein Zeiger auf den
QkParamzu löschenden Speicherbereich.
qk_param_from_double
QkParam *qk_param_from_double(double value)
Erstelle ein neues QkParam aus einem double.
Beispiel
QkParam *r = qk_param_from_double(2.5);Parameter
- Wert – A
doublezum Initialisieren derQkParam.
Rückgabe
Ein Zeiger auf die erstellte QkParam.
qk_param_from_complex
QkParam *qk_param_from_complex(QkComplex64 value)
QkComplex64Konstruiere eine neue QkParam aus einer komplexen Zahl, die als angegeben ist.
Beispiel
QkComplex64 c = {1.0, 2.0}; // 1 + 2i
QkParam *param = qk_param_from_complex(c);Parameter
- Wert – A
QkComplex64zum Initialisieren derQkParam.
Rückgabe
Ein Zeiger auf die erstellte QkParam.
qk_param_copy
QkParam *qk_param_copy(const QkParam *param)
Kopiere ein QkParam.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_copy(a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn param kein gültiger Zeiger auf einen Wert ungleich Null ist.
Parameter
- param – Der
QkParamzu kopierende Wert.
Rückgabe
Ein Zeiger auf die erstellte QkParam.
qk_param_str
char *qk_param_str(const QkParam *param)
QkParamErhalte eine Zeichenfolgendarstellung von.
Beispiel
QkParam *a = qk_param_new_symbol("a");
char* str = qk_param_str(a);
printf(str);
qk_str_free(str);
qk_param_free(a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn param kein gültiger Zeiger auf einen Wert ungleich Null ist.
Die Zeichenkette darf nicht mit dem normalen C-Befehl free freigegeben werden; du musst verwenden qk_str_free , um den von der Zeichenkette belegten Speicher freizugeben. Wird dies nicht aufgerufen qk_str_free , führt dies zu einem Speicherleck.
Ändern Sie die Länge der Zeichenkette nicht, nachdem sie zurückgegeben wurde (indem Sie irgendwo innerhalb der Zeichenkette ein Null-Byte einfügen oder das letzte Byte entfernen), auch wenn die Werte selbst geändert werden können.
Parameter
- param – Ein Zeiger auf die
QkParam.
Rückgabe
Ein Zeiger auf ein null-terminiertes Zeichenarray, das die Zeichenfolgendarstellung von param… enthält.
qk_param_add
QkExitCode qk_param_add(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamFüge zwei hinzu.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn einer der Werte out, lhs oder rhs kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
lhs + rhsout – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis von gespeichert werden soll.QkParamlhs – Ein Zeiger auf die linke Seite.QkParamrhs – Ein Zeiger auf die rechte Seite.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_sub
QkExitCode qk_param_sub(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamZieh zwei ab.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn einer der Werte out, lhs oder rhs kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- out – Ein Zeiger auf einen
QkParamzum Speichern des Ergebnisses vonlhs - rhs. QkParamlhs – Ein Zeiger auf die linke Seite.QkParamrhs – Ein Zeiger auf die rechte Seite.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_mul
QkExitCode qk_param_mul(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamMultipliziere zwei.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn einer der Werte out, lhs oder rhs kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- out – Ein Zeiger auf einen
QkParamzum Speichern des Ergebnisses vonlhs * rhs. QkParamlhs – Ein Zeiger auf die linke Seite.QkParamrhs – Ein Zeiger auf die rechte Seite.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_div
QkExitCode qk_param_div(QkParam *out, const QkParam *num, const QkParam *den)
Teile a QkParam durch b.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn einer der Werte out, num oder den kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- out – Ein Zeiger auf einen
QkParamzum Speichern des Ergebnisses vonlhs / rhs. QkParamnum – Ein Zeiger auf den Zähler.QkParamden – Ein Zeiger auf den Nenner.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_pow
QkExitCode qk_param_pow(QkParam *out, const QkParam *base, const QkParam *pow)
Eine Zahl QkParam zur Potenz einer anderen Zahl erheben.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn einer der Werte out, base oder pow kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- out – Ein Zeiger auf einen
QkParamzum Speichern des Ergebnisses vonlhs ** rhs. QkParamBasis – Ein Zeiger auf die linke Seite.QkParampow – Ein Zeiger auf die rechte Seite.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_sin
QkExitCode qk_param_sin(QkParam *out, const QkParam *src)
QkParamBerechne den Sinus von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sin(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
sin(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamObjekt, auf das die Sinusfunktion angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_cos
QkExitCode qk_param_cos(QkParam *out, const QkParam *src)
QkParamBerechne den Kosinus von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_cos(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
cos(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamObjekt, auf das der Kosinus angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_tan
QkExitCode qk_param_tan(QkParam *out, const QkParam *src)
QkParamBerechne die Tangens von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_tan(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
tan(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf den
QkParamPunkt, auf den die Tangente angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_asin
QkExitCode qk_param_asin(QkParam *out, const QkParam *src)
QkParamBerechne den Arkussinus von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_asin(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
asin(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamElement, auf das die Arkussinusfunktion angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_acos
QkExitCode qk_param_acos(QkParam *out, const QkParam *src)
QkParamBerechne den Arkuskosinus von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_acos(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
acos(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamObjekt, auf das der Kosinus angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_atan
QkExitCode qk_param_atan(QkParam *out, const QkParam *src)
QkParamBerechne den Arkustangens von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_atan(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
atan(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamElement, auf das die Arkustangensfunktion angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_log
QkExitCode qk_param_log(QkParam *out, const QkParam *src)
QkParamBerechne den natürlichen Logarithmus von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_log(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
log(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamElement, auf das der Logarithmus angewendet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_exp
QkExitCode qk_param_exp(QkParam *out, const QkParam *src)
QkParamWende die Exponentialfunktion auf a an.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_exp(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
exp(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf den
QkParamWert, dessen Exponentialwert berechnet werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_abs
QkExitCode qk_param_abs(QkParam *out, const QkParam *src)
QkParamBerechne den Absolutwert von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_abs(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- out – Ein Zeiger auf den Speicherort „ QkParam “, an dem das Ergebnis gespeichert werden soll.
- src – Ein Zeiger auf die „ QkParam “.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_sign
QkExitCode qk_param_sign(QkParam *out, const QkParam *src)
QkParamErmitteln Sie das Vorzeichen von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sign(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
sign(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamElement, dessen Vorzeichen ermittelt werden soll.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_neg
QkExitCode qk_param_neg(QkParam *out, const QkParam *src)
Ein QkParam. verneinen.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_neg(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
-srcout – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamzu negierende Element.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_conjugate
QkExitCode qk_param_conjugate(QkParam *out, const QkParam *src)
QkParamBerechne das komplexe Konjugierte von a.
Beispiel
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_conjugate(out, a);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder src``out kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
conj(src)out – Ein Zeiger auf denQkParamSpeicherort, an dem das Ergebnis gespeichert werden soll.- src – Ein Zeiger auf das
QkParamzu konjugierende Element.
Rückgabe
Ein Exit-Code, der QkExitCode_Success bei Erfolg den Wert und andernfalls einen Fehlerwert angibt.
qk_param_equal
bool qk_param_equal(const QkParam *lhs, const QkParam *rhs)
Vergleiche zwei QkParam Werte auf Gleichheit.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn oder rhs``lhs kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
QkParamlhs – Ein Zeiger auf die linke Seite.QkParamrhs – Ein Zeiger auf die rechte Seite.
Rückgabe
true wenn die QkParam Objekte gleich sind, false andernfalls.
qk_param_as_real
double qk_param_as_real(const QkParam *param)
doubleVersuchen Sie, als zu QkParam typisieren.
doubleWenn der Parameter nicht in einen umgewandelt werden konnte, weil ungebundene Parameter vorhanden waren, NAN wird zurückgegeben. Beachte, dass bei QkParam der Darstellung komplexer Werte der Realteil zurückgegeben wird.
Beispiel
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);Sicherheit
QkParamDas Verhalten ist nicht definiert, wenn param kein gültiger, nicht-null-Zeiger auf ein ist.
Parameter
- param – Ein Zeiger auf das
QkParamzu bewertende Element.
Rückgabe
Der Wert, falls die Typumwandlung erfolgreich war, andernfalls NAN.