QkParam
Representa um parâmetro de circuito que pode conter valores reais ou simbólicos.
Embora a funcionalidade de um QkParam dentro de um circuito seja atualmente limitada, o usuário pode realizar operações semelhantes às presentes em Parameter.
Funções
qk_param_new_symbol
QkParam *qk_param_new_symbol(const char *name)
Crie um novo QkParam que represente um símbolo não vinculado.
Exemplo
QkParam *a = qk_param_new_symbol("a");Segurança
O name parâmetro deve ser um ponteiro para a memória que contenha um terminador nulo válido no final da string. Além disso, deve ser válido para leituras de bytes até o caractere de terminação NUL, inclusive.
Parâmetros
- nome – O nome do símbolo. Este campo não pode ficar em branco.
Retorna
QkParamUm ponteiro para o arquivo. criado
qk_param_zero
QkParam *qk_param_zero(void)
Crie um novo QkParam com valor zero.
O valor QkParam retornado por esta função pode ser usado para armazenar o resultado de operações binárias ou unárias.
Exemplo
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);Retorna
QkParamUm ponteiro para o arquivo. criado
qk_param_free
void qk_param_free(QkParam *param)
Liberte o QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
qk_param_free(a);Segurança
O comportamento é indefinido se param não for nulo nem um ponteiro válido para um QkParam.
Parâmetros
- param – Um ponteiro para a memória
QkParama ser liberada.
qk_param_from_double
QkParam *qk_param_from_double(double value)
Crie um novo QkParam a partir de um double.
Exemplo
QkParam *r = qk_param_from_double(2.5);Parâmetros
- valor – A
doublepara inicializar oQkParam.
Retorna
QkParamUm ponteiro para o arquivo. criado
qk_param_from_complex
QkParam *qk_param_from_complex(QkComplex64 value)
Construa um novo QkParam a partir de um número complexo, dado como QkComplex64.
Exemplo
QkComplex64 c = {1.0, 2.0}; // 1 + 2i
QkParam *param = qk_param_from_complex(c);Parâmetros
- valor – A
QkComplex64para inicializar oQkParam.
Retorna
QkParamUm ponteiro para o arquivo. criado
qk_param_copy
QkParam *qk_param_copy(const QkParam *param)
Copie um QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *b = qk_param_copy(a);Segurança
QkParamO comportamento é indefinido se param não for um ponteiro válido para um valor diferente de nulo.
Parâmetros
- param – O
QkParama ser copiado.
Retorna
QkParamUm ponteiro para o arquivo. criado
qk_param_str
char *qk_param_str(const QkParam *param)
Obter uma representação em forma de string do QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
char* str = qk_param_str(a);
printf(str);
qk_str_free(str);
qk_param_free(a);Segurança
QkParamO comportamento é indefinido se param não for um ponteiro válido para um valor diferente de nulo.
A string não deve ser liberada com a função free padrão do C; é necessário usar qk_str_free para liberar a memória ocupada pela string. Não chamar qk_str_free essa função resultará em um vazamento de memória.
Não altere o comprimento da string após ela ter sido retornada (escrevendo um byte nulo em algum ponto da string ou removendo o byte final), embora os valores possam ser modificados.
Parâmetros
- param – Um ponteiro para o
QkParam.
Retorna
Um ponteiro para uma matriz de caracteres terminada em NUL que contém a representação da string para param.
qk_param_add
QkExitCode qk_param_add(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamAdicione dois.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos valores out, lhs ou rhs não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para a variável
QkParamonde será armazenado o resultado delhs + rhs. QkParamlhs – Um ponteiro para o lado esquerdo.QkParamrhs – Um ponteiro para o lado direito.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_sub
QkExitCode qk_param_sub(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamSubtraia dois.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos valores out, lhs ou rhs não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para uma variável
QkParamonde será armazenado o resultado delhs - rhs. QkParamlhs – Um ponteiro para o lado esquerdo.QkParamrhs – Um ponteiro para o lado direito.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_mul
QkExitCode qk_param_mul(QkParam *out, const QkParam *lhs, const QkParam *rhs)
QkParamMultiplique dois.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos valores out, lhs ou rhs não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para uma variável
QkParamonde será armazenado o resultado delhs * rhs. QkParamlhs – Um ponteiro para o lado esquerdo.QkParamrhs – Um ponteiro para o lado direito.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_div
QkExitCode qk_param_div(QkParam *out, const QkParam *num, const QkParam *den)
Divida a QkParam por outro.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos valores out, num ou den não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para uma variável
QkParamonde será armazenado o resultado delhs / rhs. QkParamnum – Um ponteiro para o numerador.QkParamden – Um ponteiro para o denominador.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_pow
QkExitCode qk_param_pow(QkParam *out, const QkParam *base, const QkParam *pow)
Elevar a QkParam à potência de outro.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos valores out, base ou pow não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para uma variável
QkParamonde será armazenado o resultado delhs ** rhs. QkParambase – Um ponteiro para o lado esquerdo.QkParampow – Um ponteiro para o lado direito.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_sin
QkExitCode qk_param_sin(QkParam *out, const QkParam *src)
Calcule o seno de a QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sin(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
sin(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o elemento
QkParamao qual se aplicará a função seno.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_cos
QkExitCode qk_param_cos(QkParam *out, const QkParam *src)
QkParamCalcule o cosseno de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_cos(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
cos(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o elemento
QkParamao qual se aplicará a função cosseno.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_tan
QkExitCode qk_param_tan(QkParam *out, const QkParam *src)
Calcule a tangente de a QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_tan(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
tan(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o elemento
QkParamao qual a tangente será aplicada.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_asin
QkExitCode qk_param_asin(QkParam *out, const QkParam *src)
Calcule o arco seno de a QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_asin(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
asin(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o valor
QkParamao qual se aplicará a função arcseno.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_acos
QkExitCode qk_param_acos(QkParam *out, const QkParam *src)
QkParamCalcule o arcocseno de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_acos(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
acos(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o elemento
QkParamao qual se aplicará a função cosseno.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_atan
QkExitCode qk_param_atan(QkParam *out, const QkParam *src)
QkParamCalcule a arcotangente de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_atan(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para o
QkParamonde o resultado será armazenado,atan(src). - src – Um ponteiro para o valor
QkParamao qual se aplicará a função arcotangente.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_log
QkExitCode qk_param_log(QkParam *out, const QkParam *src)
QkParamCalcule o logaritmo natural de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_log(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
log(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o valor
QkParamao qual se aplicará o logaritmo.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_exp
QkExitCode qk_param_exp(QkParam *out, const QkParam *src)
Aplique a função exponencial a um QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_exp(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
exp(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o
QkParamvalor cuja exponencial deve ser calculada.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_abs
QkExitCode qk_param_abs(QkParam *out, const QkParam *src)
QkParamCalcule o valor absoluto de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_abs(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- out – Um ponteiro para o objeto
QkParamno qual o resultado será armazenado. - src – Um ponteiro para o objeto
QkParam.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_sign
QkExitCode qk_param_sign(QkParam *out, const QkParam *src)
Descubra o significado de um QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_sign(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
sign(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o
QkParamvalor cujo sinal se deseja obter.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_neg
QkExitCode qk_param_neg(QkParam *out, const QkParam *src)
Negar a QkParam.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_neg(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
-srcout – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o valor
QkParama ser negado.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_conjugate
QkExitCode qk_param_conjugate(QkParam *out, const QkParam *src)
QkParamCalcule o conjugado complexo de a.
Exemplo
QkParam *a = qk_param_new_symbol("a");
QkParam *out = qk_param_zero();
qk_param_conjugate(out, a);Segurança
O comportamento é indefinido se qualquer um dos parâmetros out ou src não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
conj(src)out – Um ponteiro para a variávelQkParamonde o resultado será armazenado.- src – Um ponteiro para o elemento
QkParama ser conjugado.
Retorna
Um código de saída que indica QkExitCode_Success sucesso em caso de sucesso e um erro caso contrário.
qk_param_equal
bool qk_param_equal(const QkParam *lhs, const QkParam *rhs)
Compare dois QkParam valores para verificar se são iguais.
Exemplo
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);Segurança
O comportamento é indefinido se qualquer um dos parâmetros lhs ou rhs não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
QkParamlhs – Um ponteiro para o lado esquerdo.QkParamrhs – Um ponteiro para o lado direito.
Retorna
true se os QkParam objetos forem iguais, false caso contrário.
qk_param_as_real
double qk_param_as_real(const QkParam *param)
Tente converter em QkParam double.
Se não for possível converter o parâmetro para um double, devido à existência de parâmetros não definidos, NAN é retornado. Observe que, ao QkParam representar valores complexos, é retornada a parte real.
Exemplo
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);Segurança
O comportamento é indefinido se param não for um ponteiro válido e diferente de nulo para um QkParam.
Parâmetros
- param – Um ponteiro para a função
QkParama ser avaliada.
Retorna
O valor, se a conversão foi bem-sucedida; caso contrário, NAN.