\documentclass{article} \usepackage{axiom} \begin{document} \title{\$SPAD/src/algebra e01.spad} \author{Godfrey Nolan, Mike Dewar} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{package NAGE01 NagInterpolationPackage} <>= )abbrev package NAGE01 NagInterpolationPackage ++ Author: Godfrey Nolan and Mike Dewar ++ Date Created: Jan 1994 ++ Date Last Updated: Thu May 12 17:44:53 1994 ++Description: ++This package uses the NAG Library to calculate the interpolation of a function of ++one or two variables. When provided with the value of the ++function (and possibly one or more of its lowest-order ++derivatives) at each of a number of values of the variable(s), ++the routines provide either an interpolating function or an ++interpolated value. For some of the interpolating functions, ++there are supporting routines to evaluate, differentiate or ++integrate them. ++See \downlink{Manual Page}{manpageXXe01}. NagInterpolationPackage(): Exports == Implementation where S ==> Symbol FOP ==> FortranOutputStackPackage Exports ==> with e01baf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Integer,_ Integer,Integer) -> Result ++ e01baf(m,x,y,lck,lwrk,ifail) ++ determines a cubic spline to a given set of ++ data. ++ See \downlink{Manual Page}{manpageXXe01baf}. e01bef : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Integer) -> Result ++ e01bef(n,x,f,ifail) ++ computes a monotonicity-preserving piecewise cubic Hermite ++ interpolant to a set of data points. ++ See \downlink{Manual Page}{manpageXXe01bef}. e01bff : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ Integer,Matrix DoubleFloat,Integer) -> Result ++ e01bff(n,x,f,d,m,px,ifail) ++ evaluates a piecewise cubic Hermite interpolant at a set ++ of points. ++ See \downlink{Manual Page}{manpageXXe01bff}. e01bgf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ Integer,Matrix DoubleFloat,Integer) -> Result ++ e01bgf(n,x,f,d,m,px,ifail) ++ evaluates a piecewise cubic Hermite interpolant and its ++ first derivative at a set of points. ++ See \downlink{Manual Page}{manpageXXe01bgf}. e01bhf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ DoubleFloat,DoubleFloat,Integer) -> Result ++ e01bhf(n,x,f,d,a,b,ifail) ++ evaluates the definite integral of a piecewise cubic ++ Hermite interpolant over the interval [a,b]. ++ See \downlink{Manual Page}{manpageXXe01bhf}. e01daf : (Integer,Integer,Matrix DoubleFloat,Matrix DoubleFloat,_ Matrix DoubleFloat,Integer) -> Result ++ e01daf(mx,my,x,y,f,ifail) ++ computes a bicubic spline interpolating surface through a ++ set of data values, given on a rectangular grid in the x-y plane. ++ See \downlink{Manual Page}{manpageXXe01daf}. e01saf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ Integer) -> Result ++ e01saf(m,x,y,f,ifail) ++ generates a two-dimensional surface interpolating a set of ++ scattered data points, using the method of Renka and Cline. ++ See \downlink{Manual Page}{manpageXXe01saf}. e01sbf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ Matrix Integer,Matrix DoubleFloat,DoubleFloat,DoubleFloat,Integer) -> Result ++ e01sbf(m,x,y,f,triang,grads,px,py,ifail) ++ evaluates at a given point the two-dimensional interpolant ++ function computed by E01SAF. ++ See \downlink{Manual Page}{manpageXXe01sbf}. e01sef : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ Integer,Integer,DoubleFloat,DoubleFloat,Integer) -> Result ++ e01sef(m,x,y,f,nw,nq,rnw,rnq,ifail) ++ generates a two-dimensional surface interpolating a set of ++ scattered data points, using a modified Shepard method. ++ See \downlink{Manual Page}{manpageXXe01sef}. e01sff : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,_ DoubleFloat,Matrix DoubleFloat,DoubleFloat,DoubleFloat,Integer) -> Result ++ e01sff(m,x,y,f,rnw,fnodes,px,py,ifail) ++ evaluates at a given point the two-dimensional ++ interpolating function computed by E01SEF. ++ See \downlink{Manual Page}{manpageXXe01sff}. Implementation ==> add import Lisp import DoubleFloat import Any import Record import Integer import Matrix DoubleFloat import Boolean import NAGLinkSupportPackage import AnyFunctions1(Integer) import AnyFunctions1(Matrix DoubleFloat) import AnyFunctions1(Matrix Integer) import AnyFunctions1(DoubleFloat) e01baf(mArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_ lckArg:Integer,lwrkArg:Integer,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01baf",_ ["m"::S,"lck"::S,"lwrk"::S,"ifail"::S,"x"::S,"y"::S,"lamda"::S,"c"::S,"wrk"::S_ ]$Lisp,_ ["lamda"::S,"c"::S,"wrk"::S]$Lisp,_ [["double"::S,["x"::S,"m"::S]$Lisp,["y"::S,"m"::S]$Lisp_ ,["lamda"::S,"lck"::S]$Lisp,["c"::S,"lck"::S]$Lisp,["wrk"::S,"lwrk"::S]$Lisp]$Lisp_ ,["integer"::S,"m"::S,"lck"::S,"lwrk"::S,"ifail"::S_ ]$Lisp_ ]$Lisp,_ ["lamda"::S,"c"::S,"ifail"::S]$Lisp,_ [([mArg::Any,lckArg::Any,lwrkArg::Any,ifailArg::Any,xArg::Any,yArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01bef(nArg:Integer,xArg:Matrix DoubleFloat,fArg:Matrix DoubleFloat,_ ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01bef",_ ["n"::S,"ifail"::S,"x"::S,"f"::S,"d"::S]$Lisp,_ ["d"::S]$Lisp,_ [["double"::S,["x"::S,"n"::S]$Lisp,["f"::S,"n"::S]$Lisp_ ,["d"::S,"n"::S]$Lisp]$Lisp_ ,["integer"::S,"n"::S,"ifail"::S]$Lisp_ ]$Lisp,_ ["d"::S,"ifail"::S]$Lisp,_ [([nArg::Any,ifailArg::Any,xArg::Any,fArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01bff(nArg:Integer,xArg:Matrix DoubleFloat,fArg:Matrix DoubleFloat,_ dArg:Matrix DoubleFloat,mArg:Integer,pxArg:Matrix DoubleFloat,_ ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01bff",_ ["n"::S,"m"::S,"ifail"::S,"x"::S,"f"::S,"d"::S,"px"::S,"pf"::S_ ]$Lisp,_ ["pf"::S]$Lisp,_ [["double"::S,["x"::S,"n"::S]$Lisp,["f"::S,"n"::S]$Lisp_ ,["d"::S,"n"::S]$Lisp,["px"::S,"m"::S]$Lisp,["pf"::S,"m"::S]$Lisp]$Lisp_ ,["integer"::S,"n"::S,"m"::S,"ifail"::S]$Lisp_ ]$Lisp,_ ["pf"::S,"ifail"::S]$Lisp,_ [([nArg::Any,mArg::Any,ifailArg::Any,xArg::Any,fArg::Any,dArg::Any,pxArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01bgf(nArg:Integer,xArg:Matrix DoubleFloat,fArg:Matrix DoubleFloat,_ dArg:Matrix DoubleFloat,mArg:Integer,pxArg:Matrix DoubleFloat,_ ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01bgf",_ ["n"::S,"m"::S,"ifail"::S,"x"::S,"f"::S,"d"::S,"px"::S,"pf"::S_ ,"pd"::S]$Lisp,_ ["pf"::S,"pd"::S]$Lisp,_ [["double"::S,["x"::S,"n"::S]$Lisp,["f"::S,"n"::S]$Lisp_ ,["d"::S,"n"::S]$Lisp,["px"::S,"m"::S]$Lisp,["pf"::S,"m"::S]$Lisp,["pd"::S,"m"::S]$Lisp]$Lisp_ ,["integer"::S,"n"::S,"m"::S,"ifail"::S]$Lisp_ ]$Lisp,_ ["pf"::S,"pd"::S,"ifail"::S]$Lisp,_ [([nArg::Any,mArg::Any,ifailArg::Any,xArg::Any,fArg::Any,dArg::Any,pxArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01bhf(nArg:Integer,xArg:Matrix DoubleFloat,fArg:Matrix DoubleFloat,_ dArg:Matrix DoubleFloat,aArg:DoubleFloat,bArg:DoubleFloat,_ ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01bhf",_ ["n"::S,"a"::S,"b"::S,"pint"::S,"ifail"::S_ ,"x"::S,"f"::S,"d"::S]$Lisp,_ ["pint"::S]$Lisp,_ [["double"::S,["x"::S,"n"::S]$Lisp,["f"::S,"n"::S]$Lisp_ ,["d"::S,"n"::S]$Lisp,"a"::S,"b"::S,"pint"::S]$Lisp_ ,["integer"::S,"n"::S,"ifail"::S]$Lisp_ ]$Lisp,_ ["pint"::S,"ifail"::S]$Lisp,_ [([nArg::Any,aArg::Any,bArg::Any,ifailArg::Any,xArg::Any,fArg::Any,dArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01daf(mxArg:Integer,myArg:Integer,xArg:Matrix DoubleFloat,_ yArg:Matrix DoubleFloat,fArg:Matrix DoubleFloat,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01daf",_ ["mx"::S,"my"::S,"px"::S,"py"::S,"ifail"::S_ ,"x"::S,"y"::S,"f"::S,"lamda"::S,"mu"::S_ ,"c"::S,"wrk"::S]$Lisp,_ ["px"::S,"py"::S,"lamda"::S,"mu"::S,"c"::S,"wrk"::S]$Lisp,_ [["double"::S,["x"::S,"mx"::S]$Lisp,["y"::S,"my"::S]$Lisp_ ,["f"::S,["*"::S,"mx"::S,"my"::S]$Lisp]$Lisp,["lamda"::S,["+"::S,"mx"::S,4$Lisp]$Lisp]$Lisp,["mu"::S,["+"::S,"mx"::S,4$Lisp]$Lisp]$Lisp_ ,["c"::S,["*"::S,"mx"::S,"my"::S]$Lisp]$Lisp,["wrk"::S,["*"::S,["+"::S,"mx"::S,6$Lisp]$Lisp,["+"::S,"my"::S,6$Lisp]$Lisp]$Lisp]$Lisp_ ]$Lisp_ ,["integer"::S,"mx"::S,"my"::S,"px"::S,"py"::S_ ,"ifail"::S]$Lisp_ ]$Lisp,_ ["px"::S,"py"::S,"lamda"::S,"mu"::S,"c"::S,"ifail"::S]$Lisp,_ [([mxArg::Any,myArg::Any,ifailArg::Any,xArg::Any,yArg::Any,fArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01saf(mArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_ fArg:Matrix DoubleFloat,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01saf",_ ["m"::S,"ifail"::S,"x"::S,"y"::S,"f"::S,"triang"::S,"grads"::S_ ]$Lisp,_ ["triang"::S,"grads"::S]$Lisp,_ [["double"::S,["x"::S,"m"::S]$Lisp,["y"::S,"m"::S]$Lisp_ ,["f"::S,"m"::S]$Lisp,["grads"::S,2$Lisp,"m"::S]$Lisp]$Lisp_ ,["integer"::S,"m"::S,["triang"::S,["*"::S,7$Lisp,"m"::S]$Lisp]$Lisp_ ,"ifail"::S]$Lisp_ ]$Lisp,_ ["triang"::S,"grads"::S,"ifail"::S]$Lisp,_ [([mArg::Any,ifailArg::Any,xArg::Any,yArg::Any,fArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01sbf(mArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_ fArg:Matrix DoubleFloat,triangArg:Matrix Integer,gradsArg:Matrix DoubleFloat,_ pxArg:DoubleFloat,pyArg:DoubleFloat,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01sbf",_ ["m"::S,"px"::S,"py"::S,"pf"::S,"ifail"::S_ ,"x"::S,"y"::S,"f"::S,"triang"::S,"grads"::S_ ]$Lisp,_ ["pf"::S]$Lisp,_ [["double"::S,["x"::S,"m"::S]$Lisp,["y"::S,"m"::S]$Lisp_ ,["f"::S,"m"::S]$Lisp,["grads"::S,2$Lisp,"m"::S]$Lisp,"px"::S,"py"::S,"pf"::S]$Lisp_ ,["integer"::S,"m"::S,["triang"::S,["*"::S,7$Lisp,"m"::S]$Lisp]$Lisp_ ,"ifail"::S]$Lisp_ ]$Lisp,_ ["pf"::S,"ifail"::S]$Lisp,_ [([mArg::Any,pxArg::Any,pyArg::Any,ifailArg::Any,xArg::Any,yArg::Any,fArg::Any,triangArg::Any,gradsArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01sef(mArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_ fArg:Matrix DoubleFloat,nwArg:Integer,nqArg:Integer,_ rnwArg:DoubleFloat,rnqArg:DoubleFloat,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01sef",_ ["m"::S,"nw"::S,"nq"::S,"minnq"::S,"rnw"::S_ ,"rnq"::S,"ifail"::S,"x"::S,"y"::S,"f"::S,"fnodes"::S,"wrk"::S_ ]$Lisp,_ ["fnodes"::S,"minnq"::S,"wrk"::S]$Lisp,_ [["double"::S,["x"::S,"m"::S]$Lisp,["y"::S,"m"::S]$Lisp_ ,["f"::S,"m"::S]$Lisp,["fnodes"::S,["*"::S,5$Lisp,"m"::S]$Lisp]$Lisp,"rnw"::S,"rnq"::S,["wrk"::S,["*"::S,6$Lisp,"m"::S]$Lisp]$Lisp_ ]$Lisp_ ,["integer"::S,"m"::S,"nw"::S,"nq"::S,"minnq"::S_ ,"ifail"::S]$Lisp_ ]$Lisp,_ ["fnodes"::S,"minnq"::S,"rnw"::S,"rnq"::S,"ifail"::S]$Lisp,_ [([mArg::Any,nwArg::Any,nqArg::Any,rnwArg::Any,rnqArg::Any,ifailArg::Any,xArg::Any,yArg::Any,fArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result e01sff(mArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_ fArg:Matrix DoubleFloat,rnwArg:DoubleFloat,fnodesArg:Matrix DoubleFloat,_ pxArg:DoubleFloat,pyArg:DoubleFloat,ifailArg:Integer): Result == [(invokeNagman(NIL$Lisp,_ "e01sff",_ ["m"::S,"rnw"::S,"px"::S,"py"::S,"pf"::S_ ,"ifail"::S,"x"::S,"y"::S,"f"::S,"fnodes"::S]$Lisp,_ ["pf"::S]$Lisp,_ [["double"::S,["x"::S,"m"::S]$Lisp,["y"::S,"m"::S]$Lisp_ ,["f"::S,"m"::S]$Lisp,"rnw"::S,["fnodes"::S,["*"::S,5$Lisp,"m"::S]$Lisp]$Lisp,"px"::S,"py"::S,"pf"::S]$Lisp_ ,["integer"::S,"m"::S,"ifail"::S]$Lisp_ ]$Lisp,_ ["pf"::S,"ifail"::S]$Lisp,_ [([mArg::Any,rnwArg::Any,pxArg::Any,pyArg::Any,ifailArg::Any,xArg::Any,yArg::Any,fArg::Any,fnodesArg::Any ])_ @List Any]$Lisp)$Lisp)_ pretend List (Record(key:Symbol,entry:Any))]$Result @ \section{License} <>= --Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without --modification, are permitted provided that the following conditions are --met: -- -- - Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- - Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in -- the documentation and/or other materials provided with the -- distribution. -- -- - Neither the name of The Numerical ALgorithms Group Ltd. nor the -- names of its contributors may be used to endorse or promote products -- derived from this software without specific prior written permission. -- --THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @ <<*>>= <> <> @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}