Здравствуйте, Lexey, Вы писали:
L>Здравствуйте, Sharov, Вы писали:
S>>>Нормальной быстрой математики под дотнет нет, большинство реализаций ничего кроме фейспалма не вызывают. Как пример.
S>>https://www.centerspace.net/nmath
S>>Но там нет того, что нужно ТС.
L>Еще есть: http://numerics.mathdotnet.com/
L>Но, там пока тоже нет длинной арифметики.
Любую длинную арифметику я могу написать сам, и эта задача — интересная и даже простая, по сравнению с задачей оптимизации — заставить программу,
просто прочитать RDX регистр,
вместо того чтобы городить 4 умножения (+ обнуления частей + операции сложения), где могло быть одно умножение, и также, потери при операциях с делением.
Будь я разработчиком .NET Framework, не оставил бы без реализации такую очевидную возможность процессора. (деление 128 бит на 64 бит, или умножение 64 бит на 64 бит, и получение 128 бит).
Да, можно перейти на C++ и даже почти целиком, но тогда теряешь остальные вкусные преимущества C#
Я думаю,
ulong * ulong трансформируется в inline-метод, типа,
ulong Multiply (ulong a, ulong b)
а был бы — перегруженный, аналогичный
ulong Multiply (ulong a, ulong b, ref ulong resultHighPart)
Можно же было это сделать на уровне компилятора.