Функции 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, если переменная отсутствует)
//Число
//Адрес первого операнда
//Адрес второго операнда
//Количество ссылок на эту формулу
//Зарезервированное поле
|