Накалякал програмку для вычисления корня n-ной степени из a на перле (да, наверное не для того он, но я как раз его учу, и, кроме того, компилировать ничего не надо)
#!/usr/bin/perl
use warnings;
use strict;
use 5.010;
my $base = $ARGV[0]
        // die "Usage $0 <base> <power> <quality>\n";
my $power = $ARGV[1]
        // die "Usage $0 <base> <power> <quality>\n";
my $req_quality = $ARGV[2]
        // die "Usage $0 <base> <power> <quality>\n";
# Получаем из командной строки основание, степень  точность в качестве аргументов.
my $quality = 1;        # "Качество" - точность вычисления.
my $start = 0;          # Нижняя граница числа
my $stop = $base;       # Верхняя граница числа
while ($quality >= $req_quality) {
        #Пока точность не достигает требуемой
        while ($stop-$start >= 2*$quality) {
                $start += $quality if ($start+$quality)**$power < $base;
                $stop -= $quality if ($stop-$quality)**$power > $base;
                #Сдвигаем нижнюю и верхнюю границу числа
                #Пока не подберемся вплотную к значению радикала,
        }
        print "start = $start, stop = $stop, stop - start =", $stop-$start, "\n";
        $quality /= 10;
        #Увеличиваем точность;
}
my $result = ($start + $stop)/2;
say "Result: $result in the power of $power equals ", $result**$power;
#Печатаем результат и одновременно с этим проверяем, что получилось;
Все бы хорошо, кроме этой строчки:
while ($stop-$start >= 2*$quality)while ($stop-$start > $quality)$ ./radical.pl 5 70 0.000000001
start = 1, stop = 2, stop - start =1
start = 1, stop = 1.2, stop - start =0.199999999999999
start = 1.02, stop = 1.04, stop - start =0.0199999999999991
start = 1.023, stop = 1.024, stop - start =0.00100000000000122
start = 1.0232, stop = 1.0233, stop - start =0.000100000000001321
start = 1.02325, stop = 1.02326, stop - start =1.00000000007316e-05
start = 1.023258, stop = 1.023259, stop - start =1.00000000147205e-06
start = 1.0232583, stop = 1.0232584, stop - start =1.00000000946565e-07
start = 1.02325832, stop = 1.02325833, stop - start =1.00000014935375e-08
start = 1.023258322, stop = 1.023258323, stop - start =1.00000074887419e-09
Result: 1.0232583225 in the power of 70 equals 4.99999985235406






