This file is indexed.

/usr/share/doc/libeinspline-dev/multiUBinterface.shtml is in libeinspline-dev 0.9.2-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
  <title>einspline</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor=#FFFFD0>
<center>
<img src="einspline_logo.png" align="center">
</center>

<div align=center>
<TABLE CELLSPACING=20 CELLPADDING=1>
<TR>
	<TD><A HREF="index.shtml"    > About         </A></TD>
	<TD><A HREF="news.shtml"     > News          </A></TD>
	<TD><A HREF="download.shtml" > Download      </A></TD>
	<TD><A HREF="benchmark.shtml"> Benchmark     </A></TD>
	<TD><A HREF="doc.shtml"      > Documentation </A></TD>
	<TD><A HREF="faq.shtml"      > FAQ           </A></TD>
	<TD><A HREF="links.shtml"    > Links         </A></TD>
</TR>
</TABLE>
</div>

<center><h1> Multiple uniform splines </h1></center>
<h3> <font color="Blue"> Spline creation </font></h3>
When evaluating many splines at the same point (such as in filling in a
row of a determinant matrix in quantum Monte Carlo calculations), a
signficant speedup can be achieved by using the multiple spline
version of the uniform B-spline routines.  The creation routines are
similar to those for the single splines, which the total number of splines
is passed and the raw data is NOT passed in at time of creation.

Rather, we can the <font color="blue">create_multi_UBspline_*</font> routine 
to allocate the memory for the splines.  We then call the
<font color="blue">set_multi_UBspline_*</font> routine for
each spline, passing the the spline index and the raw data
to be interpolated.

<h4> Base data types </h4>
Each spline creation and evaluation routines have four versions,
corresponding to the four support base data types.  Following the
LAPACK naming convention, these types are specified by single-letter
codes:
<ul>
  <li> <font color="blue"> s</font>: single-precision real <font color="blue">(float)</font>   </li>
  <li> <font color="blue"> d</font>: double-precision real <font color="blue">(double)</font>   </li>
  <li> <font color="blue"> c</font>: single-precision complex <font color="blue">(complex_float)</font></li>
  <li> <font color="blue"> z</font>: double-precision complex
  <font color="blue">(complex_double)</font> </li>
</ul>
<h4> Grid dimensions </h4>
The uniform grid structure, has the following elements, which must be specified:
<ul>
  <li> <font color="blue"> double <i>start</i> </font>:  
       the first grid point </li>
  <li> <font color="blue"> double <i>end</i>   </font>:  
       the last grid point  </li>
  <li> <font color="blue"> int <i>num</i> </font>:  
        the number of grid points </li>
</ul>
<h4> Boundary conditions </h4>
The boundary conditions at the first and last grid point must be specified.  They are
specifed with BCtype_<i>x</i> structures, where <i>x</i> is one of {s,
d, c, z}, as described above.  For the real types (s and d) the
structure contains the following elements
<table CELLPADDING=3 frame=border rules=all bordercolor="gray" >
  <tr> <td>Type</td> <td> Name </td> <td> Description </td> </tr>
  <tr> <td>bc_code </td> <td> lCode </td> <td> "left"  boundary condition code </td> </tr>
  <tr> <td>bc_code </td> <td> lCode </td> <td> "right" boundary condition code </td> </tr>
  <tr> <td>d_type  </td> <td> lVal  </td> <td> "left"  boundary condition value </td> </tr>
  <tr> <td>d_type  </td> <td> rVal  </td> <td> "right"  boundary condition value </td> </tr>
  </tr>
  <caption> <font color="blue"> BCtype_s and BCtype_d data structure elements</font></caption>
</table>

