libdspl-2.0
Digital Signal Processing Algorithm Library
complex.c
1 /*
2 * Copyright (c) 2015-2020 Sergey Bakhurin
3 * Digital Signal Processing Library [http://dsplib.org]
4 *
5 * This file is part of DSPL.
6 *
7 * is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * DSPL is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include "dspl.h"
25 
26 
27 #ifdef DOXYGEN_ENGLISH
28 
77 #endif
78 #ifdef DOXYGEN_RUSSIAN
79 
129 #endif
130 int DSPL_API cmplx2re(complex_t* x, int n, double* re, double* im)
131 {
132  int k;
133  if(!x)
134  return ERROR_PTR;
135  if(n < 1)
136  return ERROR_SIZE;
137 
138  if(re)
139  {
140  for(k = 0; k < n; k++)
141  re[k] = RE(x[k]);
142  }
143  if(im)
144  {
145  for(k = 0; k < n; k++)
146  im[k] = IM(x[k]);
147  }
148  return RES_OK;
149 }
150 
151 
152 
153 
154 #ifdef DOXYGEN_ENGLISH
155 
199 #endif
200 #ifdef DOXYGEN_RUSSIAN
201 
245 #endif
246 int DSPL_API re2cmplx(double* x, int n, complex_t* y)
247 {
248  int k;
249  if(!x || !y)
250  return ERROR_PTR;
251  if(n < 1)
252  return ERROR_SIZE;
253 
254  for(k = 0; k < n; k++)
255  {
256  RE(y[k]) = x[k];
257  IM(y[k]) = 0.0;
258  }
259  return RES_OK;
260 }
261 
262 
#define RE(x)
Macro sets real part of the complex number.
Definition: dspl.h:359
#define ERROR_PTR
Pointer error. This error means that one of the required pointers (memory to be allocated for) is tra...
Definition: dspl.h:545
#define ERROR_SIZE
Error array size. This error occurs when in addition to the pointer the wrong input is passed to the ...
Definition: dspl.h:553
int DSPL_API re2cmplx(double *x, int n, complex_t *y)
Convert real array to the complex array.
Definition: complex.c:246
int DSPL_API cmplx2re(complex_t *x, int n, double *re, double *im)
Separate complex vector to the real and image vectors.
Definition: complex.c:130
double complex_t[2]
Complex data type.
Definition: dspl.h:86
#define RES_OK
The function completed correctly. No errors.
Definition: dspl.h:497
#define IM(x)
Macro sets imaginary part of the complex number.
Definition: dspl.h:417