1. Работа с рациональными числами, представленными в виде числителя и знаменателя - Java int.
2. Работа с плавающей точкой - Java double.
Оба примитивы.
Второй день сижу читаю интернет и не могу определиться и начать делать. Каких-то экстремально больших или экстремально малых значений не предполагается. Точность тоже не сильно критична, весь упор на производительность. Планируемые операции - только сложение, вычитание, деление и умножение. Никаких степеней, логорифмов и корней не будет.
C/C++ и CUDA пока не рассматриваю. Просто я не думаю, что оверхед перекроется выигрышем от параллелизма. А пробовать запилить два варианта решения, чтоб просто попробовать, нет ни сил, ни задора. У меня, конечно, большая часть логики SIMD, но размеры D примерно ~400'000 чисел на одну Инструкцию. Еще у меня данные хорошо скалируются, т.е. я просто могу взять еще железа и запусить тот же вычислятор за забором из Nginx. Тоже как-то не мотивирует идти с сторону C.
Короче, в раздумьях я...
![HBZ :pain1:](./images/smilies/pain25.gif)