У меня есть следующий код sage, который запускается мгновенно (менее секунды), и я пытаюсь преобразовать его в Java (используя встроенную библиотеку BigInteger Java). Но я не увенчался успехом.Попытка понять систему номер шага для BigInteger
Короче говоря, я инициализируется N как BigInteger и дельта в два раза, и для того, чтобы вычислить мощность (BigInteger^дважды) я преобразовал N к BigDecimal (т.е. new BigDecimal(BigInteger))
, а затем:
- я использовал this подход, но это слишком медленно (очень медленно).
- Я использовал this библиотеки, но я потерял слишком много точности.
- Я использовал библиотеку this, но я получил исключение переполнения.
N = 16260595201356777876687102055392856230368799478725437225418970788404092751540966827614883675066492383688147288741223234174448378892794567789551235835087027626536919406320142455677084743499141155821894102610573207343199194327005172833989486958434982393556326206485954223151805798621294965926069728816780985683043030371485847746616146554612001066554175545753760388987584593091716701780398711910886679925612838955858736102229719042291682456480437908426849734556856917891628730543729446245974891735371991588505429152639045721840213451875487038496578525189542369448895368117152818687795094021869963915318643663536132393791
delta = 0.26
X = 2*floor(N^delta) # in sage,^operator means exponentiation
# similar to ** operator in python
print("X:" + str(x))
Выход:
X: 32803899270297070621193977210731234596426011189989730481205367370572340252530823123935195892838208219967066426399488721710159859316222019683979411877007525412864
Что такое магия? Как мудрец это делает? Как преобразовать этот код в Java (и получить аналогичный результат), должно быть какое-то решение.
По существу я хочу экспоненциируются BigInteger в два раза. –
В этом случае я озадачен необходимостью точности, превышающей то, что вы могли бы получить, преобразовывая очень большое целое число в "double" и увеличивая степень с помощью 'pow()', потому что экспоненциальное отношение к нецелочисленной мощности даст иррациональное число в результате. – Steve
@Steve Я попробовал (ссылка: http://pastebin.com/raw/BpGn83Sb), но я получаю бесконечность. –