何桁の精度が必要ですか?例では4桁しか使用していません。これが医療であり、現実の世界では、現実の世界のほとんどのものを10〜13桁の精度でしか測定できず、doubleの精度は最大16桁です。
System.out.println(Math.pow(11.11, -1.54));
プリント
0.024524510581710988
この本http://www.apropos-logic.com/nc/のライブラリを使用すると、次のようになります。
int runs = 10000;
long start = System.nanoTime();
double x1 = 0;
for (int i = 0; i < runs; i++)
x1 = Math.pow(11.11, -1.54);
long time = System.nanoTime() - start;
System.out.println(x1 + " took " + time / runs / 1e3 + " us avg.");
long start2 = System.nanoTime();
BigDecimal x2 = null;
for (int i = 0; i < runs; i++)
x2 = exp(ln(BigDecimal.valueOf(11.11), 20).multiply(BigDecimal.valueOf(-1.54)), 20);
long time2 = System.nanoTime() - start2;
System.out.println(x2 + " took " + time2 / runs / 1e3 + " us avg.");
印刷(マイクロ秒単位)
0.024524510581710988 took 0.478 us avg.
0.02452451058171098739 took 603.769 us avg.
40桁の精度で
0.0245245105817109873886495555036930857940 took 1409 us avg.
それでもデバイス上で十分に高速である可能性があります。
コードが非常に長いこともあり、コードは含めていません。私はそれがどれほど速いかに感銘を受けました。;)