Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALPulsar 7.1.1.1-b246709
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
vectormath.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2011, 2015 Evan Goetz
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with with program; see the file COPYING. If not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * MA 02110-1301 USA
18 */
19
20#ifndef __VECTORMATH_H__
21#define __VECTORMATH_H__
22
23#include <lal/AVFactories.h>
24#include <lal/VectorOps.h>
25#include <lal/VectorMath.h>
26#include "TwoSpectTypes.h"
27
28alignedREAL8Vector *createAlignedREAL8Vector( UINT4 length, const size_t align );
30alignedREAL8VectorArray *createAlignedREAL8VectorArray( const UINT4 length, const UINT4 vectorLength, const size_t align );
32REAL4VectorAlignedArray *createREAL4VectorAlignedArray( const UINT4 length, const UINT4 vectorLength, const size_t align );
34
36
37INT4 VectorArraySum( REAL4VectorAlignedArray *output, REAL4VectorAlignedArray *input1, REAL4VectorAlignedArray *input2, INT4 vectorpos1, INT4 vectorpos2, INT4 outputvectorpos, INT4 numvectors );
38
40//INT4 sse_exp_REAL4Vector(REAL4Vector *output, REAL4Vector *input);
41
42INT4 fastSSVectorMultiply_with_stride_and_offset( REAL4VectorAligned *output, const REAL4VectorAligned *input1, const REAL4VectorAligned *input2, const INT4 stride1, const INT4 stride2, const INT4 offset1, const INT4 offset2 );
43
51
59
62
75
76//INT4 sse_sin_cos_2PI_LUT_REAL8Vector(REAL8Vector *sin2pix_vector, REAL8Vector *cos2pix_vector, REAL8Vector *x);
77//INT4 sse_sin_cos_2PI_LUT_REAL4Vector(REAL4Vector *sin2pix_vector, REAL4Vector *cos2pix_vector, REAL4Vector *x);
78
79
80#endif
const double scale
multiplicative scaling factor of the coordinate
double REAL8
uint32_t UINT4
int32_t INT4
INT4 avxSSVectorSubtract(REAL4VectorAligned *output, REAL4VectorAligned *input1, REAL4VectorAligned *input2)
Subtract two REAL4VectorAligned using AVX.
Definition: vectormath.c:790
INT4 avxScaleREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 scale)
Scale the elements of a alignedREAL8Vector by a REAL8 value using AVX.
Definition: vectormath.c:1240
INT4 sseScaleREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 scale)
Scale the elements of a alignedREAL8Vector by a REAL8 value using SSE.
Definition: vectormath.c:1197
INT4 VectorAbsREAL4(REAL4VectorAligned *output, REAL4VectorAligned *input, INT4 vectorMath)
Definition: vectormath.c:427
INT4 VectorShiftREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 shift, INT4 vectorMath)
Definition: vectormath.c:269
void destroyAlignedREAL8Vector(alignedREAL8Vector *vector)
Definition: vectormath.c:67
INT4 avxDDVectorSum(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Sum two alignedREAL8Vector using AVX.
Definition: vectormath.c:700
INT4 DirichletRatioVector(COMPLEX8Vector *output, alignedREAL8Vector *delta0, alignedREAL8Vector *delta1, alignedREAL8Vector *scaling, const UserInput_t *params)
Definition: vectormath.c:122
INT4 sseSSVectorSubtract(REAL4VectorAligned *output, REAL4VectorAligned *input1, REAL4VectorAligned *input2)
Subtract two REAL4VectorAligned using SSE.
Definition: vectormath.c:748
INT4 sse_exp_REAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input)
Exponential of input vector is computed using SSE, based on the Cephes library.
Definition: vectormath.c:1609
INT4 VectorCabsfCOMPLEX8(REAL4VectorAligned *output, COMPLEX8Vector *input, INT4 vectorMath)
Definition: vectormath.c:533
INT4 VectorInvertREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, INT4 vectorMath)
Definition: vectormath.c:321
INT4 sseDDVectorSum(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Sum two alignedREAL8Vector using SSE2.
Definition: vectormath.c:657
INT4 VectorRoundREAL4(REAL4VectorAligned *output, REAL4VectorAligned *input, INT4 vectorMath)
Definition: vectormath.c:365
INT4 avxAddScalarToREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 scalar)
Add a REAL8 scalar value to the elements of a alignedREAL8Vector using AVX.
Definition: vectormath.c:1149
INT4 avxDDVectorMultiply(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Multiply two alignedREAL8Vector using AVX.
Definition: vectormath.c:971
void destroyAlignedREAL8VectorArray(alignedREAL8VectorArray *array)
Definition: vectormath.c:88
INT4 VectorRoundREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, INT4 vectorMath)
Definition: vectormath.c:396
INT4 VectorArraySum(REAL4VectorAlignedArray *output, REAL4VectorAlignedArray *input1, REAL4VectorAlignedArray *input2, INT4 vectorpos1, INT4 vectorpos2, INT4 outputvectorpos, INT4 numvectors)
Sum vectors from REAL4VectorAlignedArrays into an output REAL4VectorAlignedArray using SIMD.
Definition: vectormath.c:1292
INT4 VectorAddREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2, INT4 vectorMath)
Definition: vectormath.c:282
alignedREAL8VectorArray * createAlignedREAL8VectorArray(const UINT4 length, const UINT4 vectorLength, const size_t align)
Definition: vectormath.c:77
INT4 avxInvertREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input)
Invert a alignedREAL8Vector using AVX.
Definition: vectormath.c:1059
INT4 sseInvertREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input)
Invert a alignedREAL8Vector using SSE.
Definition: vectormath.c:1018
INT4 VectorFloorREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, INT4 vectorMath)
Definition: vectormath.c:334
REAL4VectorAlignedArray * createREAL4VectorAlignedArray(const UINT4 length, const UINT4 vectorLength, const size_t align)
Definition: vectormath.c:99
INT4 VectorScaleREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 scale, INT4 vectorMath)
Definition: vectormath.c:256
void destroyREAL4VectorAlignedArray(REAL4VectorAlignedArray *array)
Definition: vectormath.c:110
INT4 VectorAbsREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input, INT4 vectorMath)
Definition: vectormath.c:480
INT4 avxDDVectorSubtract(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Subtract two alignedREAL8Vector using AVX.
Definition: vectormath.c:880
INT4 fastSSVectorMultiply_with_stride_and_offset(REAL4VectorAligned *output, const REAL4VectorAligned *input1, const REAL4VectorAligned *input2, const INT4 stride1, const INT4 stride2, const INT4 offset1, const INT4 offset2)
Computes a multiplication of two vectors with a stride and initial offset.
Definition: vectormath.c:221
INT4 VectorSubtractREAL4(REAL4VectorAligned *output, REAL4VectorAligned *input1, REAL4VectorAligned *input2, INT4 vectorMath)
Definition: vectormath.c:243
INT4 sseAddScalarToREAL8Vector(alignedREAL8Vector *output, alignedREAL8Vector *input, REAL8 scalar)
Add a REAL8 scalar value to the elements of a alignedREAL8Vector using SSE.
Definition: vectormath.c:1106
INT4 sseDDVectorSubtract(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Subtract two alignedREAL8Vector using SSE.
Definition: vectormath.c:838
alignedREAL8Vector * createAlignedREAL8Vector(UINT4 length, const size_t align)
Definition: vectormath.c:55
INT4 sseDDVectorMultiply(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2)
Multiply two alignedREAL8Vector using SSE.
Definition: vectormath.c:928
INT4 VectorSubtractREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2, INT4 vectorMath)
Definition: vectormath.c:295
INT4 VectorMultiplyREAL8(alignedREAL8Vector *output, alignedREAL8Vector *input1, alignedREAL8Vector *input2, INT4 vectorMath)
Definition: vectormath.c:308
INT4 VectorCabsCOMPLEX8(alignedREAL8Vector *output, COMPLEX8Vector *input, INT4 vectorMath)
Definition: vectormath.c:591