1 /////////////////////////////////////////////////////////////////////////////
2 //  einspline:  a library for creating and evaluating B-splines            //
3 //  Copyright (C) 2007 Kenneth P. Esler, Jr.                               //
4 //  Released under the BSD-3-clause license                                //
5 /////////////////////////////////////////////////////////////////////////////
6 
7 #ifndef MULTI_BSPLINE_EVAL_D_H
8 #define MULTI_BSPLINE_EVAL_D_H
9 
10 #include <math.h>
11 #include <stdio.h>
12 #include "multi_bspline_structs.h"
13 
14 /************************************************************/
15 /* 1D double-precision, real evaluation functions        */
16 /************************************************************/
17 void
18 eval_multi_UBspline_1d_d (const multi_UBspline_1d_d *spline,
19                           double x,
20                           double* restrict vals);
21 
22 void
23 eval_multi_UBspline_1d_d_vg (const multi_UBspline_1d_d *spline,
24                              double x,
25                              double* restrict vals,
26                              double* restrict grads);
27 
28 void
29 eval_multi_UBspline_1d_d_vgl (const multi_UBspline_1d_d *spline,
30                               double x,
31                               double* restrict vals,
32                               double* restrict grads,
33                               double* restrict lapl);
34 
35 void
36 eval_multi_UBspline_1d_d_vgh (const multi_UBspline_1d_d *spline,
37                               double x,
38                               double* restrict vals,
39                               double* restrict grads,
40                               double* restrict hess);
41 
42 /************************************************************/
43 /* 2D double-precision, real evaluation functions        */
44 /************************************************************/
45 void
46 eval_multi_UBspline_2d_d (const multi_UBspline_2d_d *spline,
47                           double x, double y,
48                           double* restrict vals);
49 
50 void
51 eval_multi_UBspline_2d_d_vg (const multi_UBspline_2d_d *spline,
52                              double x, double y,
53                              double* restrict vals,
54                              double* restrict grads);
55 
56 void
57 eval_multi_UBspline_2d_d_vgl (const multi_UBspline_2d_d *spline,
58                               double x, double y,
59                               double* restrict vals,
60                               double* restrict grads,
61                               double* restrict lapl);
62 
63 void
64 eval_multi_UBspline_2d_d_vgh (const multi_UBspline_2d_d *spline,
65                               double x, double y,
66                               double* restrict vals,
67                               double* restrict grads,
68                               double* restrict hess);
69 
70 /************************************************************/
71 /* 3D double-precision, real evaluation functions           */
72 /************************************************************/
73 void
74 eval_multi_UBspline_3d_d (const multi_UBspline_3d_d *spline,
75                           double x, double y, double z,
76                           double* restrict vals);
77 
78 void
79 eval_multi_UBspline_3d_d_vg (const multi_UBspline_3d_d *spline,
80                              double x, double y, double z,
81                              double* restrict vals,
82                              double* restrict grads);
83 
84 void
85 eval_multi_UBspline_3d_d_vgl (const multi_UBspline_3d_d *spline,
86                               double x, double y, double z,
87                               double* restrict vals,
88                               double* restrict grads,
89                               double* restrict lapl);
90 
91 void
92 eval_multi_UBspline_3d_d_vgh (const multi_UBspline_3d_d *spline,
93                               double x, double y, double z,
94                               double* restrict vals,
95                               double* restrict grads,
96                               double* restrict hess);
97 
98 void
99 eval_multi_UBspline_3d_d_vghgh (const multi_UBspline_3d_d *spline,
100                                 double x, double y, double z,
101                                 double* restrict vals,
102                                 double* restrict grads,
103                                 double* restrict hess,
104                                 double* restrict gradhess);
105 
106 #endif
107