\documentclass{article} \usepackage{axiom} \begin{document} \title{\$SPAD/src/interp interp-fix.boot} \author{The Axiom Team} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \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. @ <<*>>= <> -- From newfort.boot: checkPrecision e == -- Do we have a string? CHAR_-CODE(CHAR(e,0)) = 34 => e e := delete(char " ",STRINGIMAGE e) $fortranPrecision = "double" => iPart := SUBSEQ(e,0,(period:=POSITION(char ".",e))+1) expt := if ePos := POSITION(char "E",e) then SUBSEQ(e,ePos+1) else "0" rPart := ePos => SUBSEQ(e,period+1,ePos) period+1 < LENGTH e => SUBSEQ(e,period+1) "0" STRCONC(iPart,rPart,"D",expt) e -- From i-eval.boot evaluateType1 form == --evaluates the arguments passed to a constructor [op,:argl]:= form constructor? op => null (sig := getConstructorSignature form) => throwEvalTypeMsg("S2IE0005",[form]) [.,:ml] := sig ml := replaceSharps(ml,form) # argl ^= #ml => throwEvalTypeMsg("S2IE0003",[form,form]) for x in argl for m in ml for argnum in 1.. repeat typeList := [v,:typeList] where v == categoryForm?(m) => m := evaluateType MSUBSTQ(x,'_$,m) evalCategory(x' := (evaluateType x), m) => x' throwEvalTypeMsg("S2IE0004",[form]) m := evaluateType m GETDATABASE(opOf m,'CONSTRUCTORKIND) = 'domain and (tree := mkAtree x) and putTarget(tree,m) and ((bottomUp tree) is [m1]) and (v:= coerceInteractive(getAndEvalConstructorArgument tree,m)) => objValUnwrap v if x = $EmptyMode then x := $quadSymbol throwEvalTypeMsg("S2IE0006",[makeOrdinal argnum,m,form]) [op,:NREVERSE typeList] throwEvalTypeMsg("S2IE0007",[op]) @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}