Функции Formula.dll


int WINAPI CreateFormula (
     FORMULA *f, char *s, bool poland, int *maxx, int *errpos, int *errlen
);

Назначение: формирование формулы из строки в соответствии с определённым синтаксисом.

Параметры:
fадрес формируемой формулы
sадрес строки
polandпредставлена ли формула в ОПЗ
maxxмаксимальный индекс при x
errposпозиция в строке, где обнаружена ошибка
errlenдлина участка, где обнаружена ошибка

Возвращаемое значение:
0ошибок не обнаружено
1синтаксическая ошибка
2неизвестная константа
3неизвестная функция
4слишком большой индекс при x
5логическая ошибка
6лишняя закрывающая скобка
7лишняя открывающая скобка


double WINAPI CalcFormula (
     FORMULA *f, const int n, const double *d
);

Назначение: вычисление численного значения по формуле.

Параметры:
fадрес формулы
nколичество передаваемых значений переменных
dадрес начала массива значений переменных

Возвращаемое значение: вещественное число.


int WINAPI HalfCalcFormula (
     FORMULA *f, const int n, const double *d, const bool *b
);

Назначение: подстановка в формулу значений некоторых переменных.

Параметры:
fадрес формулы
nколичество передаваемых значений переменных
dадрес начала массива значений переменных
bадрес начала массива с указаниями на подстановку

Возвращаемое значение: количество подставленных значений.


WINAPI ViewFormula (
     FORMULA *f, char *s
);

Назначение: присоединение символьного вида формулы к строке.

Параметры:
fадрес формулы
sадрес строки

Примечание: строка, полученная с помощью этой функции, не может быть использована в качестве аргумента для функции CreateFormula.


int WINAPI TestFormula (
     FORMULA *f, int *maxx, int *depth
);

Назначение: тестирование формулы.

Параметры:
fадрес формулы
maxxмаксимальный индекс при x
depthглубина формулы

Возвращаемое значение:
0ошибок не обнаружено
1деление на ноль
2ноль в степени ноль
3ошибка в логарифме
10нулевой адрес
11неизвестная функция


bool WINAPI CopyFormula (
     FORMULA *src, FORMULA *dst, bool ecmem
);

Назначение: копирование формулы.

Параметры:
srcадрес формулы-источника
dstадрес формулы-приёмника
ecmemпризнак использования связей

Возвращаемое значение: успешно ли прошло копирование.


WINAPI NewFormula (
     FORMULA **f,int oper,int index,double value,FORMULA *f1,FORMULA *f2
);

Назначение: выделение памяти под формулу и её инициализация.

Параметры:
fадрес адреса формулы
oper
index
value
f1
f2
значения для инициализации


bool WINAPI DeleteFormula (
     FORMULA *f, bool delme
);

Назначение: удаление формулы.

Параметры:
fадрес удаляемой формулы
delmeпризнак освобождения начальных 32 байт

Возвращаемое значение: была ли удалена формула.


bool WINAPI EqualFormulas (
     FORMULA *f1, FORMULA *f2
);

Назначение: определение полной эквивалентности двух формул.

Параметры:
f1адрес первой формулы
f2адрес второй формулы

Возвращаемое значение: эквивалентны ли формулы.


int WINAPI SimplifyFormula (
     FORMULA *f, const int n
);

Назначение: упрощение формулы.

Параметры:
fадрес упрощаемой формулы
nмаксимальное количество шагов упрощения

Возвращаемое значение: количество успешных шагов упрощения.


bool WINAPI DerivativeOfFormula(
     FORMULA *f, const int indx, FORMULA *fD
);

Назначение: нахождение частной производной в символьном виде.

Параметры:
fадрес исходной формулы
indxиндекс переменной дифференцирования
fDадрес формулы-результата

Возвращаемое значение: найдена ли производная.


double WINAPI ValueDerivative (
     FORMULA *f, int n, double *d, int indx, double ldx, double rdx
);

Назначение: нахождение производной численным методом.

Параметры:
fадрес формулы
nколичество передаваемых значений переменных
dадрес начала массива значений переменных
indxиндекс переменной дифференцирования
ldxлевая составляющая dx
rdxправая составляющая dx

Возвращаемое значение: значение производной в заданной точке.

Примечание: если ldx=rdx=0, то ldx и rdx выбираются автоматически.


double WINAPI ValueIntegral (
     FORMULA *f, int n, double *d, int indx, double a, double b, int prec
);

Назначение: нахождение определённого интеграла численным методом.

Параметры:
fадрес формулы
nколичество передаваемых значений переменных
dадрес начала массива значений переменных
indxиндекс переменной интегрирования
aнижний предел
bверхний предел
precколичество итераций

Возвращаемое значение: значение определённого интеграла.

Примечание: если prec – не натуральное число, то выбирается автоматически.


struct FORMULA {
     int oper;
     int index;
     double value;
     FORMULA *f1;
     FORMULA *f2;
     int usc;
     int res;
}
//Код операции или функции
//Индекс переменной (или -1, если переменная отсутствует)
//Число
//Адрес первого операнда
//Адрес второго операнда
//Количество ссылок на эту формулу
//Зарезервированное поле