/*! \ingroup IN_OUT_GROUP \fn int writebin(void* x, int n, int dtype, char* fn) \brief Сохранить данные в бинарный файл Функция сохраняет реальный или комплексный вектор данных размера `[n x 1]` в бинарный файл `fn`.

Файл является универсальным для хранения как одномерных, так и двумерных массивов и имеет следующий формат:

type 4 байта типа `int`.
Может принимать значение:
`DAT_DOUBLE`, если адрес `x` указывает на вектор вещественных чисел;
`DAT_COMPLEX`, если адрес `x` указывает на вектор комплексных чисел.

`n` 4 байта типа `int`.
Количество строк данных.

`m` 4 байта типа `int`.
Количество столбцов данных.
При сохранении вектора всегда равно 1.

data после идут данные в бинарном виде.
Размер данных:
`n * sizeof(double)`, если `dtype==DAT_DOUBLE`;
`n * sizeof(complex_t)`, если `dtype==DAT_COMPLEX`.

Файл может быть использован для верификации алгоритмов сторонними пакетами, такими как GNU Octave или Matlab.

\param[in] x Указатель на массив данных.
Размер вектора `[n x 1]`.

\param[in] n Размер вектора данных.

\param[in] dtype Тип данных.
Может принимать значения: `DAT_DOUBLE` или `DAT_COMPLEX`.

\param[in] fn Имя файла.

\return `RES_OK` Файл сохранен успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки":
\note Данная функция производит запись в файл без потери точности, поэтому рекомендуется использовать ее для верификации данных DSPL.

Функция для чтения бинарного файла в GNU Octave и Matlab: \code function [dat, n, m] = readbin(fn) fid = fopen(fn); if(~fid) error('cannot to open file'); end type = fread(fid, 1, 'int32'); n = fread(fid, 1, 'int32'); m = fread(fid, 1, 'int32'); if(type==0) dat = fread(fid, [n*m, 1], 'double'); end if(type==1) y = fread(fid, [n*m*2, 1], 'double'); dat = y(1:2:end) + 1i * y(2:2:end); end dat = reshape(dat, n, m); fclose(fid); end \endcode \author Бахурин Сергей. www.dsplib.org */ /*! \ingroup IN_OUT_GROUP \fn int writetxt(double* x, double *y, int n, char* fn) \brief Сохранить вещественные данные в текстовый файл Функция сохраняет вещественные данные в текстовый файл `fn`.
Файл имеет следующий формат
\verbatim x[0] y[0] x[1] y[1] ... x[n-1] y[n-1] \endverbatim Файл может быть использован для построения графика сторонней программой.

\param[in] x Указатель на первый вектор.
Размер вектора `[n x 1]`.

\param[in] y Указатель на второй вектор.
Размер вектора `[n x 1]`.
Может быть `NULL`.
Файл будет содержать только один столбец соответствующий вектору `x` если `y == NULL`.

\param[in] n Размер входных векторов.

\param[in] fn Имя файла.

\return `RES_OK` Файл сохранен успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки":
\note Данная функция производит округление данных при записи в файл. Поэтому не рекомендуется использовать ее для верификации данных DSPL. \author Бахурин Сергей. www.dsplib.org */