C'è un modo per calcolare l'ennesima radice di un doppio nell'obiettivo-c?Calcola l'ennesima radice?
Non riesco a trovare una funzione appropriata.
C'è un modo per calcolare l'ennesima radice di un doppio nell'obiettivo-c?Calcola l'ennesima radice?
Non riesco a trovare una funzione appropriata.
è necessario utilizzare la funzione pow:
pow(d, 1.0/n)
Matematicamente, la radice n-esima di x è x alla potenza di 1/n.
Non ho idea di quale sarebbe la sintassi dell'obiettivo-c, ma fondamentalmente si desidera utilizzare la funzione di potenza con 1/n come esponente.
Per radici dispari (ad esempio cubo) e numeri negativi, il risultato della radice è ben definito e negativo, ma usando solo pow(value, 1.0/n)
non funzionerà (si ottiene 'NaN' - non un numero).
Quindi, utilizzare questo invece:
int f = (value < 0 && (n % 2 == 1)) ? -1 : 1;
root = pow(value * f, 1.0/n) * f
potrebbe essere saggio di utilizzare un galleggiante esplicito qui 'Pow (d, 1.0/n)', in quanto altrimenti non funzionerà con n come numero intero. – joerick
buona osservazione – fceruti
Questo non funzionerà con radici dispari (ad esempio cubiche) e valori negativi - vedi la mia risposta qui sotto. –