\documentclass{article}
\usepackage{open-axiom}
\begin{document}
\title{\$SPAD/src/algebra c06.spad}
\author{Godfrey Nolan, Mike Dewar}
\maketitle
\begin{abstract}
\end{abstract}
\eject
\tableofcontents
\eject
\section{package NAGC06 NagSeriesSummationPackage}
<<package NAGC06 NagSeriesSummationPackage>>=
)abbrev package NAGC06 NagSeriesSummationPackage
++ Author: Godfrey Nolan and Mike Dewar
++ Date Created: Jan 1994
++ Date Last Updated: Thu May 12 17:44:30 1994
++Description:
++This package uses the NAG Library to calculate the discrete Fourier
++transform of a sequence of real or complex data values, and
++applies it to calculate convolutions and correlations.
++See \downlink{Manual Page}{manpageXXc06}.

NagSeriesSummationPackage(): Exports == Implementation where
  S ==> Symbol
  FOP ==> FortranOutputStackPackage

  Exports ==> with
    c06eaf : (Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06eaf(n,x,ifail)
     ++ calculates the discrete Fourier transform of a sequence of
     ++ n real data values. (No extra workspace required.)
     ++ See \downlink{Manual Page}{manpageXXc06eaf}.
    c06ebf : (Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06ebf(n,x,ifail)
     ++ calculates the discrete Fourier transform of a Hermitian 
     ++ sequence of n complex data values. (No extra workspace required.)
     ++ See \downlink{Manual Page}{manpageXXc06ebf}.
    c06ecf : (Integer,Matrix DoubleFloat,Matrix DoubleFloat,Integer) -> Result 
     ++ c06ecf(n,x,y,ifail)
     ++ calculates the discrete Fourier transform of a sequence of
     ++ n complex data values. (No extra workspace required.)
     ++ See \downlink{Manual Page}{manpageXXc06ecf}.
    c06ekf : (Integer,Integer,Matrix DoubleFloat,Matrix DoubleFloat,_
	Integer) -> Result 
     ++ c06ekf(job,n,x,y,ifail)
     ++ calculates the circular convolution of two 
     ++ real vectors of period n. No extra workspace is required.
     ++ See \downlink{Manual Page}{manpageXXc06ekf}.
    c06fpf : (Integer,Integer,String,Matrix DoubleFloat,_
	Matrix DoubleFloat,Integer) -> Result 
     ++ c06fpf(m,n,init,x,trig,ifail)
     ++ computes the discrete Fourier transforms of m sequences, 
     ++ each containing n real data values. This routine is designed to 
     ++ be particularly efficient on vector processors.
     ++ See \downlink{Manual Page}{manpageXXc06fpf}.
    c06fqf : (Integer,Integer,String,Matrix DoubleFloat,_
	Matrix DoubleFloat,Integer) -> Result 
     ++ c06fqf(m,n,init,x,trig,ifail)
     ++ computes the discrete Fourier transforms of m Hermitian 
     ++ sequences, each containing n complex data values. This routine is
     ++ designed to be particularly efficient on vector processors.
     ++ See \downlink{Manual Page}{manpageXXc06fqf}.
    c06frf : (Integer,Integer,String,Matrix DoubleFloat,_
	Matrix DoubleFloat,Matrix DoubleFloat,Integer) -> Result 
     ++ c06frf(m,n,init,x,y,trig,ifail)
     ++ computes the discrete Fourier transforms of m sequences, 
     ++ each containing n complex data values. This routine is designed 
     ++ to be particularly efficient on vector processors.
     ++ See \downlink{Manual Page}{manpageXXc06frf}.
    c06fuf : (Integer,Integer,String,Matrix DoubleFloat,_
	Matrix DoubleFloat,Matrix DoubleFloat,Matrix DoubleFloat,Integer) -> Result 
     ++ c06fuf(m,n,init,x,y,trigm,trign,ifail)
     ++ computes the two-dimensional discrete Fourier transform of
     ++ a bivariate sequence of complex data values. This routine is 
     ++ designed to be particularly efficient on vector processors.
     ++ See \downlink{Manual Page}{manpageXXc06fuf}.
    c06gbf : (Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06gbf(n,x,ifail)
     ++ forms the complex conjugate of n 
     ++ data values.
     ++ See \downlink{Manual Page}{manpageXXc06gbf}.
    c06gcf : (Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06gcf(n,y,ifail)
     ++ forms the complex conjugate of a sequence of n data 
     ++ values.
     ++ See \downlink{Manual Page}{manpageXXc06gcf}.
    c06gqf : (Integer,Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06gqf(m,n,x,ifail)
     ++ forms the complex conjugates, 
     ++ each containing n data values.
     ++ See \downlink{Manual Page}{manpageXXc06gqf}.
    c06gsf : (Integer,Integer,Matrix DoubleFloat,Integer) -> Result 
     ++ c06gsf(m,n,x,ifail)
     ++ takes m Hermitian sequences, each containing n data 
     ++ values, and forms the real and imaginary parts of the m 
     ++ corresponding complex sequences.
     ++ See \downlink{Manual Page}{manpageXXc06gsf}.
  Implementation ==> add

    import Lisp
    import DoubleFloat
    import Any
    import Record
    import Integer
    import Matrix DoubleFloat
    import Boolean
    import NAGLinkSupportPackage
    import AnyFunctions1(Integer)
    import AnyFunctions1(String)
    import AnyFunctions1(Matrix DoubleFloat)


    c06eaf(nArg:Integer,xArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06eaf",_
	["n"::S,"ifail"::S,"x"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,"n"::S]$Lisp]$Lisp_
	,["integer"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"ifail"::S]$Lisp,_
	[([nArg::Any,ifailArg::Any,xArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result


    c06ebf(nArg:Integer,xArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06ebf",_
	["n"::S,"ifail"::S,"x"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,"n"::S]$Lisp]$Lisp_
	,["integer"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"ifail"::S]$Lisp,_
	[([nArg::Any,ifailArg::Any,xArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06ecf(nArg:Integer,xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,_
	ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06ecf",_
	["n"::S,"ifail"::S,"x"::S,"y"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,"n"::S]$Lisp,["y"::S,"n"::S]$Lisp_
	]$Lisp_
	,["integer"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"y"::S,"ifail"::S]$Lisp,_
	[([nArg::Any,ifailArg::Any,xArg::Any,yArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06ekf(jobArg:Integer,nArg:Integer,xArg:Matrix DoubleFloat,_
	yArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06ekf",_
	["job"::S,"n"::S,"ifail"::S,"x"::S,"y"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,"n"::S]$Lisp,["y"::S,"n"::S]$Lisp_
	]$Lisp_
	,["integer"::S,"job"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"y"::S,"ifail"::S]$Lisp,_
	[([jobArg::Any,nArg::Any,ifailArg::Any,xArg::Any,yArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06fpf(mArg:Integer,nArg:Integer,initArg:String,_
	xArg:Matrix DoubleFloat,trigArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06fpf",_
	["m"::S,"n"::S,"init"::S,"ifail"::S,"x"::S,"trig"::S,"work"::S]$Lisp,_
	["work"::S]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	,["trig"::S,["*"::S,2$Lisp,"n"::S]$Lisp]$Lisp,["work"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	,["character"::S,"init"::S]$Lisp_
	]$Lisp,_
	["x"::S,"trig"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,initArg::Any,ifailArg::Any,xArg::Any,trigArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06fqf(mArg:Integer,nArg:Integer,initArg:String,_
	xArg:Matrix DoubleFloat,trigArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06fqf",_
	["m"::S,"n"::S,"init"::S,"ifail"::S,"x"::S,"trig"::S,"work"::S]$Lisp,_
	["work"::S]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	,["trig"::S,["*"::S,2$Lisp,"n"::S]$Lisp]$Lisp,["work"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	,["character"::S,"init"::S]$Lisp_
	]$Lisp,_
	["x"::S,"trig"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,initArg::Any,ifailArg::Any,xArg::Any,trigArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06frf(mArg:Integer,nArg:Integer,initArg:String,_
	xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,trigArg:Matrix DoubleFloat,_
	ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06frf",_
	["m"::S,"n"::S,"init"::S,"ifail"::S,"x"::S,"y"::S,"trig"::S,"work"::S]$Lisp,_
	["work"::S]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	,["y"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp,["trig"::S,["*"::S,2$Lisp,"n"::S]$Lisp]$Lisp,["work"::S,["*"::S,["*"::S,2$Lisp,"m"::S]$Lisp,"n"::S]$Lisp]$Lisp_
	]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	,["character"::S,"init"::S]$Lisp_
	]$Lisp,_
	["x"::S,"y"::S,"trig"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,initArg::Any,ifailArg::Any,xArg::Any,yArg::Any,trigArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06fuf(mArg:Integer,nArg:Integer,initArg:String,_
	xArg:Matrix DoubleFloat,yArg:Matrix DoubleFloat,trigmArg:Matrix DoubleFloat,_
	trignArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06fuf",_
	["m"::S,"n"::S,"init"::S,"ifail"::S,"x"::S,"y"::S,"trigm"::S,"trign"::S,"work"::S_
	]$Lisp,_
	["work"::S]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	,["y"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp,["trigm"::S,["*"::S,2$Lisp,"m"::S]$Lisp]$Lisp,["trign"::S,["*"::S,2$Lisp,"n"::S]$Lisp]$Lisp_
	,["work"::S,["*"::S,["*"::S,2$Lisp,"m"::S]$Lisp,"n"::S]$Lisp]$Lisp]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	,["character"::S,"init"::S]$Lisp_
	]$Lisp,_
	["x"::S,"y"::S,"trigm"::S,"trign"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,initArg::Any,ifailArg::Any,xArg::Any,yArg::Any,trigmArg::Any,trignArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06gbf(nArg:Integer,xArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06gbf",_
	["n"::S,"ifail"::S,"x"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,"n"::S]$Lisp]$Lisp_
	,["integer"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"ifail"::S]$Lisp,_
	[([nArg::Any,ifailArg::Any,xArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06gcf(nArg:Integer,yArg:Matrix DoubleFloat,ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06gcf",_
	["n"::S,"ifail"::S,"y"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["y"::S,"n"::S]$Lisp]$Lisp_
	,["integer"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["y"::S,"ifail"::S]$Lisp,_
	[([nArg::Any,ifailArg::Any,yArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06gqf(mArg:Integer,nArg:Integer,xArg:Matrix DoubleFloat,_
	ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06gqf",_
	["m"::S,"n"::S,"ifail"::S,"x"::S]$Lisp,_
	[]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["x"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,ifailArg::Any,xArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

    c06gsf(mArg:Integer,nArg:Integer,xArg:Matrix DoubleFloat,_
	ifailArg:Integer): Result == 
	[(invokeNagman(NIL$Lisp,_
	"c06gsf",_
	["m"::S,"n"::S,"ifail"::S,"x"::S,"u"::S,"v"::S]$Lisp,_
	["u"::S,"v"::S]$Lisp,_
	[["double"::S,["x"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp_
	,["u"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp,["v"::S,["*"::S,"m"::S,"n"::S]$Lisp]$Lisp]$Lisp_
	,["integer"::S,"m"::S,"n"::S,"ifail"::S]$Lisp_
	]$Lisp,_
	["u"::S,"v"::S,"ifail"::S]$Lisp,_
	[([mArg::Any,nArg::Any,ifailArg::Any,xArg::Any ])_
	@List Any]$Lisp)$Lisp)_
	pretend List (Record(key:Symbol,entry:Any))]$Result

@
\section{License}
<<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.
@
<<*>>=
<<license>>

<<package NAGC06 NagSeriesSummationPackage>>
@
\eject
\begin{thebibliography}{99}
\bibitem{1} nothing
\end{thebibliography}
\end{document}