Обработка ошибок | |
enum | nl_err_enum { nl_err_OK = 0, nl_err_out_of_memory = 1, nl_err_inconsistent_size, nl_err_incorrect_index, nl_err_matrix_must_be_square, nl_err_matrix_is_singular, nl_err_matrix_is_not_positive_definite, nl_err_IO, nl_err_diag_elem_must_be_non_zero, nl_err_count } |
Коды ошибок. Подробнее... | |
void(*) | nl_error (nl_err_enum error, int critical) |
Указатель на функцию, которая вызывается в случае возникновения ошибки. | |
int | nl_exit_when_error |
Если значение этой переменной отлично от нуля, то в случае возникновения ошибки процедура nl_error прерывает работу программы. | |
Создание, удаление и копирование векторов | |
double * | nl_dvector_create (size_t n) |
Создать вектор длины . | |
size_t * | nl_xvector_create (size_t n) |
Создать вектор длины . | |
double * | nl_dvector_create_copy (const double *v, size_t n) |
Создать копию вектора длины . | |
size_t * | nl_xvector_create_copy (size_t *v, size_t n) |
Создать копию вектора длины . | |
void | nl_dvector_copy (double *a, const double *b, size_t n) |
Копирует вектор в вектор . | |
void | nl_xvector_copy (size_t *a, const size_t *b, size_t n) |
Копирует вектор в вектор . | |
void | nl_dvector_free (double *v) |
Освободить память, занятую вектором длины . | |
void | nl_xvector_free (size_t *v) |
Освободить память, занятую вектором длины . | |
Ввод и вывод векторов | |
void | nl_dvector_print (double *v, size_t n, const char *format) |
Форматированный вывод вектора длины на экран. | |
void | nl_xvector_print (size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины на экран. | |
void | nl_dvector_fprint (FILE *file, const double *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл file. | |
void | nl_xvector_fprint (FILE *file, const size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл file. | |
void | nl_dvector_fwrite (const char *filename, double *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл с именем . | |
void | nl_xvector_fwrite (const char *filename, size_t *v, size_t n, const char *format) |
Форматированный вывод вектора длины в файл с именем . | |
double * | nl_dvector_scan (size_t *n) |
Чтение вектора с клавиатуры. | |
size_t * | nl_xvector_scan (size_t *n) |
Чтение вектора с клавиатуры. | |
double * | nl_dvector_fscan (FILE *file, size_t *n) |
Чтение вектора из файла. | |
size_t * | nl_xvector_fscan (FILE *file, size_t *n) |
Чтение вектора из файла. | |
double * | nl_dvector_fread (const char *filename, size_t *n) |
Чтение вектора из файла. | |
size_t * | nl_xvector_fread (const char *filename, size_t *n) |
Чтение вектора из файла. | |
Операции с векторами | |
void | nl_dvector_add (double *a, const double *b, size_t n) |
Сложение векторов. | |
void | nl_dvector_sub (double *a, const double *b, size_t n) |
Вычитание из вектора вектора . | |
double | nl_dvector_diff_norm1 (const double *a, const double *b, size_t n) |
Вычисление 1-нормы (манхеттенской) разности двух векторов. | |
double | nl_dvector_diff_norm2 (const double *a, const double *b, size_t n) |
Вычисление 2-нормы разности (евклидовой) двух векторов. | |
double | nl_dvector_norm1 (const double *a, size_t n) |
Вычисление 1-нормы (манхеттенской) вектора. | |
double | nl_dvector_norm2 (const double *a, size_t n) |
Вычисление 2-нормы (евклидовой) вектора. | |
double | nl_dvector_norm_inf (const double *a, size_t n) |
Вычисление -нормы (чебышевой) вектора. | |
double | nl_dvector_dot (const double *a, const double *b, size_t n) |
Вычисление скалярного произведения векторов. | |
void | nl_dvector_axpy (double alpha, const double *x, const double *y, size_t n, double *z) |
Вычисление вектора . | |
void | nl_dvector_permute (const double *a, const size_t *P, size_t n, double *b) |
Перестановка элементов вектора. | |
Создание, удаление и копирование матриц | |
double ** | nl_dmatrix_create (size_t m, size_t n) |
Создать матрицу с размерами . | |
double ** | nl_dmatrix_create_copy (const double **A, size_t m, size_t n) |
Создать копию матрицы с размерами . | |
void | nl_dmatrix_copy (double **A, const double **B, size_t m, size_t n) |
Копирует -матрцу B матрицу . | |
void | nl_dmatrix_free (double **A, size_t m) |
Освободить память, занятую матрицей с размерами . | |
double ** | nl_dmatrix_convert (double *A, size_t m, size_t n) |
Конвертация представления матрицы. | |
Ввод и вывод матриц | |
void | nl_dmatrix_print (double **A, size_t m, size_t n, const char *format) |
Форматированный вывод матрицы на экран. | |
void | nl_dmatrix_fprint (FILE *file, double **A, size_t m, size_t n, const char *format) |
Форматированный вывод матрицы в файл . | |
void | nl_dmatrix_fwrite (const char *filename, double **A, size_t m, size_t n, const char *format) |
Форматированный вывод матрицы в файл с именем . | |
double ** | nl_dmatrix_scan (size_t *m, size_t *n) |
Чтение матрицы с клавиатуры. | |
double ** | nl_dmatrix_fscan (FILE *file, size_t *m, size_t *n) |
Чтение матрицы из файла. | |
double ** | nl_dmatrix_fread (const char *filename, size_t *m, size_t *n) |
Чтение матрицы из файла. | |
Операции с матрицами | |
void | nl_dmatrix_mult (size_t m, size_t n, size_t k, double **A, double **B, double **Mul) |
Умножает матрицу размера на матрицу B Результат в размера . | |
void | nl_dmatrix_add (size_t m, size_t n, double **A, double **B) |
Сложение двух матриц. | |
void | nl_dmatrix_sub (size_t m, size_t n, double **A, double **B) |
Вычитает из матрицы размера матрицу B размера Результат в матрице . | |
double | nl_dmatrix_diff_norm_inf (double **A, double **B, size_t m, size_t n) |
Вычисление чебышевой нормы разности двух матриц. | |
Операции с матрицами и векторами | |
double * | nl_dvector_mult_dmatrix (double *b, double **A, size_t m, size_t n) |
Умножение вектора-строки на матрицу . | |
void | nl_dmatrix_mult_dvector (double **A, size_t m, size_t n, const double *b, double *res) |
Умножение матрицы на вектор справа. |
Файл содержит вспомогательные процедуры для библиотеки численных методов.
enum nl_err_enum |
Коды ошибок.
void nl_dmatrix_add | ( | size_t | m, | |
size_t | n, | |||
double ** | A, | |||
double ** | B | |||
) |
Сложение двух матриц.
double** nl_dmatrix_convert | ( | double * | A, | |
size_t | m, | |||
size_t | n | |||
) |
Конвертация представления матрицы.
Матрица с размерами , представленная в виде списка своих элементов (по строкам), конвертируется в представление, принятое в библиотеке. Тип элементов - double
void nl_dmatrix_copy | ( | double ** | A, | |
const double ** | B, | |||
size_t | m, | |||
size_t | n | |||
) |
Копирует -матрцу B матрицу .
Под элементы матрицы должно быть выделено место. Тип элементов - double
double** nl_dmatrix_create | ( | size_t | m, | |
size_t | n | |||
) |
double** nl_dmatrix_create_copy | ( | const double ** | A, | |
size_t | m, | |||
size_t | n | |||
) |
Создать копию матрицы с размерами .
Функция размещает память под матрицу, копирует значения и возвращает указатель на него. Тип элементов - double
double nl_dmatrix_diff_norm_inf | ( | double ** | A, | |
double ** | B, | |||
size_t | m, | |||
size_t | n | |||
) |
Вычисление чебышевой нормы разности двух матриц.
void nl_dmatrix_fprint | ( | FILE * | file, | |
double ** | A, | |||
size_t | m, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод матрицы в файл .
Тип элементов - double
double** nl_dmatrix_fread | ( | const char * | filename, | |
size_t * | m, | |||
size_t * | n | |||
) |
Чтение матрицы из файла.
Функция считывает из файла с именем размеры матрицы , , размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
void nl_dmatrix_free | ( | double ** | A, | |
size_t | m | |||
) |
double** nl_dmatrix_fscan | ( | FILE * | file, | |
size_t * | m, | |||
size_t * | n | |||
) |
Чтение матрицы из файла.
Функция считывает из файла размеры матрицы , , размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
void nl_dmatrix_fwrite | ( | const char * | filename, | |
double ** | A, | |||
size_t | m, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод матрицы в файл с именем .
Тип элементов - double
void nl_dmatrix_mult | ( | size_t | m, | |
size_t | n, | |||
size_t | k, | |||
double ** | A, | |||
double ** | B, | |||
double ** | Mul | |||
) |
Умножает матрицу размера на матрицу B Результат в размера .
void nl_dmatrix_mult_dvector | ( | double ** | A, | |
size_t | m, | |||
size_t | n, | |||
const double * | b, | |||
double * | res | |||
) |
Умножение матрицы на вектор справа.
void nl_dmatrix_print | ( | double ** | A, | |
size_t | m, | |||
size_t | n, | |||
const char * | format | |||
) |
double** nl_dmatrix_scan | ( | size_t * | m, | |
size_t * | n | |||
) |
Чтение матрицы с клавиатуры.
Функция считывает с клавиатуры размеры матрицы , , размещает память под матрицу, считывает значения и возвращает указатель на матрицу. Тип элементов - double
void nl_dmatrix_sub | ( | size_t | m, | |
size_t | n, | |||
double ** | A, | |||
double ** | B | |||
) |
Вычитает из матрицы размера матрицу B размера Результат в матрице .
void nl_dvector_add | ( | double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Сложение векторов.
void nl_dvector_axpy | ( | double | alpha, | |
const double * | x, | |||
const double * | y, | |||
size_t | n, | |||
double * | z | |||
) |
Вычисление вектора .
void nl_dvector_copy | ( | double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Копирует вектор в вектор .
Тип элементов - double
double* nl_dvector_create | ( | size_t | n | ) |
Создать вектор длины .
Функция размещает память под вектор и возвращает указатель на него. Тип элементов - double
double* nl_dvector_create_copy | ( | const double * | v, | |
size_t | n | |||
) |
Создать копию вектора длины .
Функция размещает память под вектор, копирует значения и возвращает указатель на него. Тип элементов - double
double nl_dvector_diff_norm1 | ( | const double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Вычисление 1-нормы (манхеттенской) разности двух векторов.
double nl_dvector_diff_norm2 | ( | const double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Вычисление 2-нормы разности (евклидовой) двух векторов.
double nl_dvector_dot | ( | const double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Вычисление скалярного произведения векторов.
void nl_dvector_fprint | ( | FILE * | file, | |
const double * | v, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод вектора длины в файл file.
Тип элементов - double
double* nl_dvector_fread | ( | const char * | filename, | |
size_t * | n | |||
) |
Чтение вектора из файла.
Функция считывает из файла с именем размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
void nl_dvector_free | ( | double * | v | ) |
Освободить память, занятую вектором длины .
Тип элементов - double
double* nl_dvector_fscan | ( | FILE * | file, | |
size_t * | n | |||
) |
Чтение вектора из файла.
Функция считывает из файла размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
void nl_dvector_fwrite | ( | const char * | filename, | |
double * | v, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод вектора длины в файл с именем .
Тип элементов - double
double* nl_dvector_mult_dmatrix | ( | double * | b, | |
double ** | A, | |||
size_t | m, | |||
size_t | n | |||
) |
Умножение вектора-строки на матрицу .
Функция выделяет память под результирующий вектор и записывает в него результат умножения.
double nl_dvector_norm1 | ( | const double * | a, | |
size_t | n | |||
) |
Вычисление 1-нормы (манхеттенской) вектора.
double nl_dvector_norm2 | ( | const double * | a, | |
size_t | n | |||
) |
Вычисление 2-нормы (евклидовой) вектора.
double nl_dvector_norm_inf | ( | const double * | a, | |
size_t | n | |||
) |
Вычисление -нормы (чебышевой) вектора.
void nl_dvector_permute | ( | const double * | a, | |
const size_t * | P, | |||
size_t | n, | |||
double * | b | |||
) |
Перестановка элементов вектора.
void nl_dvector_print | ( | double * | v, | |
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод вектора длины на экран.
Тип элементов - double
double* nl_dvector_scan | ( | size_t * | n | ) |
Чтение вектора с клавиатуры.
Функция считывает с клавиатуры размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - double
void nl_dvector_sub | ( | double * | a, | |
const double * | b, | |||
size_t | n | |||
) |
Вычитание из вектора вектора .
void nl_xvector_copy | ( | size_t * | a, | |
const size_t * | b, | |||
size_t | n | |||
) |
Копирует вектор в вектор .
Тип элементов - size_t
size_t* nl_xvector_create | ( | size_t | n | ) |
size_t* nl_xvector_create_copy | ( | size_t * | v, | |
size_t | n | |||
) |
Создать копию вектора длины .
Функция размещает память под вектор, копирует значения и возвращает указатель на него. Тип элементов - size_t
void nl_xvector_fprint | ( | FILE * | file, | |
const size_t * | v, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод вектора длины в файл file.
Тип элементов - size_t
size_t* nl_xvector_fread | ( | const char * | filename, | |
size_t * | n | |||
) |
Чтение вектора из файла.
Функция считывает из файла с именем размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
void nl_xvector_free | ( | size_t * | v | ) |
size_t* nl_xvector_fscan | ( | FILE * | file, | |
size_t * | n | |||
) |
Чтение вектора из файла.
Функция считывает из файла размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
void nl_xvector_fwrite | ( | const char * | filename, | |
size_t * | v, | |||
size_t | n, | |||
const char * | format | |||
) |
Форматированный вывод вектора длины в файл с именем .
Тип элементов - size_t
void nl_xvector_print | ( | size_t * | v, | |
size_t | n, | |||
const char * | format | |||
) |
size_t* nl_xvector_scan | ( | size_t * | n | ) |
Чтение вектора с клавиатуры.
Функция считывает с клавиатуры размер вектора , размещает память под вектор, считывает значения и возвращает указатель на вектор. Тип элементов - size_t
void(*) nl_error(nl_err_enum error, int critical) |
Указатель на функцию, которая вызывается в случае возникновения ошибки.
По умолчанию печатает на консоли сообщение об ошибке и в случае, если critical отлично от нуля или переменная nl_exit_when_error отлична от нуля, аварийно завершает работу программы. В случае необходимости пользователь может написать свой обработчик ошибок.
Если значение этой переменной отлично от нуля, то в случае возникновения ошибки процедура nl_error прерывает работу программы.