LAL  7.5.0.1-08ee4f4
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)
29 extern "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 /** @{ */
75 COMPLEX8FrequencySeries *XLALCreateCOMPLEX8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
76 COMPLEX16FrequencySeries *XLALCreateCOMPLEX16FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
77 REAL4FrequencySeries *XLALCreateREAL4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
78 REAL8FrequencySeries *XLALCreateREAL8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
79 INT2FrequencySeries *XLALCreateINT2FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
80 INT4FrequencySeries *XLALCreateINT4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
81 INT8FrequencySeries *XLALCreateINT8FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
82 UINT2FrequencySeries *XLALCreateUINT2FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
83 UINT4FrequencySeries *XLALCreateUINT4FrequencySeries ( const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length );
84 UINT8FrequencySeries *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 /** @{ */
139 REAL4FrequencySeries *XLALCutREAL4FrequencySeries ( const REAL4FrequencySeries *series, size_t first, size_t length );
140 REAL8FrequencySeries *XLALCutREAL8FrequencySeries ( const REAL8FrequencySeries *series, size_t first, size_t length );
141 INT2FrequencySeries *XLALCutINT2FrequencySeries ( const INT2FrequencySeries *series, size_t first, size_t length );
142 INT4FrequencySeries *XLALCutINT4FrequencySeries ( const INT4FrequencySeries *series, size_t first, size_t length );
143 INT8FrequencySeries *XLALCutINT8FrequencySeries ( const INT8FrequencySeries *series, size_t first, size_t length );
144 UINT2FrequencySeries *XLALCutUINT2FrequencySeries ( const UINT2FrequencySeries *series, size_t first, size_t length );
145 UINT4FrequencySeries *XLALCutUINT4FrequencySeries ( const UINT4FrequencySeries *series, size_t first, size_t length );
146 UINT8FrequencySeries *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
INT8FrequencySeries * XLALShrinkINT8FrequencySeries(INT8FrequencySeries *series, size_t first, size_t length)
UINT8FrequencySeries * XLALCreateUINT8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
UINT8FrequencySeries * XLALCutUINT8FrequencySeries(const UINT8FrequencySeries *series, size_t first, size_t length)
void XLALDestroyUINT8FrequencySeries(UINT8FrequencySeries *series)
void XLALDestroyINT8FrequencySeries(INT8FrequencySeries *series)
REAL8FrequencySeries * XLALMultiplyREAL8FrequencySeries(REAL8FrequencySeries *arg1, const REAL8FrequencySeries *arg2)
INT2FrequencySeries * XLALResizeINT2FrequencySeries(INT2FrequencySeries *series, int first, size_t length)
COMPLEX8FrequencySeries * XLALConjugateCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series)
UINT4FrequencySeries * XLALShrinkUINT4FrequencySeries(UINT4FrequencySeries *series, size_t first, size_t length)
UINT2FrequencySeries * XLALShrinkUINT2FrequencySeries(UINT2FrequencySeries *series, size_t first, size_t length)
REAL8FrequencySeries * XLALAddREAL8FrequencySeries(REAL8FrequencySeries *arg1, const REAL8FrequencySeries *arg2)
REAL4FrequencySeries * XLALMultiplyREAL4FrequencySeries(REAL4FrequencySeries *arg1, const REAL4FrequencySeries *arg2)
UINT2FrequencySeries * XLALCutUINT2FrequencySeries(const UINT2FrequencySeries *series, size_t first, size_t length)
INT4FrequencySeries * XLALMultiplyINT4FrequencySeries(INT4FrequencySeries *arg1, const INT4FrequencySeries *arg2)
REAL8FrequencySeries * XLALCreateREAL8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
COMPLEX8FrequencySeries * XLALMultiplyCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *arg1, const COMPLEX8FrequencySeries *arg2)
INT4FrequencySeries * XLALCreateINT4FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
COMPLEX8FrequencySeries * XLALCreateCOMPLEX8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
REAL4FrequencySeries * XLALAddREAL4FrequencySeries(REAL4FrequencySeries *arg1, const REAL4FrequencySeries *arg2)
UINT4FrequencySeries * XLALResizeUINT4FrequencySeries(UINT4FrequencySeries *series, int first, size_t length)
INT4FrequencySeries * XLALShrinkINT4FrequencySeries(INT4FrequencySeries *series, size_t first, size_t length)
REAL4FrequencySeries * XLALCreateREAL4FrequencySeries(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)
INT8FrequencySeries * XLALMultiplyINT8FrequencySeries(INT8FrequencySeries *arg1, const INT8FrequencySeries *arg2)
UINT2FrequencySeries * XLALCreateUINT2FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
UINT8FrequencySeries * XLALAddUINT8FrequencySeries(UINT8FrequencySeries *arg1, const UINT8FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALResizeCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series, int first, size_t length)
REAL8FrequencySeries * XLALResizeREAL8FrequencySeries(REAL8FrequencySeries *series, int first, size_t length)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
INT2FrequencySeries * XLALCutINT2FrequencySeries(const INT2FrequencySeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series)
INT2FrequencySeries * XLALAddINT2FrequencySeries(INT2FrequencySeries *arg1, const INT2FrequencySeries *arg2)
void XLALDestroyUINT2FrequencySeries(UINT2FrequencySeries *series)
COMPLEX8FrequencySeries * XLALCutCOMPLEX8FrequencySeries(const COMPLEX8FrequencySeries *series, size_t first, size_t length)
COMPLEX8FrequencySeries * XLALResizeCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series, int first, size_t length)
UINT2FrequencySeries * XLALMultiplyUINT2FrequencySeries(UINT2FrequencySeries *arg1, const UINT2FrequencySeries *arg2)
INT8FrequencySeries * XLALCreateINT8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
REAL8FrequencySeries * XLALShrinkREAL8FrequencySeries(REAL8FrequencySeries *series, size_t first, size_t length)
COMPLEX8FrequencySeries * XLALShrinkCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *series, size_t first, size_t length)
UINT4FrequencySeries * XLALMultiplyUINT4FrequencySeries(UINT4FrequencySeries *arg1, const UINT4FrequencySeries *arg2)
INT2FrequencySeries * XLALShrinkINT2FrequencySeries(INT2FrequencySeries *series, size_t first, size_t length)
INT4FrequencySeries * XLALCutINT4FrequencySeries(const INT4FrequencySeries *series, size_t first, size_t length)
INT8FrequencySeries * XLALResizeINT8FrequencySeries(INT8FrequencySeries *series, int first, size_t length)
INT2FrequencySeries * XLALCreateINT2FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL4FrequencySeries(REAL4FrequencySeries *series)
UINT8FrequencySeries * XLALShrinkUINT8FrequencySeries(UINT8FrequencySeries *series, size_t first, size_t length)
INT4FrequencySeries * XLALResizeINT4FrequencySeries(INT4FrequencySeries *series, int first, size_t length)
REAL4FrequencySeries * XLALResizeREAL4FrequencySeries(REAL4FrequencySeries *series, int first, size_t length)
COMPLEX16FrequencySeries * XLALCutCOMPLEX16FrequencySeries(const COMPLEX16FrequencySeries *series, size_t first, size_t length)
COMPLEX16FrequencySeries * XLALMultiplyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *arg1, const COMPLEX16FrequencySeries *arg2)
UINT4FrequencySeries * XLALAddUINT4FrequencySeries(UINT4FrequencySeries *arg1, const UINT4FrequencySeries *arg2)
REAL4FrequencySeries * XLALCutREAL4FrequencySeries(const REAL4FrequencySeries *series, size_t first, size_t length)
COMPLEX8FrequencySeries * XLALAddCOMPLEX8FrequencySeries(COMPLEX8FrequencySeries *arg1, const COMPLEX8FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALShrinkCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series, size_t first, size_t length)
COMPLEX16FrequencySeries * XLALConjugateCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
INT4FrequencySeries * XLALAddINT4FrequencySeries(INT4FrequencySeries *arg1, const INT4FrequencySeries *arg2)
COMPLEX16FrequencySeries * XLALAddCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *arg1, const COMPLEX16FrequencySeries *arg2)
REAL8FrequencySeries * XLALCutREAL8FrequencySeries(const REAL8FrequencySeries *series, size_t first, size_t length)
REAL4FrequencySeries * XLALShrinkREAL4FrequencySeries(REAL4FrequencySeries *series, size_t first, size_t length)
void XLALDestroyINT4FrequencySeries(INT4FrequencySeries *series)
void XLALDestroyINT2FrequencySeries(INT2FrequencySeries *series)
void XLALDestroyUINT4FrequencySeries(UINT4FrequencySeries *series)
UINT2FrequencySeries * XLALAddUINT2FrequencySeries(UINT2FrequencySeries *arg1, const UINT2FrequencySeries *arg2)
void XLALDestroyREAL8FrequencySeries(REAL8FrequencySeries *series)
INT2FrequencySeries * XLALMultiplyINT2FrequencySeries(INT2FrequencySeries *arg1, const INT2FrequencySeries *arg2)
INT8FrequencySeries * XLALAddINT8FrequencySeries(INT8FrequencySeries *arg1, const INT8FrequencySeries *arg2)
UINT8FrequencySeries * XLALMultiplyUINT8FrequencySeries(UINT8FrequencySeries *arg1, const UINT8FrequencySeries *arg2)
UINT2FrequencySeries * XLALResizeUINT2FrequencySeries(UINT2FrequencySeries *series, int first, size_t length)
UINT4FrequencySeries * XLALCreateUINT4FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
UINT8FrequencySeries * XLALResizeUINT8FrequencySeries(UINT8FrequencySeries *series, int first, size_t length)
INT8FrequencySeries * XLALCutINT8FrequencySeries(const INT8FrequencySeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
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