Pull to refresh
23
Максим Байтель@StarPilgrim

Разработчик на C++ и других языках

11
Subscribers
Send message

Так можно - но каждая итерация же делает метод медленнее

Невозможно ответить на этот вопрос, не проведя экспериментов. Скорее всего результат будет неплохой - храним все значения для uit16_t , делаем два шага алгоритма , шаг коррекции

А сами множители считаются методом Ньютона?

Глянул по диагонали - да, это очень близко к теме статьи, и что то интересное про полиномы Чебышева

Согласен, там мозговыносящая часть

Да, очень круто для самостоятельного вывода...Эти констатнты они влезают в 32 бита, насколько я вижу. Там я в конце писал, что по алгоритму из статьи может M не влезть в базовый тип, но тогда он срежется по модулю...пример div27очень похож на те случаи

А вы можете дать какие-то ссылки где подробнее можно почитать? Я вот так сходу не могу врубиться откуда формула и тд

Есть формальное описание как брать этот корень в двоичной системе, но мне оно не очень нравится, лучше покрутить в голове примеры

Я ерунду сказал насчёт сдвигов: там и так целое, сдвигать надо только для повышения точности когда число не квадрат (видимо) а потом надо учесть все же сдвинуть потому что если исходно число например было 2 знака после точки (т.е. количество 0.25 по сути) после корня оно будет число 0.5 - надо додвигать. А так взятие квадратного корня в бинарной системе вроде не оч сложно - тоже почитал вчера

Судя по всему существуют, вот что я нашёл: https://github.com/chmike/fpsqrt

Но вот мое (спонтанное) мнение: сдвинуть влево на чётное число разрядов, что б получить целое - потом взять примерный корень, и сдвинуть обратно вправо, на половину первоначальных разрядов

Да, в целом согласен, просто для одной статьи перебор, а в микроконтроллерах я не очень силён

Вопрос можно считать закрытым: при флаге -O2 компилятор генерирует как раз shr ax, 11

Да, стоило, наверное это и в тексте подчеркнуть, ну ладно

Интересный вопрос, я это тоже заметил, пока не могу ответить, скажу только, что их может быть даже три сдвига, посмотрите деление на 7, например, но там понятно почему их нельзя заменить общим сдвигом

Я тут вспомнил, что во второй части статьи нету вызова mask с переменной времени исполнения

лучше поплаваем, чем макросы

Конечно нет, в принципе вообще можно целое приложение написать без double кстати говоря, в том смысле, что они не понадобяся, будут строки и инты

В принципе да, но это constexpr- надеюсь, что компилятор это развернёт в момент компиляции

Information

Rating
Does not participate
Registered
Activity

Specialization

Десктоп разработчик, Бэкенд разработчик