For the complex types, we must specify both the real and imaginary
parts:
<table CELLPADDING=3 frame=border rules=all bordercolor="gray" >
  <tr> <td>Type</td> <td> Name </td> <td> Description </td> </tr>
  <tr> <td>bc_code </td> <td> lCode </td> <td> "left"  boundary condition code </td> </tr>
  <tr> <td>bc_code </td> <td> lCode </td> <td> "right" boundary condition code </td> </tr>
  <tr> <td>d_type  </td> <td> lVal_r  </td> <td> "left"  boundary condition real part </td> </tr>
  <tr> <td>d_type  </td> <td> lVal_i  </td> <td> "left"  boundary condition imag part </td> </tr>
  <tr> <td>d_type  </td> <td> rVal_r  </td> <td> "right"  boundary condition real part </td> </tr>
  <tr> <td>d_type  </td> <td> rVal_i  </td> <td> "right"  boundary condition imag part </td> </tr>
  </tr>
  <caption> <font color="blue"> BCtype_s and BCtype_d data structure elements</font></caption>
</table>
<br/> 
<font color="blue">lCode</font> and <font color="blue">lVal</font> specify the boundary conditions
at the first grid point (the "left" boundary), while <font color="blue">rCode</font> and 
<font color="blue">rVal</font> specify the boundary conditions on the last grid point (the "right"
boundary).<br>
<font color="blue">bc_code</font> is one of the enumerated value,
{<font color="blue">PERIODIC</font>, <font color="blue">DERIV1</font>,
<font color="blue">DERIV2</font>, <font color="blue">FLAT</font>,
<font color="blue">NATURAL</font>, <font color="blue">ANTIPERIODIC</font> }. <br/>
<font color="blue">d_type</font> is the the C type corresponding to
{s, d, c, z}, i.e. {float, double, complex_float, complex_double}
<br/> <br/>
The codes have the following meaning
<table CELLPADDING=3 frame=border rules=all bordercolor="gray" width="50%">
  <tr> <td>                    Code     </td> <td> Meaning </td></tr>
  <tr> <td> <font color="blue">PERIODIC </font> </td> <td> Use periodic boundary conditions.  The value, first derivative and second derivative at the left
boundary match those at the right boundary. </td> </tr>
  <tr> <td> <font color="blue">DERIV1   </font> </td> <td> The value of the first derivative is specified in lVal or rVal. </td> </tr>
  <tr> <td> <font color="blue">DERIV2   </font> </td> <td> The value of the second derivative is specified in lVal or rVal. </td> </tr>
  <tr> <td> <font color="blue">FLAT     </font> </td> <td> The value of the first derivative is set to zero at the boundary. </td> </tr>
  <tr> <td> <font color="blue">NATURAL     </font> </td> <td> The value of the second derivative is set to zero at the boundary. </td> </tr>
  <tr> <td> <font color="blue">ANTIPERIODIC </font> </td> <td> Use anti-periodic boundary conditions.  The value, first derivative and second derivative at the left
boundary are the negative of those at the right boundary. </td> </tr>
</table>



<h4> Data to be interpolated </h4>
The data to be interpolated should have
<i>N<sub>x</sub></i> <i>N<sub>y</sub></i> <i>N<sub>z</sub></i> contiguous
elements, arranged is row-order (C-style) format.  That is, the offset
of the (ix,iy,iz) element is (ix*(Ny+iy)*Nz+iz).  Complex numbers are
stored in the standard format of (real,imaginary) pairs, which the
real element first.

<h4> Function prototypes: </h4>
<u>Single-precision real: </u><br>
<PRE>
multi_UBspline_1d_s * create_multi_UBspline_1d_s (Ugrid x_grid, BCtype_s xBC, int num_splines);
multi_UBspline_2d_s * create_multi_UBspline_2d_s (Ugrid x_grid, Ugrid y_grid,
                                                  BCtype_s xBC, BCtype_s yBC, int num_splines);
multi_UBspline_3d_s * create_multi_UBspline_3d_s (Ugrid x_grid,   Ugrid y_grid, Ugrid z_grid,
                                                  BCtype_s  xBC,  BCtype_s   yBC, BCtype_s   zBC, int num_splines);

void set_multi_UBspline_1d_s (multi_UBspline_1d_s* spline, int spline_num, float *data);
void set_multi_UBspline_2d_s (multi_UBspline_2d_s* spline, int spline_num, float *data);
void set_multi_UBspline_3d_s (multi_UBspline_3d_s* spline, int spline_num, float *data);

