QkParam
Indica un parametro di circuito che può assumere valori reali o simbolici.
Sebbene le funzionalità di un QkParam all'interno di un circuito siano attualmente limitate, l'utente è in grado di eseguire operazioni simili a quelle presenti in Parameter.
Funzioni
qk_param_new_symbol
QkParam *qk_param_new_symbol(const char *name)
Crea un nuovo QkParam che rappresenti un simbolo non associato.
Esempio
QkParam *a = qk_param_new_symbol("a");Sicurezza
Il name parametro deve essere un puntatore a un'area di memoria che contenga un terminatore NUL valido alla fine della stringa. Deve inoltre essere valido per la lettura dei byte fino al terminatore NUL compreso.
Parametri
- nome – Il nome del simbolo. Questo campo non può essere vuoto.
Risultati
QkParamUn puntatore al file. creato
qk_param_zero
QkParam *qk_param_zero(void)
Crea un nuovo QkParam oggetto con valore zero.
Il valore QkParam restituito da questa funzione può essere utilizzato per memorizzare il risultato di operazioni binarie o unarie.
Esempio
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);Risultati
QkParamUn puntatore al file. creato
qk_param_free
void qk_param_free(QkParam *param)
Libera il QkParam.
Esempio
QkParam *a = qk_param_new_symbol("a");
qk_param_free(a);Sicurezza
Il comportamento è indefinito se param non è né nullo né un puntatore valido a un QkParam.
Parametri
- param – Un puntatore alla memoria
QkParamda liberare.
qk_param_from_double
QkParam *qk_param_from_double(double value)
Crea un nuovo QkParam partendo da un double.
Esempio
QkParam *r = qk_param_from_double(2.5);Parametri
- valore – A
doubleper inizializzare ilQkParam.
Risultati
QkParamUn puntatore al file. creato
qk_param_from_complex
QkParam *qk_param_from_complex(QkComplex64 value)
Costruisci un nuovo QkParam numero a partire da un numero complesso dato da QkComplex64.
Esempio
QkComplex64 c = {1.0, 2.0}; // 1 + 2i
QkParam *param = qk_param_from_complex(c);Parametri
- valore – A
QkComplex64per inizializzare ilQkParam.
Risultati
QkParamUn puntatore al file. creato
qk_param_copy
QkParam *qk_param_copy(const QkParam *param)
Copia un QkParam.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_copy(a);Sicurezza
QkParamIl comportamento è indefinito se param non è un puntatore valido a un valore non nullo.
Parametri
- param – Il dato
QkParamda copiare.
Risultati
QkParamUn puntatore al file. creato
qk_param_str
char *qk_param_str(const QkParam *param)
Ottieni una rappresentazione stringa del QkParam.
Esempio
QkParam *a = qk_param_new_symbol("a");
char* str = qk_param_str(a);
printf(str);
qk_str_free(str);
qk_param_free(a);Sicurezza
QkParamIl comportamento è indefinito se param non è un puntatore valido a un valore non nullo.
La stringa non deve essere liberata con la normale funzione free del C; per liberare la memoria occupata dalla stringa è necessario utilizzare qk_str_free Se non lo si chiama qk_str_free , si verificherà una perdita di memoria.
Non modificare la lunghezza della stringa dopo che è stata restituita (scrivendo un byte NUL in un punto qualsiasi della stringa o rimuovendo quello finale), anche se i valori possono essere modificati.
Parametri
QkParamparam – Un puntatore al.
Risultati
Un puntatore a un array di caratteri terminato da NUL contenente la rappresentazione stringa di param.
qk_param_add
QkExitCode qk_param_add(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamAggiungi due.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi tra out, lhs o rhs non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore alla variabile
QkParamin cui memorizzare il risultato dilhs + rhs. QkParamlhs – Un indicatore del lato sinistro.QkParamrhs – Un puntatore al lato destro.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_sub
QkExitCode qk_param_sub(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamSottrai due.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi tra out, lhs o rhs non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore a un
QkParamin cui memorizzare il risultato dilhs - rhs. QkParamlhs – Un indicatore del lato sinistro.QkParamrhs – Un puntatore al lato destro.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_mul
QkExitCode qk_param_mul(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamMoltiplica per due.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi tra out, lhs o rhs non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore a un
QkParamin cui memorizzare il risultato dilhs * rhs. QkParamlhs – Un indicatore del lato sinistro.QkParamrhs – Un puntatore al lato destro.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_div
QkExitCode qk_param_div(QkParam *out, const QkParam *num, const QkParam *den)
Dividi a QkParam per un altro numero.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi tra out, num o den non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore a un
QkParamin cui memorizzare il risultato dilhs / rhs. QkParamnum – Un puntatore al numeratore.QkParamden – Un puntatore al denominatore.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_pow
QkExitCode qk_param_pow(QkParam *out, const QkParam *base, const QkParam *pow)
Elevare un numero QkParam a una potenza.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi tra out, base o pow non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore a un
QkParamin cui memorizzare il risultato dilhs ** rhs. QkParambase – Un puntatore alla parte sinistra.QkParampow – Un puntatore alla parte destra.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_sin
QkExitCode qk_param_sin(QkParam *out, const QkParam *src)
QkParamCalcola il seno di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sin(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
sin(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare la funzione seno.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_cos
QkExitCode qk_param_cos(QkParam *out, const QkParam *src)
QkParamCalcola il coseno di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_cos(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
cos(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare la funzione coseno.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_tan
QkExitCode qk_param_tan(QkParam *out, const QkParam *src)
QkParamCalcola la tangente di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_tan(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
tan(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'oggetto
QkParama cui applicare la tangente.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_asin
QkExitCode qk_param_asin(QkParam *out, const QkParam *src)
Calcola l'arcseno di un QkParam.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_asin(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
asin(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare la funzione arcsin.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_acos
QkExitCode qk_param_acos(QkParam *out, const QkParam *src)
QkParamCalcola l'arcocoseno di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_acos(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
acos(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare la funzione coseno.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_atan
QkExitCode qk_param_atan(QkParam *out, const QkParam *src)
QkParamCalcola l'arcotangente di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_atan(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
atan(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare l'arcotangente.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_log
QkExitCode qk_param_log(QkParam *out, const QkParam *src)
QkParamCalcola il logaritmo naturale di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_log(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
log(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParama cui applicare il logaritmo.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_exp
QkExitCode qk_param_exp(QkParam *out, const QkParam *src)
QkParamApplica la funzione esponenziale a a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_exp(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
exp(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore al valore
QkParamdi cui calcolare l'esponenziale.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_abs
QkExitCode qk_param_abs(QkParam *out, const QkParam *src)
QkParamCalcola il valore assoluto di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_abs(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
- out – Un puntatore all' QkParam e in cui memorizzare il risultato.
- src – Un puntatore all' QkParam.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_sign
QkExitCode qk_param_sign(QkParam *out, const QkParam *src)
Ottieni il segno di un QkParam.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sign(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
sign(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore al valore
QkParamdi cui si vuole determinare il segno.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_neg
QkExitCode qk_param_neg(QkParam *out, const QkParam *src)
QkParamNegare a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_neg(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
-srcout – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore all'elemento
QkParamda negare.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_conjugate
QkExitCode qk_param_conjugate(QkParam *out, const QkParam *src)
QkParamCalcola il coniugato complesso di a.
Esempio
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_conjugate(out, a);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due out (o src ) non è un puntatore valido e non nullo a un QkParam.
Parametri
conj(src)out – Un puntatore alla variabileQkParamin cui memorizzare il risultato.- src – Un puntatore alla parola
QkParamda coniugare.
Risultati
Un codice di uscita che indica QkExitCode_Success il successo in caso di esito positivo e un errore in caso contrario.
qk_param_equal
bool qk_param_equal(const QkParam *lhs, const QkParam *rhs)
Confronta due QkParam valori per verificare se sono uguali.
Esempio
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);Sicurezza
Il comportamento è indefinito se uno qualsiasi dei due lhs (o rhs ) non è un puntatore valido e non nullo a un QkParam.
Parametri
QkParamlhs – Un indicatore del lato sinistro.QkParamrhs – Un puntatore al lato destro.
Risultati
true se gli QkParam oggetti sono uguali, false altrimenti.
qk_param_as_real
double qk_param_as_real(const QkParam *param)
QkParam Prova a convertire in double.
Se non è stato possibile convertire il parametro in un double, a causa della presenza di parametri non associati, NAN viene restituito. Si noti che, quando QkParam si rappresentano valori complessi, viene restituita la parte reale.
Esempio
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);Sicurezza
Il comportamento è indefinito se param non è un puntatore valido e non nullo a un QkParam.
Parametri
- param – Un puntatore alla funzione
QkParamda valutare.
Risultati
Il valore, se la conversione ha avuto esito positivo, altrimenti NAN.