Loading [MathJax]/extensions/TeX/AMSsymbols.js
LAL 7.7.0.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
FrequencySeries.h
Go to the documentation of this file.
1/*
2 *
3 * Copyright (C) 2007 Kipp Cannon
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
13 * Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19
20
21#ifndef _FREQUENCYSERIES_H
22#define _FREQUENCYSERIES_H
23
24
25#include <stddef.h>
26#include <lal/LALDatatypes.h>
27
28#if defined(__cplusplus)
29extern "C" {
30#elif 0
31} /* so that editors will match preceding brace */
32#endif
33
34/**
35 * \defgroup FrequencySeriesManipulation Frequency Series Manipulation
36 * \ingroup lal_tools
37 * \author Kipp Cannon <kipp@gravity.phys.uwm.edu>
38 *
39 * \brief This is a suite of functions for creating, destroying, and manipulating LAL
40 * frequency series. One pair of functions (the XLAL version and its LAL
41 * counterpart) is available for each method and frequency series type. For
42 * example XLALCreateREAL4FrequencySeries() is available for creating
43 * frequency series of \c REAL4 data, and the LAL-stype wrapper
44 * LALCreateREAL4FrequencySeries() is provided which is equivalent to
45 * the XLAL version in all respects except that it adheres to the LAL calling
46 * conventions (eg.\ it takes a \c LALStatus pointer as its first
47 * argument, its return type is \c void, etc.).
48 *
49 */
50/** @{ */
51
52/**
53 * \name Creation Functions
54 *
55 * ### Synopsis ###
56 *
57 * \code
58 * #include <lal/FrequencySeries.h>
59 *
60 * XLALCreate<frequencyseriestype>()
61 * LALCreate<frequencyseriestype>()
62 * \endcode
63 *
64 * ### Description ###
65 *
66 * These functions create LAL frequency series. An XLAL function returns a
67 * pointer to the newly created series or \c NULL on failure. The LAL
68 * counterpart accepts the address of a pointer which it fills with the
69 * address of the newly created series or \c NULL on failure.
70 * Additionally, the LAL wrapper provides standard LAL-style error checking
71 * via a \c LALStatus pointer.
72 *
73 */
74/** @{ */
75COMPLEX8FrequencySeries *XLALCreateCOMPLEX8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
76COMPLEX16FrequencySeries *XLALCreateCOMPLEX16FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
77REAL4FrequencySeries *XLALCreateREAL4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
78REAL8FrequencySeries *XLALCreateREAL8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
79INT2FrequencySeries *XLALCreateINT2FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
80INT4FrequencySeries *XLALCreateINT4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
81INT8FrequencySeries *XLALCreateINT8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
82UINT2FrequencySeries *XLALCreateUINT2FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
83UINT4FrequencySeries *XLALCreateUINT4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
84UINT8FrequencySeries *XLALCreateUINT8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
85/** @} */
86
87/**
88 * \name Destruction Functions
89 *
90 * ### Synopsis ###
91 *
92 * \code
93 * #include <lal/FrequencySeries.h>
94 *
95 * XLALDestroy<frequencyseriestype>()
96 * LALDestroy<frequencyseriestype>()
97 * \endcode
98 *
99 * ### Description ###
100 *
101 * These functions free all memory associated with a LAL frequency series. It
102 * is safe to pass \c NULL to these functions.
103 *
104 */
105/** @{ */
116/** @} */
117
118
119/**
120 * \name Cutting Functions
121 *
122 * ### Synopsis ###
123 *
124 * \code
125 * #include <lal/FrequencySeries.h>
126 *
127 * XLALCut<frequencyseriestype>()
128 * \endcode
129 *
130 * ### Description ###
131 *
132 * These functions create a new frequency series by extracting a section of an
133 * existing frequency series.
134 *
135 */
136/** @{ */
139REAL4FrequencySeries *XLALCutREAL4FrequencySeries ( const REAL4FrequencySeries *series, size_t first, size_t length );
140REAL8FrequencySeries *XLALCutREAL8FrequencySeries ( const REAL8FrequencySeries *series, size_t first, size_t length );
141INT2FrequencySeries *XLALCutINT2FrequencySeries ( const INT2FrequencySeries *series, size_t first, size_t length );
142INT4FrequencySeries *XLALCutINT4FrequencySeries ( const INT4FrequencySeries *series, size_t first, size_t length );
143INT8FrequencySeries *XLALCutINT8FrequencySeries ( const INT8FrequencySeries *series, size_t first, size_t length );
144UINT2FrequencySeries *XLALCutUINT2FrequencySeries ( const UINT2FrequencySeries *series, size_t first, size_t length );
145UINT4FrequencySeries *XLALCutUINT4FrequencySeries ( const UINT4FrequencySeries *series, size_t first, size_t length );
146UINT8FrequencySeries *XLALCutUINT8FrequencySeries ( const UINT8FrequencySeries *series, size_t first, size_t length );
147/** @} */
148
149
150/**
151 * \name Resizing Functions
152 *
153 * ### Synopsis ###
154 *
155 * \code
156 * #include <lal/FrequencySeries.h>
157 *
158 * XLALResize<frequencyseriestype>()
159 * XLALShrink<frequencyseriestype>()
160 * LALShrink<frequencyseriestype>()
161 * \endcode
162 *
163 * ### Description ###
164 *
165 * These functions resize an existing frequency series. The new frequency
166 * series will have the given length, and its contents will consist of that
167 * part of the original time series that started at sample \c first. If
168 * \c first is negative, then the new time series is padded at the start
169 * by that many samples. The frequency series' heterodyne frequency,
170 * (f_{0}), is adjusted appropriately.
171 *
172 * The "Shrink" functions accept non-negative values for the parameter
173 * \c first, and are retained only for historical purposes. New code
174 * should use the "Resize" variants.
175 *
176 */
177/** @{ */
188
199/** @} */
200
201
202/**
203 * \name Addition Functions
204 *
205 * ### Synopsis ###
206 *
207 * \code
208 * #include <lal/FrequencySeries.h>
209 *
210 * XLALAdd<frequencyseriestype>()
211 * \endcode
212 *
213 * ### Description ###
214 *
215 * These functions add the second argument to the first argument, returning a
216 * pointer to the first argument on success or NULL on failure. The two
217 * series must have the same epoch and frequency resolution, and have units
218 * that differ only by a dimensionless factor.
219 *
220 */
221/** @{ */
232/** @} */
233
234/**
235 * \name Conjugation Functions
236 *
237 * ### Synopsis ###
238 *
239 * \code
240 * #include <lal/FrequencySeries.h>
241 *
242 * XLALConjugate<frequencyseriestype>()
243 * \endcode
244 *
245 * ### Description ###
246 *
247 * These functions replace a frequency series with its complex conjugate.
248 *
249 */
250/** @{ */
253/** @} */
254
255/**
256 * \name Multiplication Functions
257 *
258 * ### Synopsis ###
259 *
260 * \code
261 * #include <lal/FrequencySeries.h>
262 *
263 * XLALMultiply<frequencyseriestype>()
264 * \endcode
265 *
266 * ### Description ###
267 *
268 * These functions multiply the first argument by the second argument,
269 * returning a pointer to the first argument on success or NULL on failure.
270 * The two series must have the same epoch and frequency resolution, and have
271 * units that differ only by a dimensionless factor.
272 *
273 */
274/** @{ */
285/** @} */
286
287/** @} */
288
289#if 0
290{ /* so that editors will match succeeding brace */
291#elif defined(__cplusplus)
292}
293#endif
294
295#endif /* _FREQUENCYSERIES_H */
const char *const name
type name
Definition: UserInput.c:193
INT4FrequencySeries * XLALCutINT4FrequencySeries(const INT4FrequencySeries *series, size_t first, size_t length)
INT2FrequencySeries * XLALCreateINT2FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT4FrequencySeries * XLALShrinkINT4FrequencySeries(INT4FrequencySeries *series, size_t first, size_t length)
COMPLEX16FrequencySeries * XLALMultiplyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *arg1, const COMPLEX16FrequencySeries *arg2)
UINT4FrequencySeries * XLALMultiplyUINT4FrequencySeries(UINT4FrequencySeries *arg1, const UINT4FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyUINT8FrequencySeries(UINT8FrequencySeries *series)
void XLALDestroyINT8FrequencySeries(INT8FrequencySeries *series)
INT8FrequencySeries * XLALCutINT8FrequencySeries(const INT8FrequencySeries *series, size_t first, size_t length)
UINT4FrequencySeries * XLALAddUINT4FrequencySeries(UINT4FrequencySeries *arg1, const UINT4FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALResizeCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series, int first, size_t length)
UINT8FrequencySeries * XLALCutUINT8FrequencySeries(const UINT8FrequencySeries *series, size_t first, size_t length)
REAL8FrequencySeries * XLALMultiplyREAL8FrequencySeries(REAL8FrequencySeries *arg1, const REAL8FrequencySeries *arg2)
INT8FrequencySeries * XLALResizeINT8FrequencySeries(INT8FrequencySeries *series, int first, size_t length)
UINT2FrequencySeries * XLALResizeUINT2FrequencySeries(UINT2FrequencySeries *series, int first, size_t length)
COMPLEX16FrequencySeries * XLALShrinkCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series, size_t first, size_t length)
INT2FrequencySeries * XLALCutINT2FrequencySeries(const INT2FrequencySeries *series, size_t first, size_t length)
COMPLEX16FrequencySeries * XLALConjugateCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
INT8FrequencySeries * XLALMultiplyINT8FrequencySeries(INT8FrequencySeries *arg1, const INT8FrequencySeries *arg2)
UINT2FrequencySeries * XLALCutUINT2FrequencySeries(const UINT2FrequencySeries *series, size_t first, size_t length)
UINT8FrequencySeries * XLALShrinkUINT8FrequencySeries(UINT8FrequencySeries *series, size_t first, size_t length)
REAL8FrequencySeries * XLALResizeREAL8FrequencySeries(REAL8FrequencySeries *series, int first, size_t length)
REAL4FrequencySeries * XLALShrinkREAL4FrequencySeries(REAL4FrequencySeries *series, size_t first, size_t length)
INT8FrequencySeries * XLALShrinkINT8FrequencySeries(INT8FrequencySeries *series, size_t first, size_t length)
REAL4FrequencySeries * XLALMultiplyREAL4FrequencySeries(REAL4FrequencySeries *arg1, const REAL4FrequencySeries *arg2)
UINT8FrequencySeries * XLALResizeUINT8FrequencySeries(UINT8FrequencySeries *series, int first, size_t length)
REAL8FrequencySeries * XLALCreateREAL8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series)
void XLALDestroyUINT2FrequencySeries(UINT2FrequencySeries *series)
INT8FrequencySeries * XLALCreateINT8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT4FrequencySeries * XLALAddINT4FrequencySeries(INT4FrequencySeries *arg1, const INT4FrequencySeries *arg2)
COMPLEX8FrequencySeries * XLALResizeCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series, int first, size_t length)
REAL4FrequencySeries * XLALCreateREAL4FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
REAL4FrequencySeries * XLALCutREAL4FrequencySeries(const REAL4FrequencySeries *series, size_t first, size_t length)
INT2FrequencySeries * XLALAddINT2FrequencySeries(INT2FrequencySeries *arg1, const INT2FrequencySeries *arg2)
COMPLEX8FrequencySeries * XLALCutCOMPLEX8FrequencySeries(const COMPLEX8FrequencySeries *series, size_t first, size_t length)
UINT4FrequencySeries * XLALShrinkUINT4FrequencySeries(UINT4FrequencySeries *series, size_t first, size_t length)
UINT2FrequencySeries * XLALCreateUINT2FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT4FrequencySeries * XLALResizeINT4FrequencySeries(INT4FrequencySeries *series, int first, size_t length)
UINT4FrequencySeries * XLALCreateUINT4FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
UINT4FrequencySeries * XLALCutUINT4FrequencySeries(const UINT4FrequencySeries *series, size_t first, size_t length)
INT2FrequencySeries * XLALMultiplyINT2FrequencySeries(INT2FrequencySeries *arg1, const INT2FrequencySeries *arg2)
COMPLEX8FrequencySeries * XLALCreateCOMPLEX8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT2FrequencySeries * XLALShrinkINT2FrequencySeries(INT2FrequencySeries *series, size_t first, size_t length)
REAL8FrequencySeries * XLALCutREAL8FrequencySeries(const REAL8FrequencySeries *series, size_t first, size_t length)
COMPLEX8FrequencySeries * XLALShrinkCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series, size_t first, size_t length)
UINT4FrequencySeries * XLALResizeUINT4FrequencySeries(UINT4FrequencySeries *series, int first, size_t length)
void XLALDestroyREAL4FrequencySeries(REAL4FrequencySeries *series)
INT8FrequencySeries * XLALAddINT8FrequencySeries(INT8FrequencySeries *arg1, const INT8FrequencySeries *arg2)
REAL8FrequencySeries * XLALShrinkREAL8FrequencySeries(REAL8FrequencySeries *series, size_t first, size_t length)
UINT8FrequencySeries * XLALAddUINT8FrequencySeries(UINT8FrequencySeries *arg1, const UINT8FrequencySeries *arg2)
INT2FrequencySeries * XLALResizeINT2FrequencySeries(INT2FrequencySeries *series, int first, size_t length)
REAL4FrequencySeries * XLALAddREAL4FrequencySeries(REAL4FrequencySeries *arg1, const REAL4FrequencySeries *arg2)
UINT2FrequencySeries * XLALShrinkUINT2FrequencySeries(UINT2FrequencySeries *series, size_t first, size_t length)
UINT8FrequencySeries * XLALMultiplyUINT8FrequencySeries(UINT8FrequencySeries *arg1, const UINT8FrequencySeries *arg2)
UINT2FrequencySeries * XLALAddUINT2FrequencySeries(UINT2FrequencySeries *arg1, const UINT2FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALCutCOMPLEX16FrequencySeries(const COMPLEX16FrequencySeries *series, size_t first, size_t length)
void XLALDestroyINT4FrequencySeries(INT4FrequencySeries *series)
void XLALDestroyINT2FrequencySeries(INT2FrequencySeries *series)
COMPLEX8FrequencySeries * XLALConjugateCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series)
REAL8FrequencySeries * XLALAddREAL8FrequencySeries(REAL8FrequencySeries *arg1, const REAL8FrequencySeries *arg2)
void XLALDestroyUINT4FrequencySeries(UINT4FrequencySeries *series)
UINT2FrequencySeries * XLALMultiplyUINT2FrequencySeries(UINT2FrequencySeries *arg1, const UINT2FrequencySeries *arg2)
void XLALDestroyREAL8FrequencySeries(REAL8FrequencySeries *series)
REAL4FrequencySeries * XLALResizeREAL4FrequencySeries(REAL4FrequencySeries *series, int first, size_t length)
COMPLEX16FrequencySeries * XLALAddCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *arg1, const COMPLEX16FrequencySeries *arg2)
COMPLEX8FrequencySeries * XLALAddCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *arg1, const COMPLEX8FrequencySeries *arg2)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
COMPLEX8FrequencySeries * XLALMultiplyCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *arg1, const COMPLEX8FrequencySeries *arg2)
INT4FrequencySeries * XLALMultiplyINT4FrequencySeries(INT4FrequencySeries *arg1, const INT4FrequencySeries *arg2)
UINT8FrequencySeries * XLALCreateUINT8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT4FrequencySeries * XLALCreateINT4FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
double REAL8
Double precision real floating-point number (8 bytes).
char CHAR
One-byte signed integer, see Headers LAL(Atomic)Datatypes.h for more details.
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:909
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:899
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:819
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:839
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:859
This structure stores units in the mksA system (plus Kelvin, Strain, and ADC Count).
Definition: LALDatatypes.h:498
Epoch relative to GPS epoch, see LIGOTimeGPS type for more details.
Definition: LALDatatypes.h:458
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:879
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:889
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:829
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:849
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:869
enum @1 epoch