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