Czy istnieje sposób na obliczenie n-tego pierwiastka podwójnego w celu-c?Oblicz n-ty root?
Nie mogłem znaleźć odpowiedniej funkcji.
Czy istnieje sposób na obliczenie n-tego pierwiastka podwójnego w celu-c?Oblicz n-ty root?
Nie mogłem znaleźć odpowiedniej funkcji.
Trzeba korzystać z funkcji Pow:
pow(d, 1.0/n)
Matematycznie n-ty pierwiastek z x jest x do potęgi 1/n.
Nie mam pojęcia, jaka byłaby składnia celu-c, ale w zasadzie po prostu chcesz użyć funkcji zasilania z 1/n jako wykładnikiem.
dla nieparzystych korzeni (np sześcienny) i liczby ujemne, wynik korzenia jest dobrze zdefiniowana i negatywne, ale tylko przy użyciu pow(value, 1.0/n)
nie będzie działać (wrócisz "NaN" - nie numer).
Więc, użyj zamiast tego:
int f = (value < 0 && (n % 2 == 1)) ? -1 : 1;
root = pow(value * f, 1.0/n) * f
To może być mądry, aby korzystać z wyraźną pływak tutaj 'Pow (d, 1,0/n)', ponieważ w przeciwnym razie nie będzie działać z n jako liczby całkowitej. – joerick
dobra obserwacja – fceruti
Nie będzie działać dla nieparzystych (np. Sześciennych) pierwiastków i wartości ujemnych - zobacz moją odpowiedź poniżej. –