Math

Форк
0

3 месяца назад
3 месяца назад
README.md

Документация по проекту: Реализация библиотеки math.h

Глава I: Введение

В данном проекте предусмотрена разработка собственной версии стандартной библиотеки math.h на языке программирования C. Целью проекта является реализация базовых математических операций, аналогичных тем, что предоставляются стандартной библиотекой C. Этот проект позволит ознакомиться с основами вычислительных методов, а также закрепить подходы структурного программирования и разработку статических библиотек.

Глава II: Информация

Математические операции в языке C включают функции, работающие с числами с плавающей запятой. Эти функции используются в различных вычислительных задачах и являются стандартной частью библиотеки C. В данном проекте будет реализован ограниченный набор функций из стандартной библиотеки math.h, включающий следующие:

Обзор функций

No.FunctionDescription
1int abs(int x)Вычисляет абсолютное значение целого числа.
2long double acos(double x)Вычисляет арккосинус.
3long double asin(double x)Вычисляет арксинус.
4long double atan(double x)Вычисляет арктангенс.
5long double ceil(double x)Возвращает ближайшее целое число, не меньшее заданного значения.
6long double cos(double x)Вычисляет косинус.
7long double exp(double x)Возвращает значение e, возведенное в заданную степень.
8long double fabs(double x)Вычисляет абсолютное значение числа с плавающей точкой.
9long double floor(double x)Возвращает ближайшее целое число, не превышающее заданное значение.
10long double fmod(double x, double y)Остаток операции деления с плавающей точкой.
11long double log(double x)Вычисляет натуральный логарифм.
12long double pow(double base, double exp)Возводит число в заданную степень.
13long double sin(double x)Вычисляет синус.
14long double sqrt(double x)Вычисляет квадратный корень.
15long double tan(double x)Вычисляет тангенс.

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

Глава III: Реализация

Part 1. Реализация функций библиотеки math.h

Требования:

  1. Язык программирования и стандарты:

    • Библиотека должна быть разработана на языке C стандарта C11 с использованием компилятора gcc.
    • Код библиотеки должен находиться в папке src в ветке develop.
  2. Кодирование:

    • Не использовать устаревшие или выведенные из употребления конструкции языка и библиотечные функции. Ориентироваться на стандарт POSIX.1-2017.
    • Следовать стилю кода Google Style.
    • Реализовать библиотеку как статическую библиотеку с заголовочным файлом s21_math.h.
    • Использовать префикс s21_ перед каждой функцией.
    • Исключить дублирование кода и придерживаться принципов структурного программирования.
  3. Тестирование:

    • Подготовить полное покрытие unit-тестами функций библиотеки с помощью библиотеки Check.
    • Unit-тесты должны проверять результаты работы вашей реализации путем сравнения с реализацией стандартной библиотеки math.h.
    • Unit-тесты должны покрывать не менее 80% каждой функции.
    • В цели gcov_report должен формироваться отчет gcov в виде HTML-страницы. Для этого unit-тесты должны запускаться с флагами gcov.
  4. Сборка:

    • Предусмотреть Makefile для сборки библиотеки и тестов с целями all, clean, test, s21_math.a, gcov_report.
  5. Ограничения:

    • Запрещено копирование реализации и использование стандартной библиотеки math.h везде, кроме unit-тестов.
    • Необходимо соблюсти логику работы стандартной библиотеки (в части проверок, работы с памятью и поведения в нештатных ситуациях — здесь помогут тесты).
    • Общая проверяемая точность — 16 значащих цифр.
    • Проверяемая точность дробной части — максимум 6 знаков после запятой.

Эта документация предоставляет описание и требования для реализации собственной версии библиотеки math.h, включая подробности по реализации, тестированию и сборке.

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.