Skip to content

pipitochka/2_course_cpp_expression

Repository files navigation

Expression

практикум №2, реализация символьного вычисления производных

Содержание

Установка

Соберите проект:

$ mkdir build && cd build
$ cmake ..
$ make

Подключение

Для подключения основной библиотеки

#include "inc/Expression.h"

В CMakeList

include_directories(inc)

Для подключения парсера из строчки в Expression (вместе с Expression)

#include "inc/Parser.h"
#include "inc/Expression.h"

В CMakeList

include_directories(inc)

file(GLOB TOKEN_SOURCES
        src/Token.cpp
)

add_library(TOKEN ${TOKEN_SOURCES})

target_link_libraries(YOUR_TARGET PRIVATE TOKEN)

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

Создание выржаения

auto expr = std::make_shared<BinaryExpression<double>>(
    std::make_shared<MonoExpression<double>>(
        std::make_shared<VarExpression<double>>("x"),
        sin_func
    ),
    std::make_shared<ConstantExpression<double>>(3),
    mul_op
);

Класс поддерживает операции div(std::string &s) и eval(std::map<std::string, double> &params)

auto expr_diff = expr->diff(s);
double value = expr>eval(params);

Для печати есть функция toString()

std::cout >> expr->toString();

Также можно подключить отптимизацию

auto expr_optimize = optimize(expr);

Чтобы преобразовать строку в Expression

auto tokens = tokenize(str);
auto expr = parseExpression(tokens.get())

Тесты

Тесты будут находиться в папке test, запустить их можно следубщими командами

$ cd tests
$ ./testsType

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published