Я пишу калькулятор без десятичных чисел (поддерживает только числа Rational), но я бы хотел иметь возможность использовать квадратный корень.
Когда функция квадратного корня нажимается для (скажем) числа 12, я хотел бы просто упростить / «уменьшить» квадратный корень и вернуть 2 * sqrt (3) - в (2 * 2) * 3 и извлечение sqrt (2 * 2) как 2.
Я использую biginteger, который имеет очень хороший метод gcd () и метод pow (), который ограничен положительными параметрами (что имеет смысл, если вы не пытаетесь делать именно то, что я пытаюсь сделать.
Я мог бы предложить несколько итерационных способов сделать это, но они могут занять некоторое время с числами в диапазоне сотен цифр.
Я надеюсь, что есть какой-то милый, простой, не повторяющийся трюк, с которым я не сталкивался.
Просто чтобы уточнить: у меня есть намерение добавить мнимые числа, поэтому я планирую такие результаты:
17 + 4i √3
-----------
9
Без длинных потоков десятичных дробей.