</PRE>
<u>Single-precision complex: </u><br>
<PRE>
multi_UBspline_1d_c * create_multi_UBspline_1d_c (Ugrid x_grid, BCtype_c xBC, int num_splines);
multi_UBspline_2d_c * create_multi_UBspline_2d_c (Ugrid x_grid, Ugrid y_grid,
                                                  BCtype_c xBC, BCtype_c yBC, int num_splines);
multi_UBspline_3d_c * create_multi_UBspline_3d_c (Ugrid x_grid,   Ugrid y_grid, Ugrid z_grid,
                                                  BCtype_c  xBC,  BCtype_c   yBC, BCtype_c   zBC, 
                                                  int num_splines);

void set_multi_UBspline_1d_c (multi_UBspline_1d_c* spline, int spline_num, complex_float *data);
void set_multi_UBspline_2d_c (multi_UBspline_2d_c* spline, int spline_num, complex_float *data);
void set_multi_UBspline_3d_c (multi_UBspline_3d_c* spline, int spline_num, complex_float *data);

</PRE>
<u>Double-precision real: </u><br>
<PRE>
multi_UBspline_1d_d * create_multi_UBspline_1d_d (Ugrid x_grid, BCtype_d xBC, int num_splines);
multi_UBspline_2d_d * create_multi_UBspline_2d_d (Ugrid x_grid, Ugrid y_grid,
                                                  BCtype_d xBC, BCtype_d yBC, int num_splines);
multi_UBspline_3d_d * create_multi_UBspline_3d_d (Ugrid x_grid,   Ugrid y_grid, Ugrid z_grid,
                                                  BCtype_d  xBC,  BCtype_d   yBC, BCtype_d   zBC, int num_splines);

void set_multi_UBspline_1d_d (multi_UBspline_1d_d* spline, int spline_num, double *data);
void set_multi_UBspline_2d_d (multi_UBspline_2d_d* spline, int spline_num, double *data);
void set_multi_UBspline_3d_d (multi_UBspline_3d_d* spline, int spline_num, double *data);

</PRE>
<u> Double-precision complex: </u><br>
<PRE>
multi_UBspline_1d_z * create_multi_UBspline_1d_z (Ugrid x_grid, BCtype_z xBC, int num_splines);
multi_UBspline_2d_z * create_multi_UBspline_2d_z (Ugrid x_grid, Ugrid y_grid,
                                                  BCtype_z xBC, BCtype_z yBC, int num_splines);
multi_UBspline_3d_z * create_multi_UBspline_3d_z (Ugrid x_grid,   Ugrid y_grid, Ugrid z_grid,
                                                  BCtype_z  xBC,  BCtype_z   yBC, BCtype_z   zBC, 
                                                  int num_splines);

void set_multi_UBspline_1d_z (multi_UBspline_1d_z* spline, int spline_num, complex_double *data);
void set_multi_UBspline_2d_z (multi_UBspline_2d_z* spline, int spline_num, complex_double *data);
void set_multi_UBspline_3d_z (multi_UBspline_3d_z* spline, int spline_num, complex_double *data);

</PRE>
<hr/>
<h3> <font color="Blue"> Spline destruction </font></h3>
The memory used for spline storage can be freed simply by a call to
<pre>
void
destroy_Bspline (void *<i>spline</i>);
</pre>
The <i>spline</i> parameter can be a spline of any type and dimension,
uniform or nonuniform.
<hr/>
<h3> <font color="Blue"> Spline evaluation </font> </h3>
In contrast to the single-spline routines, <font color="blue">eval_multi_UBspline_*</font> routines
evaluate all <font color="blue">num_splines</font> splines at a given point with a single call.  
The prototypes for the functions are very similar to the single-spline prototypes, but the
value, gradient, hessian, and laplacian arguments are now arrays which much be 
of sufficicient size to hold the values for all the splines.  If the multi-spline object
was created with <i>N</i> splines, the value parameter must be an array of length <i>N</i>.  
Similarly, the gradient array must have dimension <i>N*D</i>, where <i>D</i> is the 
spline dimensionality (i.e. 1, 2, or 3).  Finally the hessian argument must have
dimension <i>N*D*D</i>.

