だから、BigDecimalでもうatanとかsinとか実装してるわけ。
で、double(当然native sin呼び出しだろうけど)と比べるともたついて、sin(x)/xの積分とかに影響出るわけよ。
sin値出すのに数百回、積分もいれて1000回以上のループは当たり前で。

例えば100ミリ秒に1000回以上のnewしまくりで遅いんだろうし(たぶん)、
これなら外部ライブラリをjniで呼び出したほうが速いんじゃねってこと。
jniはstackframe使えるし、newしまくりはないしな。

初めから有効精度固定なら固定少数とか外部ライブラリとか別の実装にするよ。