\documentclass{article} \usepackage{axiom} \begin{document} \title{\$SPAD/src/algebra functions.spad} \author{Brian Dupee} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{domain BFUNCT BasicFunctions} <>= )abbrev domain BFUNCT BasicFunctions ++ Author: Brian Dupee ++ Date Created: August 1994 ++ Date Last Updated: April 1996 ++ Basic Operations: bfKeys, bfEntry ++ Description: A Domain which implements a table containing details of ++ points at which particular functions have evaluation problems. DF ==> DoubleFloat SDF ==> Stream DoubleFloat RS ==> Record(zeros: SDF, ones: SDF, singularities: SDF) BasicFunctions(): E == I where E ==> SetCategory with bfKeys:() -> List Symbol ++ bfKeys() returns the names of each function in the ++ \axiomType{BasicFunctions} table bfEntry:Symbol -> RS ++ bfEntry(k) returns the entry in the \axiomType{BasicFunctions} table ++ corresponding to \spad{k} finiteAggregate I ==> add Rep := Table(Symbol,RS) import Rep, SDF f(x:DF):DF == positive?(x) => -x -x+1 bf():$ == import RS dpi := pi()$DF ndpi:SDF := map(#1*dpi,(z := generate(f,0))) -- [n pi for n in Z] n1dpi:SDF := map(-(2*(#1)-1)*dpi/2,z) -- [(n+1) pi /2] n2dpi:SDF := map(2*#1*dpi,z) -- [2 n pi for n in Z] n3dpi:SDF := map(-(4*(#1)-1)*dpi/4,z) n4dpi:SDF := map(-(4*(#1)-1)*dpi/2,z) sinEntry:RS := [ndpi, n4dpi, empty()$SDF] cosEntry:RS := [n1dpi, n2dpi, esdf := empty()$SDF] tanEntry:RS := [ndpi, n3dpi, n1dpi] asinEntry:RS := [construct([0$DF])$SDF, construct([float(8414709848078965,-16,10)$DF]), esdf] acosEntry:RS := [construct([1$DF])$SDF, construct([float(54030230586813977,-17,10)$DF]), esdf] atanEntry:RS := [construct([0$DF])$SDF, construct([float(15574077246549023,-16,10)$DF]), esdf] secEntry:RS := [esdf, n2dpi, n1dpi] cscEntry:RS := [esdf, n4dpi, ndpi] cotEntry:RS := [n1dpi, n3dpi, ndpi] logEntry:RS := [construct([1$DF])$SDF,esdf, construct([0$DF])$SDF] entryList:List(Record(key:Symbol,entry:RS)) := [[sin@Symbol, sinEntry], [cos@Symbol, cosEntry], [tan@Symbol, tanEntry], [sec@Symbol, secEntry], [csc@Symbol, cscEntry], [cot@Symbol, cotEntry], [asin@Symbol, asinEntry], [acos@Symbol, acosEntry], [atan@Symbol, atanEntry], [log@Symbol, logEntry]] construct(entryList)$Rep bfKeys():List Symbol == keys(bf())$Rep bfEntry(k:Symbol):RS == qelt(bf(),k)$Rep @ \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}