40 lines
No EOL
2.2 KiB
Markdown
40 lines
No EOL
2.2 KiB
Markdown
# Basic Geometry Computations
|
||
|
||
## Библиотека базовых геометрических вычислений для Си
|
||
|
||
(English: library of basic geometric computations)
|
||
|
||
[English version / версия на английском языке](./README-Eng.md)
|
||
|
||
Язык программирования: Си (C99)
|
||
|
||
Версия: 0.2.0-dev
|
||
|
||
Лицензия: Apache-2.0
|
||
|
||
Основными целями разработки данной библиотеки были:
|
||
|
||
1. Производительность
|
||
2. Функциональность
|
||
3. Универсальность
|
||
|
||
Производительность была на первом месте, что оказало влияние на особенности
|
||
реализации библиотеки.
|
||
|
||
Например, в качестве основного способа возврата структур данных в качестве
|
||
результата выполнения функции был выбран возврат через параметр, что позволяет
|
||
избежать избыточного копирования данных через стек вызова.
|
||
|
||
Также большинство функций выполнены как inline, давая возможность компилятору
|
||
заменять вызов функции на тело функции.
|
||
|
||
Библиотека использует два типа чисел с плавающей запятой: **float** и **double**
|
||
(типы **binary32** и **binary64** стандарта **IEEE 754**). Что также повлияло на
|
||
особенности дизайна библиотеки.
|
||
|
||
Библиотека как бы неявно разделена на две половины - одна половина для данных
|
||
типа **float**, а другая - для данных типа **double**. Но между этими половинами
|
||
есть мостики - функции преобразования типа.
|
||
|
||
Однако в библиотеке мало функций, которые используют для вычисления данные разных
|
||
типов (**float** и **double** одновременно). |