Description: Add back some missing HTML pages
Origin: http://einspline.sourceforge.net/multiUBinterface.shtml
        http://einspline.sourceforge.net/F77multi.shtml
Forwarded: no
Last-Update: 2013-04-03
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- /dev/null
+++ b/www/F77multi.shtml
@@ -0,0 +1,631 @@
+<!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> Fortran 77 interface for multiple uniform splines </h1></center>
+The Fortran 77 wrappers provide a very similar interface to the
+einspline library as in C, with a few exceptions:
+<ul>
+  <li> The fortran routine names are the C names, prefixed by an "f".</li>
+  <li> The spline object pointers are passed as INTEGER*8 arguments,
+  to ensure proper functioning on 64-bit platforms.  </li>
+  <li> Since F77 has no concept of structures, uniform grid objects
+  have been replaced by extra parameters to the
+  create_Multi_Ubspline_<i>x</i> routines.
+  <li> For 2D and 3D splines, data is assumed to be stored in
+  contiguous, row-order format (C-style).  If the data is statically
+  allocated in F77, care must be take to ensure all element data is
+  contiguous in memory.  
+</ul>
+<table CELLPADDING=2 frame=border rules=all width="60%">
+<tr> <td> Boundary condition type </td> <td> Code </td> <td> Meaning </td> </tr>
+<tr> <td> PERIODIC                </td> <td>  0   </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> DERIV1                  </td> <td>  1   </td> <td> The value of the first derivative is specified in lVal or rVal.    </td> </tr>
+<tr> <td> DERIV2                  </td> <td>  2   </td> <td> The value of the second derivative is specified in lVal or rVal.   </td> </tr>
+<tr> <td> FLAT                    </td> <td>  3   </td> <td> The value of the first derivative is set to zero at the boundary.  </td> </tr>
+<tr> <td> NATURAL                 </td> <td>  4   </td> <td> The value of the second derivative is set to zero at the boundary. </td> </tr>
+<tr> <td> ANTIPERIODIC            </td> <td>  5   </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>
+Please see the documentation for the C routines for more information.
+The subroutine names and parameters are given below:
+<br/><br/>
+<center> <h2><u> Uniform spline creation routines </u></h2> </center>
+<h3> <u>One-dimensional:</u></h3>
+<h4> Single-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_1D_S (x0, x1, num_x, x0_code, x0_val, 
+                                        x1_code, x1_val, num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First grid point         </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last grid point          </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of grid points         </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left BC type             </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left BC value            </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right BC type            </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right BC value           </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER    </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_1D_S (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*4    </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_1D_D (x0, x1, num_x, x0_code, x0_val, 
+                                        x1_code, x1_val, num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First grid point         </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last grid point          </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of grid points         </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left BC type             </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left BC value            </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right BC type            </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right BC value           </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER  </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_1D_D (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*8    </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Single-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_1D_C (x0, x1, num_x, x0_code, x0_val, 
+                                        x1_code, x1_val, num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First grid point         </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last grid point          </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of grid points         </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left BC type             </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left BC value            </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right BC type            </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right BC value           </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_1D_C (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_1D_Z (x0, x1, num_x, x0_code, x0_val, 
+                                        x1_code, x1_val, num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First grid point         </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last grid point          </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of grid points         </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left BC type             </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left BC value            </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right BC type            </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right BC value           </td> </tr>
+<tr> <td> num_splines </td> <td> IN  </td> <td> INTEGER   </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_1D_Z (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Data to interpolate      </td> </tr>
+</table>
+
+<h3> <u>Two-dimensional:</u></h3>
+<h4> Single-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_2D_S (x0, x1, num_x, y0, y1, num_y, 
+                                        x0_code, x0_val, x1_code, x1_val, 
+			    	        y0_code, y0_val, y1_code, y1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right y BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER    </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_2D_S (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*4    </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_2D_D (x0, x1, num_x, y0, y1, num_y, 
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right y BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_2D_D (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*8    </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Single-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_2D_C (x0, x1, num_x, y0, y1, num_y, 
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right y BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_2D_C (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*8</td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_2D_Z (x0, x1, num_x, y0, y1, num_y, 
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right y BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER</td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_2D_Z (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+
+<h3> <u>Three-dimensional:</u></h3>
+<h4> Single-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_3D_S (x0, x1, num_x, y0, y1, num_y, z0, z1, num_z,
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+				        z0_code, z0_val, z1_code, z1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> z0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First z grid point       </td> </tr>
+<tr> <td> z1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last z grid point        </td> </tr>
+<tr> <td> num_z    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of z grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right y BC value         </td> </tr>
+<tr> <td> z0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left z BC type           </td> </tr>
+<tr> <td> z0_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Left z BC value          </td> </tr>
+<tr> <td> z1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right z BC type          </td> </tr>
+<tr> <td> z1_val   </td> <td> IN     </td> <td> REAL*4    </td> <td> Right z BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER    </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<br/>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_3D_S (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*4   </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision real</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_3D_D (x0, x1, num_x, y0, y1, num_y, z0, z1, num_z,
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+				        z0_code, z0_val, z1_code, z1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> z0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First z grid point       </td> </tr>
+<tr> <td> z1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last z grid point        </td> </tr>
+<tr> <td> num_z    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of z grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right y BC value         </td> </tr>
+<tr> <td> z0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left z BC type           </td> </tr>
+<tr> <td> z0_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Left z BC value          </td> </tr>
+<tr> <td> z1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right z BC type          </td> </tr>
+<tr> <td> z1_val   </td> <td> IN     </td> <td> REAL*8    </td> <td> Right z BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER    </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_3D_D (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> REAL*8   </td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Single-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_3D_C (x0, x1, num_x, y0, y1, num_y, z0, z1, num_z,
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+				        z0_code, z0_val, z1_code, z1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> z0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First z grid point       </td> </tr>
+<tr> <td> z1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last z grid point        </td> </tr>
+<tr> <td> num_z    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of z grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right y BC value         </td> </tr>
+<tr> <td> z0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left z BC type           </td> </tr>
+<tr> <td> z0_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Left z BC value          </td> </tr>
+<tr> <td> z1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right z BC type          </td> </tr>
+<tr> <td> z1_val   </td> <td> IN     </td> <td> COMPLEX*8 </td> <td> Right z BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_3D_C (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*8</td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<h4> Double-precision complex</h4>
+<pre>
+<font color="blue" size="5">SUBROUTINE FCREATE_MULTI_UBSPLINE_3D_Z (x0, x1, num_x, y0, y1, num_y, z0, z1, num_z,
+                                        x0_code, x0_val, x1_code, x1_val, 
+				        y0_code, y0_val, y1_code, y1_val, 
+				        z0_code, z0_val, z1_code, z1_val, 
+                                        num_splines, spline)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> x0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First x grid point       </td> </tr>
+<tr> <td> x1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last x grid point        </td> </tr>
+<tr> <td> num_x    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of x grid points       </td> </tr>
+<tr> <td> y0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First y grid point       </td> </tr>
+<tr> <td> y1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last y grid point        </td> </tr>
+<tr> <td> num_y    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of y grid points       </td> </tr>
+<tr> <td> z0       </td> <td> IN     </td> <td> REAL*8    </td> <td> First z grid point       </td> </tr>
+<tr> <td> z1       </td> <td> IN     </td> <td> REAL*8    </td> <td> Last z grid point        </td> </tr>
+<tr> <td> num_z    </td> <td> IN     </td> <td> INTEGER   </td> <td> # of z grid points       </td> </tr>
+<tr> <td> x0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left x BC type           </td> </tr>
+<tr> <td> x0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left x BC value          </td> </tr>
+<tr> <td> x1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right x BC type          </td> </tr>
+<tr> <td> x1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right x BC value         </td> </tr>
+<tr> <td> y0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left y BC type           </td> </tr>
+<tr> <td> y0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left y BC value          </td> </tr>
+<tr> <td> y1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right y BC type          </td> </tr>
+<tr> <td> y1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right y BC value         </td> </tr>
+<tr> <td> z0_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Left z BC type           </td> </tr>
+<tr> <td> z0_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Left z BC value          </td> </tr>
+<tr> <td> z1_code  </td> <td> IN     </td> <td> INTEGER   </td> <td> Right z BC type          </td> </tr>
+<tr> <td> z1_val   </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Right z BC value         </td> </tr>
+<tr> <td> num_splines     </td> <td> IN     </td> <td> INTEGER </td> <td> # of splines to interpolate      </td> </tr>
+<tr> <td> spline   </td> <td> OUT    </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+</table>
+<pre>
+<font color="blue" size="5">SUBROUTINE FSET_MULTI_UBSPLINE_3D_Z (spline, spline_num, data)</font>
+</pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument   </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline     </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Handle for spline object </td> </tr>
+<tr> <td> spline_num </td> <td> IN     </td> <td> INTEGER   </td> <td> Spline index (0 to N-1)     </td> </tr>
+<tr> <td> data       </td> <td> IN     </td> <td> COMPLEX*16</td> <td> Data to interpolate      </td> </tr>
+</table>
+<br/>
+<center> <h2><u> Spline destruction routine </u></h2> </center>
+<p>The following subroutine can be used to deallocate the memory for any Bspline object.  
+Note that in the nonuniform case, the grid objects must be destroyed after the splines that
+refer to them.
+<pre>
+<font color="blue" size="5">SUBROUTINE FDESTROY_BSPLINE (spline)</font> </pre>
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Intent </td> <td> Type      </td> <td> Description              </td> </tr>
+<tr> <td> spline   </td> <td> IN     </td> <td> INTEGER*8 </td> <td> Spline object handle     </td> </tr>
+</table>
+<br/>
+
+<center> <h2><u> Multiple, uniform spline evalulation routines </u></h2> </center>
+The evaluation routines for the multi-spline functions are very similiar to the single
+spline routines, but take arrays for the output arguments rather than single
+values.  Below, N in the number of splines in the multi-spline object and
+D is the dimensionality (i.e. 1,2, or 3).
+
+<h3><u> One-dimensional </u></h3>
+<pre>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_S     (spline, x, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_D     (spline, x, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_C     (spline, x, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_Z     (spline, x, val)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_S_VG  (spline, x, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_D_VG  (spline, x, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_C_VG  (spline, x, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_Z_VG  (spline, x, val, grad)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_S_VGL (spline, x, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_D_VGL (spline, x, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_C_VGL (spline, x, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_Z_VGL (spline, x, val, grad, lapl)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_S_VGH (spline, x, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_D_VGH (spline, x, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_C_VGH (spline, x, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_1D_Z_VGH (spline, x, val, grad, hess)</font>
+</pre>
+
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Dimension</td> <td> Intent </td> <td> _S Type   </td> <td> _D Type   </td> <td> _C Type   </td> <td> _Z Type    </td> <td> Description                   </td> </tr>
+<tr> <td> spline   </td> <td>          </td> <td> IN     </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8  </td> <td> Spline handle                 </td> </tr>
+<tr> <td> x        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> Interpolation position        </td> </tr>
+<tr> <td> val      </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated value            </td> </tr>
+<tr> <td> grad     </td> <td>   D*N    </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated first derivative </td> </tr>
+<tr> <td> lapl     </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated second derivative </td> </tr>
+<tr> <td> hess     </td> <td>  D*D*N   </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated second derivative </td> </tr>
+</table>
+<br/>
+
+<h3><u> Two-dimensional </u></h3>
+<pre>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_S     (spline, x, y, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_D     (spline, x, y, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_C     (spline, x, y, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_Z     (spline, x, y, val)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_S_VG  (spline, x, y, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_D_VG  (spline, x, y, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_C_VG  (spline, x, y, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_Z_VG  (spline, x, y, val, grad)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_S_VGL (spline, x, y, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_D_VGL (spline, x, y, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_C_VGL (spline, x, y, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_Z_VGL (spline, x, y, val, grad, lapl)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_S_VGH (spline, x, y, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_D_VGH (spline, x, y, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_C_VGH (spline, x, y, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_2D_Z_VGH (spline, x, y, val, grad, hess)</font>
+</pre>
+
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Dimension</td> <td> Intent </td> <td> _S Type   </td> <td> _D Type   </td> <td> _C Type   </td> <td> _Z Type    </td> <td> Description                        </td> </tr>
+<tr> <td> spline   </td> <td>          </td> <td> IN     </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8  </td> <td> Spline handle                      </td> </tr>
+<tr> <td> x        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> x coordinate for interpolation     </td> </tr>
+<tr> <td> y        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> y coordinate for interpolation     </td> </tr>
+<tr> <td> val      </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated value                 </td> </tr>
+<tr> <td> grad     </td> <td>   D*N    </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated gradient (2 elements) </td> </tr>
+<tr> <td> lapl     </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated Laplacian             </td> </tr>
+<tr> <td> hess     </td> <td>  D*D*N   </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated Hessian (4 elements)  </td> </tr>
+</table>
+<br/>
+
+<h3><u> Three-dimensional </u></h3>
+<pre>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_S     (spline, x, y, z, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_D     (spline, x, y, z, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_C     (spline, x, y, z, val)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_Z     (spline, x, y, z, val)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_S_VG  (spline, x, y, z, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_D_VG  (spline, x, y, z, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_C_VG  (spline, x, y, z, val, grad)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_Z_VG  (spline, x, y, z, val, grad)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_S_VGL (spline, x, y, z, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_D_VGL (spline, x, y, z, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_C_VGL (spline, x, y, z, val, grad, lapl)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_Z_VGL (spline, x, y, z, val, grad, lapl)</font>
+
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_S_VGH (spline, x, y, z, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_D_VGH (spline, x, y, z, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_C_VGH (spline, x, y, z, val, grad, hess)</font>
+<font color="blue" size="5">SUBROUTINE FEVAL_MULTI_UBSPLINE_3D_Z_VGH (spline, x, y, z, val, grad, hess)</font>
+</pre>
+
+<table CELLPADDING=2 frame=border rules=all>
+<tr> <td> Argument </td> <td> Dimension</td> <td> Intent </td> <td> _S Type   </td> <td> _D Type   </td> <td> _C Type   </td> <td> _Z Type    </td> <td> Description                        </td> </tr>
+<tr> <td> spline   </td> <td>          </td> <td> IN     </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8 </td> <td> INTEGER*8  </td> <td> Spline handle                      </td> </tr>
+<tr> <td> x        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> x coordinate for interpolation     </td> </tr>
+<tr> <td> y        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> y coordinate for interpolation     </td> </tr>
+<tr> <td> z        </td> <td>          </td> <td> IN     </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8    </td> <td> REAL*8     </td> <td> z coordinate for interpolation     </td> </tr>
+<tr> <td> val      </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated value                 </td> </tr>
+<tr> <td> grad     </td> <td>   D*N    </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated gradient (3 elements) </td> </tr>
+<tr> <td> lapl     </td> <td>    N     </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated Laplacian             </td> </tr>
+<tr> <td> hess     </td> <td>  D*D*N   </td> <td> OUT    </td> <td> REAL*4    </td> <td> REAL*8    </td> <td> COMPLEX*8 </td> <td> COMPLEX*16 </td> <td> Interpolated Hessian (9 elements)  </td> </tr>
+</table>
+<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>
--- /dev/null
+++ b/www/multiUBinterface.shtml
@@ -0,0 +1,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>