For each of the four datatypes, there are four evaluation routines, depending on
which quantities need to be computed:
<ul>
  <li> Value only
  <li> Value and gradient
  <li> Value, gradient, and Laplacian
  <li> Value, gradient, and Hessian (matrix of 2nd derivatives)
</ul>
For consistency, all results are returned through pointers passed to the evaluation
routines.  Currently, no bounds checking is done for the sake of speed.  The user is
responsible for ensuring that the points passed to the evaluation functions fall within
the grids specified at the time of spline creation.<br>

<h4> Function prototypes: </h4>

<table CELLPADDING=5 frame=border rules=all> 
  <tr>
    <td> <font color="Blue">Quick Jump Table</font>   </td>
    <td> 1D </td>
    <td> 2D </td>
    <td> 3D </td>
  </tr>
  <tr>
     <td> Single-precision real </td>
     <td> <a href="#1Ds"> 1ds </a>
     <td> <a href="#2Ds"> 2ds </a>
     <td> <a href="#3Ds"> 3ds </a>
  </tr>
  <tr>
     <td> Single-precision complex </td>
     <td> <a href="#1Dc"> 1dc </a>
     <td> <a href="#2Dc"> 2dc </a>
     <td> <a href="#3Dc"> 3dc </a>
  </tr>
  <tr>
     <td> Double-precision real </td>
     <td> <a href="#1Dd"> 1dd </a>
     <td> <a href="#2Dd"> 2dd </a>
     <td> <a href="#3Dd"> 3dd </a>
  </tr>
  <tr>
     <td> Double-precision complex </td>
     <td> <a href="#1Dz"> 1dz </a>
     <td> <a href="#2Dz"> 2dz </a>
     <td> <a href="#3Dz"> 3dz </a>
  </tr>
</table>
<br>
<h4> <font color="Blue"> Single-precision real: </font></h4>
<u> <a name="1Ds"> 1D </a></u>
<PRE>
inline void
eval_multi_UBspline_1d_s     (multi_UBspline_1d_s * restrict spline, 
		              double x, float* restrict val);

inline void
eval_multi_UBspline_1d_s_vg  (multi_UBspline_1d_s * restrict spline, double x, 
  		              float* restrict val, float* restrict grad);

inline void
eval_multi_UBspline_1d_s_vgl (multi_UBspline_1d_s * restrict spline, double x, 
			      float* restrict val, float* restrict grad, float* restrict lapl);

inline void /* identical to above routine in 1D */
eval_multi_UBspline_1d_s_vgh (multi_UBspline_1d_s * restrict spline, double x, 
			      float* restrict val, float* restrict grad, float* restrict hess);
</PRE>

<u> <a name="2Ds"> 2D </a> </u>
<PRE>
inline void
eval_multi_UBspline_2d_s     (multi_UBspline_2d_s * restrict spline, double x, double y, 
                              float* restrict val);

inline void
eval_multi_UBspline_2d_s_vg  (multi_UBspline_2d_s * restrict spline, double x, double y, 
  	    	              float* restrict val, float* restrict grad);

inline void
eval_multi_UBspline_2d_s_vgl (multi_UBspline_2d_s * restrict spline, double x, double y,
			      float* restrict val, float* restrict grad, float* restrict lapl);

inline void 
eval_multi_UBspline_2d_s_vgh (multi_UBspline_2d_s * restrict spline, double x, double y,
			      float* restrict val, float* restrict grad, float* restrict hess);
</PRE>
<u><a name="3Ds"> 3D </a></u>
<PRE>
inline void
eval_multi_UBspline_3d_s     (multi_UBspline_3d_s * restrict spline, double x, double y, double z,
                              float* restrict val);

