jk+=2;jk-=6;if(jk>100)mk--;
}*/
start = clock()-start;
printf ("\n%f",start/CLK_TCK);
getch();
return 0;
}
Библиотека IMVL (Матрично - векторные операции)
Автор Куликов Игорь
Дата 04.06.2007
Файл imvl.h
Версия 1.2
Основные данные:
- размер матрицы (IMVL_dim)
- указатель выделенной памяти (IMVL_memory)
- указатель на первый свободный элемент памяти (IMVL_start_ptr)
- указатель для сброса матрицы (IMVL_next_start)
- значения элементов матрицы (IMVL_val)
- инвертированная главная диагональ (IMVL_di)
- индексы столбцов элементов (IMVL_col_ind)
- указатели на начало каждой строки (IMVL_row_ptr)
- вектор решения (IMVL_Solve)
- вектор правой части (IMVL_right)
Вспомогательные данные:
- указатель на конец списка (IMVL_end_list)
- список (IMVL_list)
Методы:
- создание матрицы (IMVL_CreateMatrix)
- создание вектора (IMVL_CreateVector)
- уничтожение матрицы (IMVL_DestroyMatrix)
- сброс значений матрицы (IMVL_Reset)
- создание элемента матрицы (IMVL_CreateElement)
- построение портрета матрицы (IMVL_CreatePortrait)
- добавление значения в матрицу (IMVL_AddElement)
- добавление значения в вектор (IMVL_AddElementVector)
- умножение матрицы на вектор (IMVL_MultMatrixVector)
- умножение диагональной матрицы на вектор (IMVL_MultDiagMatrixVector)
- сложение векторов (IMVL_SummVectorMultConstant)
- копирование векторов (IMVL_CopyVector)
- скалярное произведение (IMVL_ScalarMultiply)
- установка начального приближения (IMVL_SetStartVector)
- решение СЛАУ методом сопряжённых градиентов (IMVL_ConjGradientMethod)
*/
/* Подключение необходимых заголовочных файлов */
#include <memory.h>
#include <math.h>
#include <omp.h>
/* Макроопределения типов и операций над ними */
#define byte char // байт данных
#define integer long int // целый тип
#define real double // вещественный тип
#define sizeint sizeof(integer) // размер целого
#define sizereal sizeof(real) // размер вещественного
/* Определения ошибок и сообщений */
#define IMVL_OK 0 // всё в порядке
#define IMVL_OUT_OF_SPACE 1000 // недостаточно памяти
#define IMVL_ELEMENT_CREATED 1001 // элемент существует
#define IMVL_EMPTY_ERROR 1002 // непонятная ошибка
#define IMVL_ELEMENT_NOT_FOUND 1003 // элемент не найден
#define IMVL_NULL_DIAGONAL 1004 // ноль на диагонали
#define IMVL_RUN_TO_MAX_ITER 1005 // выход по итерации
#define IMVL_RUN_TO_EPSILON 1006 // выход по невязке
#define IMVL_FILE_NOT_OPEN 1007 // файл не удалось открыть
/* Определение константы точности*/
real IMVL_EPS;
/* Определение данных */
integer IMVL_dim; // размер матрицы
byte* IMVL_memory; // память
byte* IMVL_start_ptr; // начало свободной памяти
byte* IMVL_next_start;// начало памяти для сброса
real* IMVL_val; // значения элементов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.