/usr/include/einspline/nubasis.h is in libeinspline-dev 0.9.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /////////////////////////////////////////////////////////////////////////////
// einspline: a library for creating and evaluating B-splines //
// Copyright (C) 2007 Kenneth P. Esler, Jr. //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 51 Franklin Street, Fifth Floor, //
// Boston, MA 02110-1301 USA //
/////////////////////////////////////////////////////////////////////////////
#ifndef NUBASIS_H
#define NUBASIS_H
#include "nugrid.h"
#include "config.h"
#include <stdbool.h>
typedef struct
{
NUgrid* restrict grid;
// xVals is just the grid points, augmented by two extra points on
// either side. These are necessary to generate enough basis
// functions.
double* restrict xVals;
// dxInv[3*i+j] = 1.0/(grid(i+j-1)-grid(i-2))
double* restrict dxInv;
bool periodic;
} NUBasis;
#ifdef __cplusplus
extern "C" {
#endif
/////////////////
// Constructor //
/////////////////
NUBasis*
create_NUBasis (NUgrid *grid, bool periodic);
////////////////
// Destructor //
////////////////
void
destroy_NUBasis (NUBasis *basis);
////////////////////////////////////////////////
// Single-precision basis function evaluation //
////////////////////////////////////////////////
int
get_NUBasis_funcs_s (NUBasis* restrict basis, double x,
float bfuncs[4]);
void
get_NUBasis_funcs_si (NUBasis* restrict basis, int i,
float bfuncs[4]);
int
get_NUBasis_dfuncs_s (NUBasis* restrict basis, double x,
float bfuncs[4], float dbfuncs[4]);
void
get_NUBasis_dfuncs_si (NUBasis* restrict basis, int i,
float bfuncs[4], float dbfuncs[4]);
int
get_NUBasis_d2funcs_s (NUBasis* restrict basis, double x,
float bfuncs[4], float dbfuncs[4], float d2bfuncs[4]);
void
get_NUBasis_d2funcs_si (NUBasis* restrict basis, int i,
float bfuncs[4], float dbfuncs[4], float d2bfuncs[4]);
////////////////////////////////////////////////
// Double-precision basis function evaluation //
////////////////////////////////////////////////
int
get_NUBasis_funcs_d (NUBasis* restrict basis, double x,
double bfuncs[4]);
void
get_NUBasis_funcs_di (NUBasis* restrict basis, int i,
double bfuncs[4]);
int
get_NUBasis_dfuncs_d (NUBasis* restrict basis, double x,
double bfuncs[4], double dbfuncs[4]);
void
get_NUBasis_dfuncs_di (NUBasis* restrict basis, int i,
double bfuncs[4], double dbfuncs[4]);
int
get_NUBasis_d2funcs_d (NUBasis* restrict basis, double x,
double bfuncs[4], double dbfuncs[4],
double d2bfuncs[4]);
void
get_NUBasis_d2funcs_di (NUBasis* restrict basis, int i,
double bfuncs[4], double dbfuncs[4],
double d2bfuncs[4]);
#ifdef __cplusplus
}
#endif
#ifdef HAVE_SSE2
#include <xmmintrin.h>
#include <emmintrin.h>
#ifdef __cplusplus
extern "C" {
#endif
int
get_NUBasis_funcs_sse_s (NUBasis* restrict basis, double x,
__m128 *restrict funcs);
int
get_NUBasis_dfuncs_sse_s (NUBasis* restrict basis, double x,
__m128 *restrict funcs, __m128 *restrict dfuncs);
int
get_NUBasis_d2funcs_sse_s (NUBasis* restrict basis, double x,
__m128 *restrict funcs,
__m128 *restrict dfuncs,
__m128 *restrict d2funcs);
int
get_NUBasis_funcs_sse_d (NUBasis* restrict basis, double x,
__m128d *restrict f01, __m128d *restrict f23);
int
get_NUBasis_dfuncs_sse_d (NUBasis* restrict basis, double x,
__m128d *restrict f01, __m128d *restrict f23,
__m128d *restrict df01, __m128d *restrict df23);
int
get_NUBasis_d2funcs_sse_d (NUBasis* restrict basis, double x,
__m128d *restrict f01, __m128d *restrict f23,
__m128d *restrict df01, __m128d *restrict df23,
__m128d *restrict d2f01, __m128d *restrict d2f23);
#ifdef __cplusplus
}
#endif
#endif // #ifdef HAVE_SSE2
#endif // #ifdef NUBASIS_H
|