File indexing completed on 2024-12-22 04:09:44
0001 ///////////////////////////////////////////////////////////////////////////// 0002 // einspline: a library for creating and evaluating B-splines // 0003 // Copyright (C) 2007 Kenneth P. Esler, Jr. // 0004 // // 0005 // This program is free software; you can redistribute it and/or modify // 0006 // it under the terms of the GNU General Public License as published by // 0007 // the Free Software Foundation; either version 2 of the License, or // 0008 // (at your option) any later version. // 0009 // // 0010 // This program is distributed in the hope that it will be useful, // 0011 // but WITHOUT ANY WARRANTY; without even the implied warranty of // 0012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // 0013 // GNU General Public License for more details. // 0014 // // 0015 // You should have received a copy of the GNU General Public License // 0016 // along with this program; if not, write to the Free Software // 0017 // Foundation, Inc., 51 Franklin Street, Fifth Floor, // 0018 // Boston, MA 02110-1301 USA // 0019 ///////////////////////////////////////////////////////////////////////////// 0020 0021 #ifndef BSPLINE_STRUCTS_STD_H 0022 #define BSPLINE_STRUCTS_STD_H 0023 0024 /////////////////////////// 0025 // Single precision real // 0026 /////////////////////////// 0027 typedef struct 0028 { 0029 spline_code spcode; 0030 type_code tcode; 0031 float* restrict coefs; 0032 Ugrid x_grid; 0033 BCtype_s xBC; 0034 } UBspline_1d_s; 0035 0036 typedef struct 0037 { 0038 spline_code spcode; 0039 type_code tcode; 0040 float* restrict coefs; 0041 int x_stride; 0042 Ugrid x_grid, y_grid; 0043 BCtype_s xBC, yBC; 0044 } UBspline_2d_s; 0045 0046 typedef struct 0047 { 0048 spline_code spcode; 0049 type_code tcode; 0050 float* restrict coefs; 0051 int x_stride, y_stride; 0052 Ugrid x_grid, y_grid, z_grid; 0053 BCtype_s xBC, yBC, zBC; 0054 } UBspline_3d_s; 0055 0056 0057 /////////////////////////// 0058 // Double precision real // 0059 /////////////////////////// 0060 typedef struct 0061 { 0062 spline_code spcode; 0063 type_code tcode; 0064 double* restrict coefs; 0065 Ugrid x_grid; 0066 BCtype_d xBC; 0067 } UBspline_1d_d; 0068 0069 typedef struct 0070 { 0071 spline_code spcode; 0072 type_code tcode; 0073 double* restrict coefs; 0074 int x_stride; 0075 Ugrid x_grid, y_grid; 0076 BCtype_d xBC, yBC; 0077 } UBspline_2d_d; 0078 0079 typedef struct 0080 { 0081 spline_code spcode; 0082 type_code tcode; 0083 double* restrict coefs; 0084 int x_stride, y_stride; 0085 Ugrid x_grid, y_grid, z_grid; 0086 BCtype_d xBC, yBC, zBC; 0087 } UBspline_3d_d; 0088 0089 0090 0091 ////////////////////////////// 0092 // Single precision complex // 0093 ////////////////////////////// 0094 typedef struct 0095 { 0096 spline_code spcode; 0097 type_code tcode; 0098 complex_float* restrict coefs; 0099 Ugrid x_grid; 0100 BCtype_c xBC; 0101 } UBspline_1d_c; 0102 0103 typedef struct 0104 { 0105 spline_code spcode; 0106 type_code tcode; 0107 complex_float* restrict coefs; 0108 int x_stride; 0109 Ugrid x_grid, y_grid; 0110 BCtype_c xBC, yBC; 0111 } UBspline_2d_c; 0112 0113 typedef struct 0114 { 0115 spline_code spcode; 0116 type_code tcode; 0117 complex_float* restrict coefs; 0118 int x_stride, y_stride; 0119 Ugrid x_grid, y_grid, z_grid; 0120 BCtype_c xBC, yBC, zBC; 0121 0122 } UBspline_3d_c; 0123 0124 0125 ////////////////////////////// 0126 // Double precision complex // 0127 ////////////////////////////// 0128 typedef struct 0129 { 0130 spline_code spcode; 0131 type_code tcode; 0132 complex_double* restrict coefs; 0133 Ugrid x_grid; 0134 BCtype_z xBC; 0135 } UBspline_1d_z; 0136 0137 typedef struct 0138 { 0139 spline_code spcode; 0140 type_code tcode; 0141 complex_double* restrict coefs; 0142 int x_stride; 0143 Ugrid x_grid, y_grid; 0144 BCtype_z xBC, yBC; 0145 } UBspline_2d_z; 0146 0147 typedef struct 0148 { 0149 spline_code spcode; 0150 type_code tcode; 0151 complex_double* restrict coefs; 0152 int x_stride, y_stride; 0153 Ugrid x_grid, y_grid, z_grid; 0154 BCtype_z xBC, yBC, zBC; 0155 } UBspline_3d_z; 0156 0157 0158 #endif