Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
CodeDelphiНовости

Быстрый обратный квадратный корень в Object Pascal в Delphi

delphi-fast-inverse-square-root-quake-3-arena-3

Делает ли вас Delphi лучшим программистом? Код Object Pascal более читабелен?

Существует алгоритм с загадочной константой , прославившийся в коде Quake III Arena C Джона Кармака для быстрого вычисления обратного квадратного корня из 32-битного числа с плавающей запятой.

Понимание Кодекса

Он основан на методе Ньютона для оценки корней. Кроме того, он преобразует число с плавающей запятой в целое, использует битовый сдвиг и начинается с приближения √2 ^ 127. Закомментированная строка позволяет провести дополнительную итерацию для улучшения оценки, которая не использовалась в Quate III Arena. Вы можете прочитать об этом больше в Википедии или посмотреть несколько видеороликов на YouTube по этой теме [включая очень глубокое погружение ]. Вот хорошее видео высокого уровня :

Может ли Delphi сделать это лучше?

Пользователь Facebook Toon Krijthe показал, насколько понятнее и проще был бы код, если бы он был реализован на Object Pascal / Delphi.

Он использует ключевое слово absolute для сопоставления числа с плавающей запятой с целым числом, что позволяет избежать «злонамеренного взлома битового уровня с плавающей запятой». Это то, что мне нравится в Delphi и Object Pascal: он дает вам доступ к указателям, необработанной памяти и т.д., но не заставляет вас использовать его, когда вы не хотите / не нуждаетесь в нем. Более короткий код не всегда легче понять, просто взгляните на любое регулярное выражение, но это улучшение, потому что оно удаляет так много постороннего кода. Намного более читабельным.

 
 
“Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям
Martin Fowler
Software Engineer
Author of «Refactoring»

 

Object Pascal настолько удобочитаем, что делает программистов лучше, поскольку делает их код более читаемым и поддерживаемым. Не поймите меня неправильно, вы можете писать спагетти на любом языке программирования / синтаксисе, но начать с удобочитаемого языка поможет. Вот почему существует так много «устаревших» программ Delphi: они успешны и удобны в обслуживании. Код, который не работает или не обслуживается, выбрасывается или переписывается.

Нужна более эффективная математика?

Erik van Bilsen
Embarcadero MVP
Co-Founder of Grijjy, inc.
Author of neslib/FastMath

Если вы ищете более быстрые математические процедуры для Delphi, ознакомьтесь с высокопроизводительной библиотекой FastMath от Embarcadero MVP Эрика ван Бильсена из Grijjy.

FastMath — быстрая математическая библиотека для Delphi

FastMath — это математическая библиотека Delphi, оптимизированная для обеспечения высокой производительности (иногда за счет невыполнения проверки ошибок или небольшой потери точности).

Это делает FastMath идеальным решением для высокопроизводительных математических приложений, таких как мультимедийные приложения и игры. Для еще большей производительности библиотека предоставляет множество «приблизительных» функций (все они начинаются с  Fast-префикса). Это может быть очень быстро, но вы потеряете некоторую (иногда удивительно небольшую) точность. Для игр и анимации эта потеря точности обычно вполне приемлема и компенсируется увеличением скорости. Но не используйте их для научных расчетов …


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Об авторе

Главный адвокат разработчиков Embarcadero Technologies.

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

IN THE ARTICLES