Code Monkey home page Code Monkey logo

math.h's Introduction

Chapter I

Introduction

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

Chapter II

Information

Математические операции на языке Си представляют собой группу функций в стандартной библиотеке языка программирования Си, реализующих основные математические функции. Все функции так или иначе используют числа с плавающей запятой. Различные стандарты 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) вычисляет тангенс

Chapter III

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

Необходимо реализовать функции библиотеки math.h (только те, что непосредственно описаны выше):

  • Библиотека должна быть разработана на языке Си стандарта C11 с использованием компиятора gcc
  • Код библиотеки должен находиться в папке src в ветке develop
  • Не использовать устаревшие и выведенные из употребления конструкции языка и библиотечные функции. Обращать внимания на пометки legacy и obsolete в официальной документации по языку и используемым библиотекам. Ориентироваться на стандарт POSIX.1-2017
  • При написании кода необходимо придерживаться Google Style
  • Оформить решение как статическую библиотеку (с заголовочным файлом s21_math.h)
  • Библиотека должна быть разработана в соответствии с принципами структурного программирования, должно быть исключено дублирование кода
  • Перед каждой функцией использовать префикс s21_
  • Подготовить полное покрытие unit-тестами функций библиотеки c помощью библиотеки 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's People

Contributors

gevorg-tsat avatar artyurexe avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.