Math
Документация по проекту: Реализация библиотеки math.h
Глава I: Введение
В данном проекте предусмотрена разработка собственной версии стандартной библиотеки math.h
на языке программирования C. Целью проекта является реализация базовых математических операций, аналогичных тем, что предоставляются стандартной библиотекой C. Этот проект позволит ознакомиться с основами вычислительных методов, а также закрепить подходы структурного программирования и разработку статических библиотек.
Глава II: Информация
Математические операции в языке C включают функции, работающие с числами с плавающей запятой. Эти функции используются в различных вычислительных задачах и являются стандартной частью библиотеки C. В данном проекте будет реализован ограниченный набор функций из стандартной библиотеки math.h
, включающий следующие:
Обзор функций
No. | Function | Description |
---|---|---|
1 | int abs(int x) | Вычисляет абсолютное значение целого числа. |
2 | long double acos(double x) | Вычисляет арккосинус. |
3 | long double asin(double x) | Вычисляет арксинус. |
4 | long double atan(double x) | Вычисляет арктангенс. |
5 | long double ceil(double x) | Возвращает ближайшее целое число, не меньшее заданного значения. |
6 | long double cos(double x) | Вычисляет косинус. |
7 | long double exp(double x) | Возвращает значение e , возведенное в заданную степень. |
8 | long double fabs(double x) | Вычисляет абсолютное значение числа с плавающей точкой. |
9 | long double floor(double x) | Возвращает ближайшее целое число, не превышающее заданное значение. |
10 | long double fmod(double x, double y) | Остаток операции деления с плавающей точкой. |
11 | long double log(double x) | Вычисляет натуральный логарифм. |
12 | long double pow(double base, double exp) | Возводит число в заданную степень. |
13 | long double sin(double x) | Вычисляет синус. |
14 | long double sqrt(double x) | Вычисляет квадратный корень. |
15 | long double tan(double x) | Вычисляет тангенс. |
Функции, работающие с углами, используют радианы в качестве единицы измерения.
Глава III: Реализация
Part 1. Реализация функций библиотеки math.h
Требования:
-
Язык программирования и стандарты:
- Библиотека должна быть разработана на языке C стандарта C11 с использованием компилятора
gcc
. - Код библиотеки должен находиться в папке
src
в веткеdevelop
.
- Библиотека должна быть разработана на языке C стандарта C11 с использованием компилятора
-
Кодирование:
- Не использовать устаревшие или выведенные из употребления конструкции языка и библиотечные функции. Ориентироваться на стандарт POSIX.1-2017.
- Следовать стилю кода Google Style.
- Реализовать библиотеку как статическую библиотеку с заголовочным файлом
s21_math.h
. - Использовать префикс
s21_
перед каждой функцией. - Исключить дублирование кода и придерживаться принципов структурного программирования.
-
Тестирование:
- Подготовить полное покрытие unit-тестами функций библиотеки с помощью библиотеки Check.
- Unit-тесты должны проверять результаты работы вашей реализации путем сравнения с реализацией стандартной библиотеки
math.h
. - Unit-тесты должны покрывать не менее 80% каждой функции.
- В цели
gcov_report
должен формироваться отчетgcov
в виде HTML-страницы. Для этого unit-тесты должны запускаться с флагамиgcov
.
-
Сборка:
- Предусмотреть
Makefile
для сборки библиотеки и тестов с целямиall
,clean
,test
,s21_math.a
,gcov_report
.
- Предусмотреть
-
Ограничения:
- Запрещено копирование реализации и использование стандартной библиотеки
math.h
везде, кроме unit-тестов. - Необходимо соблюсти логику работы стандартной библиотеки (в части проверок, работы с памятью и поведения в нештатных ситуациях — здесь помогут тесты).
- Общая проверяемая точность — 16 значащих цифр.
- Проверяемая точность дробной части — максимум 6 знаков после запятой.
- Запрещено копирование реализации и использование стандартной библиотеки
Эта документация предоставляет описание и требования для реализации собственной версии библиотеки math.h
, включая подробности по реализации, тестированию и сборке.