Как вычислить корень любой заданной степени из числа, не используя функцию Math::pow?

Как можно вычислить корень любой заданной степени из числа, не используя функцию Math::pow?

void res() {
    int root = 2, numb = 16;
    num res = pow(numb, 1 / root);

    print(res); //Output: 4.0
  }

Возможно есть решения на других ЯП, тоже ознакомлюсь с ответами.


Ответы (2 шт):

Автор решения: bahmN

Ответ заложен в данной статье Алгоритм вычисления корня n-ой степени из произвольного положительного числа

double mabs(double x) {
  return (x < 0) ? -x : x;
}

class RootNumber {
  void res() {
    double num = 521;
    int rootDegree = 11;

    double eps = 0.0001;
    double root = num / rootDegree;
    double rn = num;
    while (mabs(root - rn) >= eps) {
      rn = num;
      for (int i = 1; i < rootDegree; i++) {
        rn = rn / root;
      }
      root = 0.5 * (rn + root);
    }
    print('Result = ${root.toStringAsFixed(3)}');
  }
}
→ Ссылка
Автор решения: MBo
res = exp(ln(numb) / root);

Всё.

→ Ссылка