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