Я попытался реализовать алгоритм Эстрона в Java, но, к сожалению, он не работает < /p>
Кто -нибудь может помочь мне с тем, где проблема и как это исправить?
Код: Выделить всё
import static java.lang.Math.log;
import static java.lang.Math.pow;
public class EstrinMethod {
static int Estin(int poly[] , int x)
{
int shift ;
int degree = 0;
double npower2 = 0 ;
int n = 0;
double numsteps = 0;
int nearestPowerOfTwo = 0;
if (nearestPowerOfTwo % n != 0)
{
shift = nearestPowerOfTwo - (n % nearestPowerOfTwo);
npower2 = degree + shift;
}
else
{
shift = 0;
npower2 = n;
}
numsteps = pow(2,log(npower2));
return 0;
}
public static void main(String[] args)
{
int[] poly = {2,-6,2,-1};
int x = 3;
System.out.println("Value of polynomial in Estrin's method is "
+ Estin(poly,x));
}
< /code>
} < /p>
Приведенный выше код выборочного кода не выходит за рамки искупления. < /p>
Схема Эстрин для оценки полинома эффективно и имеет интересную и важную, так что единственный вопрос о том, что он заслуживает, чтобы быть улучшенным, а затем есть ответ. Суперкаларная архитектура в сочетании с выполнением вне порядка допускает параллельное выполнение независимых подэкспрессий. Существует небольшой штраф за то, чтобы платить по точности. y = a + x*(b + x*(c + x*d));
< /code>
Схема Эстрин требует только одного дополнительного умножения < /p>
y = a + x*b + (x*x)*(c + x*d);
Фон схемы Эстрана описывается на википедии. Короче говоря, это оптимально, если вы заботитесь о минимизации времени выполнения и задержки, а не об общем количестве операций. Немного полиномов начинается на странице 35.
Подробнее здесь: https://stackoverflow.com/questions/714 ... hm-in-java