Одно простое ускорение - это
Result = (A/B) * (E/D)^C
По крайней мере, вы делаете на один показатель меньше.
В зависимости от того, что C, могут быть более быстрые способы. Например, если C - маленькое целое число.
редактирование:
добавив доказательства, чтобы показать, что это быстрее
public static void main(String[] args) {
StopWatch sw = new StopWatch();
float e = 1.123F;
float d = 4.456F;
float c = 453;
sw.start();
int max = 5000;
double result = 0;
for (int a = 1; a < max; a++) {
for (float b = 1; b < max; b++) {
result = (a * (Math.pow(e, c))) / (Math.pow(d, c) * b);
}
}
sw.split();
System.out.println("slow: " + sw.getSplitTime() + " result: " + result);
sw.stop();
sw.reset();
sw.start();
result = 0;
for (int a = 1; a < max; a++) {
for (float b = 1; b < max; b++) {
result = a / b * Math.pow(e/d, c);
}
}
sw.split();
System.out.println("fast: " + sw.getSplitTime() + " result: " + result);
sw.stop();
sw.reset();
}
Это вывод
slow: 26062 result: 7.077390271736578E-272
fast: 12661 result: 7.077392136525382E-272
Есть некоторые искажения в числах. Я бы подумал, что более быстрая версия более точна (но это только чувство, потому что я не могу точно понять, почему)