inline void
eval_multi_UBspline_3d_s_vg  (multi_UBspline_3d_s * restrict spline, double x, double y, double z,
  		              float* restrict val, float* restrict grad);

inline void
eval_multi_UBspline_3d_s_vgl (multi_UBspline_3d_s * restrict spline, double x, double y, double z,
			      float* restrict val, float* restrict grad, float* restrict lapl);

inline void 
eval_multi_UBspline_3d_s_vgh (multi_UBspline_3d_s * restrict spline, double x, double y,
			      float* restrict val, float* restrict grad, float* restrict hess);
</PRE>

<h4><font color="Blue">Single-precision complex: </font></h4>
<u> <a name="1Dc"> 1D </a></u>
<PRE>
inline void
eval_multi_UBspline_1d_c     (multi_UBspline_1d_c * restrict spline, 
		              double x, complex_float* restrict val);

inline void
eval_multi_UBspline_1d_c_vg  (multi_UBspline_1d_c * restrict spline, double x, 
  		              complex_float* restrict val, complex_float* restrict grad);

inline void
eval_multi_UBspline_1d_c_vgl (multi_UBspline_1d_c * restrict spline, double x, 
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict lapl);

inline void /* identical to above routine in 1D */
eval_multi_UBspline_1d_c_vgh (multi_UBspline_1d_c * restrict spline, double x, 
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict hess);
</PRE>

<u> <a name="2Dc"> 2D </a> </u>
<PRE>
inline void
eval_multi_UBspline_2d_c     (multi_UBspline_2d_c * restrict spline, double x, double y, 
                              complex_float* restrict val);

inline void
eval_multi_UBspline_2d_c_vg  (multi_UBspline_2d_c * restrict spline, double x, double y, 
  		              complex_float* restrict val, complex_float* restrict grad);

inline void
eval_multi_UBspline_2d_c_vgl (multi_UBspline_2d_c * restrict spline, double x, double y,
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict lapl);

inline void 
eval_multi_UBspline_2d_c_vgh (multi_UBspline_2d_c * restrict spline, double x, double y,
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict hess);
</PRE>
<u> <a name="3Dc"> 3D </a> </u>
<PRE>
inline void
eval_multi_UBspline_3d_c     (multi_UBspline_3d_c * restrict spline, double x, double y, double z,
                              complex_float* restrict val);

inline void
eval_multi_UBspline_3d_c_vg  (multi_UBspline_3d_c * restrict spline, double x, double y, double z,
  		              complex_float* restrict val, complex_float* restrict grad);

inline void
eval_multi_UBspline_3d_c_vgl (multi_UBspline_3d_c * restrict spline, double x, double y, double z,
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict lapl);

inline void 
eval_multi_UBspline_3d_c_vgh (multi_UBspline_3d_c * restrict spline, double x, double y,
			      complex_float* restrict val, complex_float* restrict grad, complex_float* restrict hess);
</PRE>

<h4> <font color="Blue">Double-precision real:</font></h4>
<u> <a name="1Dd"> 1D </a></u>
<PRE>
inline void
eval_multi_UBspline_1d_d     (multi_UBspline_1d_d * restrict spline, 
		              double x, double* restrict val);

inline void
eval_multi_UBspline_1d_d_vg  (multi_UBspline_1d_d * restrict spline, double x, 
  		              double* restrict val, double* restrict grad);

inline void
eval_multi_UBspline_1d_d_vgl (multi_UBspline_1d_d * restrict spline, double x, 
			      double* restrict val, double* restrict grad, double* restrict lapl);

inline void /* identical to above routine in 1D */
eval_multi_UBspline_1d_d_vgh (multi_UBspline_1d_d * restrict spline, double x, 
			      double* restrict val, double* restrict grad, double* restrict hess);
</PRE>

<u> <a name="2Dd"> 2D </a> </u>
<PRE>
inline void
eval_multi_UBspline_2d_d     (multi_UBspline_2d_d * restrict spline, double x, double y, 
                              double* restrict val);

