File indexing completed on 2024-12-22 04:09:51

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 MULTI_BSPLINE_EVAL_Z_H
0022 #define MULTI_BSPLINE_EVAL_Z_H
0023 
0024 
0025 /************************************************************/
0026 /* 1D double-precision, complex evaulation functions        */
0027 /************************************************************/
0028 void
0029 eval_multi_UBspline_1d_z (multi_UBspline_1d_z *spline,
0030               double x,
0031               complex_double* restrict vals);
0032 
0033 void
0034 eval_multi_UBspline_1d_z_vg (multi_UBspline_1d_z *spline,
0035                  double x,
0036                  complex_double* restrict vals,
0037                  complex_double* restrict grads);
0038 
0039 void
0040 eval_multi_UBspline_1d_z_vgl (multi_UBspline_1d_z *spline,
0041                   double x,
0042                   complex_double* restrict vals,
0043                   complex_double* restrict grads,
0044                   complex_double* restrict lapl);
0045 
0046 
0047 void
0048 eval_multi_UBspline_1d_z_vgh (multi_UBspline_1d_z *spline,
0049                   double x,
0050                   complex_double* restrict vals,
0051                   complex_double* restrict grads,
0052                   complex_double* restrict hess);
0053 
0054 
0055 /************************************************************/
0056 /* 2D double-precision, complex evaulation functions        */
0057 /************************************************************/
0058 void
0059 eval_multi_UBspline_2d_z (multi_UBspline_2d_z *spline,
0060               double x, double y,
0061               complex_double* restrict vals);
0062 
0063 void
0064 eval_multi_UBspline_2d_z_vg (multi_UBspline_2d_z *spline,
0065                  double x, double y,
0066                  complex_double* restrict vals,
0067                  complex_double* restrict grads);
0068 
0069 void
0070 eval_multi_UBspline_2d_z_vgl (multi_UBspline_2d_z *spline,
0071                   double x, double y,
0072                   complex_double* restrict vals,
0073                   complex_double* restrict grads,
0074                   complex_double* restrict lapl);
0075 
0076 void
0077 eval_multi_UBspline_2d_z_vgh (multi_UBspline_2d_z *spline,
0078                   double x, double y,
0079                   complex_double* restrict vals,
0080                   complex_double* restrict grads,
0081                   complex_double* restrict hess);
0082 
0083 /************************************************************/
0084 /* 3D double-precision, complex evaulation functions        */
0085 /************************************************************/
0086 void
0087 eval_multi_UBspline_3d_z (multi_UBspline_3d_z *spline,
0088               double x, double y, double z,
0089               complex_double* restrict vals);
0090 
0091 void
0092 eval_multi_UBspline_3d_z_vg (multi_UBspline_3d_z *spline,
0093                  double x, double y, double z,
0094                  complex_double* restrict vals,
0095                  complex_double* restrict grads);
0096 
0097 void
0098 eval_multi_UBspline_3d_z_vgl (multi_UBspline_3d_z *spline,
0099                   double x, double y, double z,
0100                   complex_double* restrict vals,
0101                   complex_double* restrict grads,
0102                   complex_double* restrict lapl);
0103 
0104 void
0105 eval_multi_UBspline_3d_z_vgh (multi_UBspline_3d_z *spline,
0106                   double x, double y, double z,
0107                   complex_double* restrict vals,
0108                   complex_double* restrict grads,
0109                   complex_double* restrict hess);
0110 
0111 
0112 #endif