inline void
eval_multi_UBspline_2d_d_vg  (multi_UBspline_2d_d * restrict spline, double x, double y, 
  		              double* restrict val, double* restrict grad);

inline void
eval_multi_UBspline_2d_d_vgl (multi_UBspline_2d_d * restrict spline, double x, double y,
			      double* restrict val, double* restrict grad, double* restrict lapl);

inline void 
eval_multi_UBspline_2d_d_vgh (multi_UBspline_2d_d * restrict spline, double x, double y,
			      double* restrict val, double* restrict grad, double* restrict hess);
</PRE>
<u> <a name="3Dd"> 3D </a></u>
<PRE>
inline void
eval_multi_UBspline_3d_d     (multi_UBspline_3d_d * restrict spline, double x, double y, double z,
                              double* restrict val);

inline void
eval_multi_UBspline_3d_d_vg  (multi_UBspline_3d_d * restrict spline, double x, double y, double z,
  		              double* restrict val, double* restrict grad);

inline void
eval_multi_UBspline_3d_d_vgl (multi_UBspline_3d_d * restrict spline, double x, double y, double z,
			      double* restrict val, double* restrict grad, double* restrict lapl);

inline void 
eval_multi_UBspline_3d_d_vgh (multi_UBspline_3d_d * restrict spline, double x, double y,
			      double* restrict val, double* restrict grad, double* restrict hess);
</PRE>

<h4> <font color="Blue">Double-precision complex: </font></h4>
<u> <a name="1Dz"> 1D </a></u>
<PRE>
inline void
eval_multi_UBspline_1d_z     (multi_UBspline_1d_z * restrict spline, 
		              double x, complex_double* restrict val);

inline void
eval_multi_UBspline_1d_z_vg  (multi_UBspline_1d_z * restrict spline, double x, 
  		              complex_double* restrict val, complex_double* restrict grad);

inline void
eval_multi_UBspline_1d_z_vgl (multi_UBspline_1d_z * restrict spline, double x, 
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict lapl);

inline void /* identical to above routine in 1D */
eval_multi_UBspline_1d_z_vgh (multi_UBspline_1d_z * restrict spline, double x, 
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict hess);
</PRE>

<u> <a name="2Dz"> 2D </a> </u>
<PRE>
inline void
eval_multi_UBspline_2d_z     (multi_UBspline_2d_z * restrict spline, double x, double y, 
                              complex_double* restrict val);

inline void
eval_multi_UBspline_2d_z_vg  (multi_UBspline_2d_z * restrict spline, double x, double y, 
  		              complex_double* restrict val, complex_double* restrict grad);

inline void
eval_multi_UBspline_2d_z_vgl (multi_UBspline_2d_z * restrict spline, double x, double y,
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict lapl);

inline void 
eval_multi_UBspline_2d_z_vgh (multi_UBspline_2d_z * restrict spline, double x, double y,
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict hess);
</PRE>
<u> <a name="3Dz"> 3D </a> </u>
<PRE>
inline void
eval_multi_UBspline_3d_z     (multi_UBspline_3d_z * restrict spline, double x, double y, double z,
                              complex_double* restrict val);

inline void
eval_multi_UBspline_3d_z_vg  (multi_UBspline_3d_z * restrict spline, double x, double y, double z,
  		              complex_double* restrict val, complex_double* restrict grad);

inline void
eval_multi_UBspline_3d_z_vgl (multi_UBspline_3d_z * restrict spline, double x, double y, double z,
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict lapl);

inline void 
eval_multi_UBspline_3d_z_vgh (multi_UBspline_3d_z * restrict spline, double x, double y,
			      complex_double* restrict val, complex_double* restrict grad, complex_double* restrict hess);
</PRE>
<br/>
<hr/>
<table border="0" CELLPADDING=5>
<tr>
<td><a href="http://www.gl.ciw.edu"><img src="CIWlogo_tiny_noBG.png" border="0"/></a></td>
<td><a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=195939&amp;type=2" width="125" height="37" border="0" alt="SourceForge.net Logo" /></a></td>
</tr> 
</table>

</body>
</html>