diff --git a/changelog b/changelog index a92ed95..077ceb3 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,7 @@ +20090830 tpd src/axiom-website/patches.html 20090830.05.tpd.patch +20090830 tpd src/interp/Makefile move nag-c02.boot to nag-c02.lisp +20090830 tpd src/interp/nag-c02.lisp added, rewritten from nag-c02.boot +20090830 tpd src/interp/nag-c02.boot removed, rewritten to nag-c02.lisp 20090830 tpd src/axiom-website/patches.html 20090830.04.tpd.patch 20090830 tpd src/interp/Makefile move as.boot to as.lisp 20090830 tpd src/interp/as.lisp added, rewritten from as.boot diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 40c43dc..4b49cf9 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -1946,5 +1946,7 @@ src/interp/bc-matrix rewrite from boot to lisp
src/interp/hashcode rewrite from boot to lisp
20090830.04.tpd.patch src/interp/as.lisp rewrite from boot to lisp
+20090830.05.tpd.patch +src/interp/nag-c02.lisp rewrite from boot to lisp
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet index 6622785..5a2a769 100644 --- a/src/interp/Makefile.pamphlet +++ b/src/interp/Makefile.pamphlet @@ -1345,48 +1345,39 @@ ${MID}/c-util.lisp: ${IN}/c-util.lisp.pamphlet @ <>= ${OUT}/c-util.lisp: ${IN}/c-util.lisp.pamphlet - @ echo 221 making ${OUT}/c-util.lisp from ${IN}/c-util.boot.pamphlet + @ echo 221 making ${OUT}/c-util.lisp from ${IN}/c-util.lisp.pamphlet @ rm -f ${OUT}/c-util.${O} @( cd ${OUT} ; \ ${TANGLE} ${IN}/c-util.lisp.pamphlet >c-util.lisp ) @ -\subsection{nag-c02.boot \cite{43}} +\subsection{nag-c02.lisp} <>= ${AUTO}/nag-c02.${O}: ${OUT}/nag-c02.${O} - @ echo 150 making${AUTO}/nag-c02.${O} from ${OUT}/nag-c02.${O} + @ echo 154 making ${AUTO}/nag-c02.${O} from ${OUT}/nag-c02.${O} @ cp ${OUT}/nag-c02.${O} ${AUTO} @ <>= -${OUT}/nag-c02.${O}: ${MID}/nag-c02.clisp - @ echo 151 making ${OUT}/nag-c02.${O} from ${MID}/nag-c02.clisp - @ (cd ${MID} ; \ +${OUT}/nag-c02.${O}: ${MID}/nag-c02.lisp + @ echo 136 making ${OUT}/nag-c02.${O} from ${MID}/nag-c02.lisp + @ ( cd ${MID} ; \ if [ -z "${NOISE}" ] ; then \ - echo '(progn (compile-file "${MID}/nag-c02.clisp"' \ + echo '(progn (compile-file "${MID}/nag-c02.lisp"' \ ':output-file "${OUT}/nag-c02.${O}") (${BYE}))' | ${DEPSYS} ; \ else \ - echo '(progn (compile-file "${MID}/nag-c02.clisp"' \ + echo '(progn (compile-file "${MID}/nag-c02.lisp"' \ ':output-file "${OUT}/nag-c02.${O}") (${BYE}))' | ${DEPSYS} \ >${TMP}/trace ; \ fi ) @ -<>= -${MID}/nag-c02.clisp: ${IN}/nag-c02.boot.pamphlet - @ echo 152 making ${MID}/nag-c02.clisp from ${IN}/nag-c02.boot.pamphlet +<>= +${MID}/nag-c02.lisp: ${IN}/nag-c02.lisp.pamphlet + @ echo 137 making ${MID}/nag-c02.lisp from ${IN}/nag-c02.lisp.pamphlet @ (cd ${MID} ; \ - ${TANGLE} ${IN}/nag-c02.boot.pamphlet >nag-c02.boot ; \ - if [ -z "${NOISE}" ] ; then \ - echo '(progn (boot::reroot "${SPAD}")' \ - '(boottran::boottocl "nag-c02.boot") (${BYE}))' | ${DEPSYS} ; \ - else \ - echo '(progn (boot::reroot "${SPAD}")' \ - '(boottran::boottocl "nag-c02.boot") (${BYE}))' | ${DEPSYS} \ - >${TMP}/trace ; \ - fi ; \ - rm nag-c02.boot ) + ${TANGLE} ${IN}/nag-c02.lisp.pamphlet >nag-c02.lisp ) @ @@ -4718,7 +4709,7 @@ clean: <> <> -<> +<> <> <> diff --git a/src/interp/nag-c02.boot.pamphlet b/src/interp/nag-c02.boot.pamphlet deleted file mode 100644 index ed5821e..0000000 --- a/src/interp/nag-c02.boot.pamphlet +++ /dev/null @@ -1,316 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp nag-c02.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. - -@ -<<*>>= -<> - -c02aff() == - htInitPage('"C02AFF - All Zeros of a Complex Polynomial",nil) - htMakePage '( - (domainConditions - (isDomain PI (PositiveInteger))) - (text . "\windowlink{Manual Page}{manpageXXc02aff} for this routine ") - (text . "\newline ") - (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02aff| '|NagPolynomialRootsPackage|)} for this routine") - (text . "\newline \horizontalline ") - (text . "Finds all the roots of the complex polynomial equation ") - (text . "\htbitmap{c02aff}, using a variant of Laguerre's method. ") - (text . "\blankline ") - (text . "\newline \menuitemstyle{} ") - (text . "\tab{2} Enter the degree {\em n} of the polynomial:") - (text . "\newline\tab{2} ") - (bcStrings (5 5 n PI)) - (text . "\blankline") - (text . "\newline") - (text . "\newline \menuitemstyle{} \tab{2} Scale value:") - (radioButtons scale - ("" " True" true) - ("" " False" false)) - (text . "\blankline ") - (text . "\newline \menuitemstyle{} \tab{2} Ifail value:") - (radioButtons ifail - ("" " -1, Print error messages" minusOne) - ("" " 1, Suppress error messages" one))) - htMakeDoneButton('"Continue", 'c02affSolve) - htShowPage() - -c02affSolve htPage == - n := - $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) - objValUnwrap htpLabelSpadValue(htPage, 'n) - logical := htpButtonValue(htPage,'scale) - scale := - logical = 'true => '"true" - '"false" - error := htpButtonValue(htPage,'ifail) - ifail := - error = 'one => '1 - '-1 - n = '5 => c02affDefaultSolve(htPage,scale,ifail) - labelList := - "append"/[f(i,n) for i in 1..(n+1)] where f(i,n) == - prefix := ('"\newline z**") - prefix := STRCONC(prefix,STRINGIMAGE (n-i+1),'"\space{1}") - post := ('"\tab{30} ") - post := STRCONC(post,'"\space{1}") - rnam := INTERN STRCONC ('"r",STRINGIMAGE i) - inam := INTERN STRCONC ('"i",STRINGIMAGE i) - [['text,:prefix],['bcStrings,[10, 0.0, rnam, 'P]], - ['text,:post],['bcStrings,[10, 0.0, inam, 'P]]] - equationPart := [ - '(domainConditions - (isDomain P (Polynomial $EmptyMode)) - (isDomain S (String)) - (isDomain PI (PositiveInteger))), - :labelList] - page := htInitPage("C02AFF - All Zeros of a Complex Polynomial", htpPropertyList htPage) - htSay '"\menuitemstyle{} \tab{2} Enter the coefficients of the polynomial: " - htSay '"\blankline " - htSay '"Real parts \tab{30} Imaginary parts " - htSay '"\newline " - htMakePage equationPart - htMakeDoneButton('"Continue",'c02affGen) - htpSetProperty(page,'n,n) - htpSetProperty(page,'scale,scale) - htpSetProperty(page,'ifail,ifail) - htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) - htShowPage() - -c02affDefaultSolve (htPage, scale, ifail) == - n := '5 - page := htInitPage('"C02AFF - All Zeros of a Complex Polynomial",nil) - htMakePage '( - (domainConditions - (isDomain F (Float))) - (text . "\newline \menuitemstyle{} \tab{2} ") - (text . "Enter the coefficients of the polynomial: ") - (text . "\blankline ") - (text . "Real parts \tab{30} Imaginary parts ") - (text . "\newline z**5 \space{1} ") - (bcStrings (10 "5.0" r1 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "6.0" i1 F)) - (text . "\newline ") - (text . "z**4 \space{1} ") - (bcStrings (10 "30.0" r2 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "20.0" i2 F)) - (text . "\newline ") - (text . "z**3 \space{1} ") - (bcStrings (10 "-0.2" r3 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "-6.0" i3 F)) - (text . "\newline ") - (text . "z**2 \space{1} ") - (bcStrings (10 "50.0" r4 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "100000.0" i4 F)) - (text . "\newline ") - (text . "z**1 \space{1} ") - (bcStrings (10 "-2.0" r5 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "40.0" i5 F)) - (text . "\newline ") - (text . "z**0 \space{1} ") - (bcStrings (10 "10.0" r6 F)) - (text . "\tab{30} ") - (text . "\space{1} ") - (bcStrings (10 "1.0" i6 F)) - (text . "\newline ") - (text . "\blankline")) - htMakeDoneButton('"Continue",'c02affGen) - htpSetProperty(page,'n,n) - htpSetProperty(page,'scale,scale) - htpSetProperty(page,'ifail,ifail) - htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) - htShowPage() - - -c02affGen htPage == - n := htpProperty(htPage,'n) - scale := htpProperty(htPage,'scale) - ifail := htpProperty(htPage,'ifail) - alist := htpInputAreaAlist htPage - y := alist - while y repeat - right := STRCONC((first y).1," ") - y := rest y - left := STRCONC((first y).1," ") - y := rest y - reallist := [left,:reallist] - imaglist := [right,:imaglist] - realstring := bcwords2liststring reallist - imagstring := bcwords2liststring imaglist - linkGen STRCONC ('"c02aff([",realstring,",",imagstring,"],",STRINGIMAGE n,",",scale,",",STRINGIMAGE ifail,")") - -c02agf() == - htInitPage('"C02AGF - All Zeros of a Real Polynomial",nil) - htMakePage '( - (domainConditions - (isDomain PI (PositiveInteger))) - (text . "\windowlink{Manual Page}{manpageXXc02agf} for this routine ") - (text . "\newline ") - (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02agf| '|NagPolynomialRootsPackage|)} for this routine") - (text . "\newline \horizontalline ") - (text . "Finds all the roots of the real polynomial equation ") - (text . "\htbitmap{c02aff}, using a variant of Laguerre's method. ") - (text . "\blankline ") - (text . "\newline \menuitemstyle{} ") - (text . "\tab{2} Enter the degree {\em n} of the polynomial:") - (text . "\newline\tab{2} ") - (bcStrings (5 5 n PI)) - (text . "\blankline") - (text . "\newline") - (text . "\newline \menuitemstyle{} \tab{2} Scale value:") - (radioButtons scale - ("" " True" true) - ("" " False" false)) - (text . "\blankline ") - (text . "\newline \menuitemstyle{} \tab{2} Ifail value:") - (radioButtons ifail - ("" " -1, Print error messages" minusOne) - ("" " 1, Suppress error messages" one))) - htMakeDoneButton('"Continue", 'c02agfSolve) - htShowPage() - -c02agfSolve htPage == - n := - $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) - objValUnwrap htpLabelSpadValue(htPage, 'n) - logical := htpButtonValue(htPage,'scale) - scale := - logical = 'true => '"true" - '"false" - error := htpButtonValue(htPage,'ifail) - ifail := - error = 'one => '1 - '-1 - n = '5 => c02agfDefaultSolve(htPage,scale,ifail) - labelList := - "append"/[f(i,n) for i in 1..(n+1)] where f(i,n) == - prefix := ('"\newline z**") - prefix := STRCONC(prefix,STRINGIMAGE (n-i+1),'"\space{1}") - rnam := INTERN STRCONC ('"r",STRINGIMAGE i) - [['text,:prefix],['bcStrings,[10, 0.0, rnam, 'P]]] - equationPart := [ - '(domainConditions - (isDomain P (Polynomial $EmptyMode)) - (isDomain S (String)) - (isDomain PI (PositiveInteger))), - :labelList] - page := htInitPage("C02AGF - All Zeros of a Real Polynomial", htpPropertyList htPage) - htSay '"\menuitemstyle{} \tab{2} " - htSay '"Enter the coefficients of the polynomial: " - htSay '"\newline " - htMakePage equationPart - htMakeDoneButton('"Continue",'c02agfGen) - htpSetProperty(page,'n,n) - htpSetProperty(page,'scale,scale) - htpSetProperty(page,'ifail,ifail) - htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) - htShowPage() - - -c02agfDefaultSolve (htPage, scale, ifail) == - n := '5 - page := htInitPage('"C02AGF - All Zeros of a Real Polynomial",nil) - htMakePage '( - (domainConditions - (isDomain F (Float))) - (text . "\newline \menuitemstyle{} \tab{2} ") - (text . "Enter the coefficients of the polynomial: ") - (text . "\newline ") - (text . "z**5 \space{1} ") - (bcStrings (10 "1.0" r1 F)) - (text . "\newline ") - (text . "z**4 \space{1} ") - (bcStrings (10 "2.0" r2 F)) - (text . "\newline ") - (text . "z**3 \space{1} ") - (bcStrings (10 "3.0" r3 F)) - (text . "\newline ") - (text . "z**2 \space{1} ") - (bcStrings (10 "4.0" r4 F)) - (text . "\newline ") - (text . "z**1 \space{1} ") - (bcStrings (10 "5.0" r5 F)) - (text . "\newline ") - (text . "z**0 \space{1} ") - (bcStrings (10 "6.0" r6 F)) - (text . "\newline ") - (text . "\blankline")) - htMakeDoneButton('"Continue",'c02agfGen) - htpSetProperty(page,'n,n) - htpSetProperty(page,'scale,scale) - htpSetProperty(page,'ifail,ifail) - htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) - htShowPage() - - -c02agfGen htPage == - n := htpProperty(htPage,'n) - scale := htpProperty(htPage,'scale) - ifail := htpProperty(htPage,'ifail) - alist := htpInputAreaAlist htPage - y := alist - while y repeat - left := STRCONC((first y).1," ") - y := rest y - reallist := [left,:reallist] - realstring := bcwords2liststring reallist - linkGen STRCONC ('"c02agf([",realstring,"],",STRINGIMAGE n,",",scale,",",STRINGIMAGE ifail,")") - - -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/nag-c02.lisp.pamphlet b/src/interp/nag-c02.lisp.pamphlet new file mode 100644 index 0000000..e358fea --- /dev/null +++ b/src/interp/nag-c02.lisp.pamphlet @@ -0,0 +1,663 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/interp nag-c02.lisp} +\author{The Axiom Team} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +<<*>>= + +(IN-PACKAGE "BOOT" ) + +;c02aff() == +; htInitPage('"C02AFF - All Zeros of a Complex Polynomial",nil) +; htMakePage '( +; (domainConditions +; (isDomain PI (PositiveInteger))) +; (text . "\windowlink{Manual Page}{manpageXXc02aff} for this routine ") +; (text . "\newline ") +; (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02aff| '|NagPolynomialRootsPackage|)} for this routine") +; (text . "\newline \horizontalline ") +; (text . "Finds all the roots of the complex polynomial equation ") +; (text . "\htbitmap{c02aff}, using a variant of Laguerre's method. ") +; (text . "\blankline ") +; (text . "\newline \menuitemstyle{} ") +; (text . "\tab{2} Enter the degree {\em n} of the polynomial:") +; (text . "\newline\tab{2} ") +; (bcStrings (5 5 n PI)) +; (text . "\blankline") +; (text . "\newline") +; (text . "\newline \menuitemstyle{} \tab{2} Scale value:") +; (radioButtons scale +; ("" " True" true) +; ("" " False" false)) +; (text . "\blankline ") +; (text . "\newline \menuitemstyle{} \tab{2} Ifail value:") +; (radioButtons ifail +; ("" " -1, Print error messages" minusOne) +; ("" " 1, Suppress error messages" one))) +; htMakeDoneButton('"Continue", 'c02affSolve) +; htShowPage() + +(DEFUN |c02aff| () + (PROGN + (|htInitPage| + (MAKESTRING "C02AFF - All Zeros of a Complex Polynomial") NIL) + (|htMakePage| + '((|domainConditions| (|isDomain| PI (|PositiveInteger|))) + (|text| + . "\\windowlink{Manual Page}{manpageXXc02aff} for this routine ") + (|text| . "\\newline ") + (|text| + . "\\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02aff| '|NagPolynomialRootsPackage|)} for this routine") + (|text| . "\\newline \\horizontalline ") + (|text| + . "Finds all the roots of the complex polynomial equation ") + (|text| + . "\\htbitmap{c02aff}, using a variant of Laguerre's method. ") + (|text| . "\\blankline ") + (|text| . "\\newline \\menuitemstyle{} ") + (|text| + . "\\tab{2} Enter the degree {\\em n} of the polynomial:") + (|text| . "\\newline\\tab{2} ") (|bcStrings| (5 5 |n| PI)) + (|text| . "\\blankline") (|text| . "\\newline") + (|text| + . "\\newline \\menuitemstyle{} \\tab{2} Scale value:") + (|radioButtons| |scale| ("" " True" |true|) + ("" " False" |false|)) + (|text| . "\\blankline ") + (|text| + . "\\newline \\menuitemstyle{} \\tab{2} Ifail value:") + (|radioButtons| |ifail| + ("" " -1, Print error messages" |minusOne|) + ("" " 1, Suppress error messages" |one|)))) + (|htMakeDoneButton| (MAKESTRING "Continue") '|c02affSolve|) + (|htShowPage|))) + +;c02affSolve htPage == +; n := +; $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) +; objValUnwrap htpLabelSpadValue(htPage, 'n) +; logical := htpButtonValue(htPage,'scale) +; scale := +; logical = 'true => '"true" +; '"false" +; error := htpButtonValue(htPage,'ifail) +; ifail := +; error = 'one => '1 +; '-1 +; n = '5 => c02affDefaultSolve(htPage,scale,ifail) +; labelList := +; "append"/[f(i,n) for i in 1..(n+1)] where f(i,n) == +; prefix := ('"\newline z**") +; prefix := STRCONC(prefix,STRINGIMAGE (n-i+1),'"\space{1}") +; post := ('"\tab{30} ") +; post := STRCONC(post,'"\space{1}") +; rnam := INTERN STRCONC ('"r",STRINGIMAGE i) +; inam := INTERN STRCONC ('"i",STRINGIMAGE i) +; [['text,:prefix],['bcStrings,[10, 0.0, rnam, 'P]], +; ['text,:post],['bcStrings,[10, 0.0, inam, 'P]]] +; equationPart := [ +; '(domainConditions +; (isDomain P (Polynomial $EmptyMode)) +; (isDomain S (String)) +; (isDomain PI (PositiveInteger))), +; :labelList] +; page := htInitPage("C02AFF - All Zeros of a Complex Polynomial", htpPropertyList htPage) +; htSay '"\menuitemstyle{} \tab{2} Enter the coefficients of the polynomial: " +; htSay '"\blankline " +; htSay '"Real parts \tab{30} Imaginary parts " +; htSay '"\newline " +; htMakePage equationPart +; htMakeDoneButton('"Continue",'c02affGen) +; htpSetProperty(page,'n,n) +; htpSetProperty(page,'scale,scale) +; htpSetProperty(page,'ifail,ifail) +; htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) +; htShowPage() + +(DEFUN |c02affSolve,f| (|i| |n|) + (PROG (|prefix| |post| |rnam| |inam|) + (RETURN + (SEQ (SPADLET |prefix| (MAKESTRING "\\newline z**")) + (SPADLET |prefix| + (STRCONC |prefix| + (STRINGIMAGE + (PLUS (SPADDIFFERENCE |n| |i|) 1)) + (MAKESTRING "\\space{1}"))) + (SPADLET |post| (MAKESTRING "\\tab{30} ")) + (SPADLET |post| (STRCONC |post| (MAKESTRING "\\space{1}"))) + (SPADLET |rnam| + (INTERN (STRCONC (MAKESTRING "r") + (STRINGIMAGE |i|)))) + (SPADLET |inam| + (INTERN (STRCONC (MAKESTRING "i") + (STRINGIMAGE |i|)))) + (EXIT (CONS (CONS '|text| |prefix|) + (CONS (CONS '|bcStrings| + (CONS + (CONS 10 + (CONS 0.0 + (CONS |rnam| (CONS 'P NIL)))) + NIL)) + (CONS (CONS '|text| |post|) + (CONS + (CONS '|bcStrings| + (CONS + (CONS 10 + (CONS 0.0 + (CONS |inam| (CONS 'P NIL)))) + NIL)) + NIL))))))))) + +(DEFUN |c02affSolve| (|htPage|) + (PROG (|n| |logical| |scale| |error| |ifail| |labelList| + |equationPart| |page|) + (declare (special |$EmptyMode| |$bcParseOnly|)) + (RETURN + (SEQ (PROGN + (SPADLET |n| + (COND + (|$bcParseOnly| + (PARSE-INTEGER + (|htpLabelInputString| |htPage| '|n|))) + ('T + (|objValUnwrap| + (|htpLabelSpadValue| |htPage| '|n|))))) + (SPADLET |logical| (|htpButtonValue| |htPage| '|scale|)) + (SPADLET |scale| + (COND + ((BOOT-EQUAL |logical| '|true|) + (MAKESTRING "true")) + ('T (MAKESTRING "false")))) + (SPADLET |error| (|htpButtonValue| |htPage| '|ifail|)) + (SPADLET |ifail| + (COND ((BOOT-EQUAL |error| '|one|) '1) ('T '-1))) + (COND + ((BOOT-EQUAL |n| '5) + (|c02affDefaultSolve| |htPage| |scale| |ifail|)) + ('T + (SPADLET |labelList| + (PROG (G166076) + (SPADLET G166076 NIL) + (RETURN + (DO ((G166081 (PLUS |n| 1)) + (|i| 1 (QSADD1 |i|))) + ((QSGREATERP |i| G166081) G166076) + (SEQ (EXIT + (SETQ G166076 + (APPEND G166076 + (|c02affSolve,f| |i| |n|))))))))) + (SPADLET |equationPart| + (CONS '(|domainConditions| + (|isDomain| P + (|Polynomial| |$EmptyMode|)) + (|isDomain| S (|String|)) + (|isDomain| PI (|PositiveInteger|))) + |labelList|)) + (SPADLET |page| + (|htInitPage| + '|C02AFF - All Zeros of a Complex Polynomial| + (|htpPropertyList| |htPage|))) + (|htSay| (MAKESTRING + "\\menuitemstyle{} \\tab{2} Enter the coefficients of the polynomial: ")) + (|htSay| (MAKESTRING "\\blankline ")) + (|htSay| (MAKESTRING + "Real parts \\tab{30} Imaginary parts ")) + (|htSay| (MAKESTRING "\\newline ")) + (|htMakePage| |equationPart|) + (|htMakeDoneButton| (MAKESTRING "Continue") + '|c02affGen|) + (|htpSetProperty| |page| '|n| |n|) + (|htpSetProperty| |page| '|scale| |scale|) + (|htpSetProperty| |page| '|ifail| |ifail|) + (|htpSetProperty| |page| '|inputArea| + (|htpInputAreaAlist| |htPage|)) + (|htShowPage|)))))))) + +;c02affDefaultSolve (htPage, scale, ifail) == +; n := '5 +; page := htInitPage('"C02AFF - All Zeros of a Complex Polynomial",nil) +; htMakePage '( +; (domainConditions +; (isDomain F (Float))) +; (text . "\newline \menuitemstyle{} \tab{2} ") +; (text . "Enter the coefficients of the polynomial: ") +; (text . "\blankline ") +; (text . "Real parts \tab{30} Imaginary parts ") +; (text . "\newline z**5 \space{1} ") +; (bcStrings (10 "5.0" r1 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "6.0" i1 F)) +; (text . "\newline ") +; (text . "z**4 \space{1} ") +; (bcStrings (10 "30.0" r2 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "20.0" i2 F)) +; (text . "\newline ") +; (text . "z**3 \space{1} ") +; (bcStrings (10 "-0.2" r3 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "-6.0" i3 F)) +; (text . "\newline ") +; (text . "z**2 \space{1} ") +; (bcStrings (10 "50.0" r4 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "100000.0" i4 F)) +; (text . "\newline ") +; (text . "z**1 \space{1} ") +; (bcStrings (10 "-2.0" r5 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "40.0" i5 F)) +; (text . "\newline ") +; (text . "z**0 \space{1} ") +; (bcStrings (10 "10.0" r6 F)) +; (text . "\tab{30} ") +; (text . "\space{1} ") +; (bcStrings (10 "1.0" i6 F)) +; (text . "\newline ") +; (text . "\blankline")) +; htMakeDoneButton('"Continue",'c02affGen) +; htpSetProperty(page,'n,n) +; htpSetProperty(page,'scale,scale) +; htpSetProperty(page,'ifail,ifail) +; htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) +; htShowPage() + +(DEFUN |c02affDefaultSolve| (|htPage| |scale| |ifail|) + (PROG (|n| |page|) + (RETURN + (PROGN + (SPADLET |n| '5) + (SPADLET |page| + (|htInitPage| + (MAKESTRING + "C02AFF - All Zeros of a Complex Polynomial") + NIL)) + (|htMakePage| + '((|domainConditions| (|isDomain| F (|Float|))) + (|text| . "\\newline \\menuitemstyle{} \\tab{2} ") + (|text| . "Enter the coefficients of the polynomial: ") + (|text| . "\\blankline ") + (|text| . "Real parts \\tab{30} Imaginary parts ") + (|text| . "\\newline z**5 \\space{1} ") + (|bcStrings| (10 "5.0" |r1| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") (|bcStrings| (10 "6.0" |i1| F)) + (|text| . "\\newline ") (|text| . "z**4 \\space{1} ") + (|bcStrings| (10 "30.0" |r2| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") (|bcStrings| (10 "20.0" |i2| F)) + (|text| . "\\newline ") (|text| . "z**3 \\space{1} ") + (|bcStrings| (10 "-0.2" |r3| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") (|bcStrings| (10 "-6.0" |i3| F)) + (|text| . "\\newline ") (|text| . "z**2 \\space{1} ") + (|bcStrings| (10 "50.0" |r4| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") + (|bcStrings| (10 "100000.0" |i4| F)) + (|text| . "\\newline ") (|text| . "z**1 \\space{1} ") + (|bcStrings| (10 "-2.0" |r5| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") (|bcStrings| (10 "40.0" |i5| F)) + (|text| . "\\newline ") (|text| . "z**0 \\space{1} ") + (|bcStrings| (10 "10.0" |r6| F)) (|text| . "\\tab{30} ") + (|text| . "\\space{1} ") (|bcStrings| (10 "1.0" |i6| F)) + (|text| . "\\newline ") (|text| . "\\blankline"))) + (|htMakeDoneButton| (MAKESTRING "Continue") '|c02affGen|) + (|htpSetProperty| |page| '|n| |n|) + (|htpSetProperty| |page| '|scale| |scale|) + (|htpSetProperty| |page| '|ifail| |ifail|) + (|htpSetProperty| |page| '|inputArea| + (|htpInputAreaAlist| |htPage|)) + (|htShowPage|))))) + +;c02affGen htPage == +; n := htpProperty(htPage,'n) +; scale := htpProperty(htPage,'scale) +; ifail := htpProperty(htPage,'ifail) +; alist := htpInputAreaAlist htPage +; y := alist +; while y repeat +; right := STRCONC((first y).1," ") +; y := rest y +; left := STRCONC((first y).1," ") +; y := rest y +; reallist := [left,:reallist] +; imaglist := [right,:imaglist] +; realstring := bcwords2liststring reallist +; imagstring := bcwords2liststring imaglist +; linkGen STRCONC ('"c02aff([",realstring,",",imagstring,"],",STRINGIMAGE n,",",scale,",",STRINGIMAGE ifail,")") + +(DEFUN |c02affGen| (|htPage|) + (PROG (|n| |scale| |ifail| |alist| |right| |left| |y| |reallist| + |imaglist| |realstring| |imagstring|) + (RETURN + (SEQ (PROGN + (SPADLET |n| (|htpProperty| |htPage| '|n|)) + (SPADLET |scale| (|htpProperty| |htPage| '|scale|)) + (SPADLET |ifail| (|htpProperty| |htPage| '|ifail|)) + (SPADLET |alist| (|htpInputAreaAlist| |htPage|)) + (SPADLET |y| |alist|) + (DO () ((NULL |y|) NIL) + (SEQ (EXIT (PROGN + (SPADLET |right| + (STRCONC (ELT (CAR |y|) 1) '| |)) + (SPADLET |y| (CDR |y|)) + (SPADLET |left| + (STRCONC (ELT (CAR |y|) 1) '| |)) + (SPADLET |y| (CDR |y|)) + (SPADLET |reallist| + (CONS |left| |reallist|)) + (SPADLET |imaglist| + (CONS |right| |imaglist|)))))) + (SPADLET |realstring| (|bcwords2liststring| |reallist|)) + (SPADLET |imagstring| (|bcwords2liststring| |imaglist|)) + (|linkGen| + (STRCONC (MAKESTRING "c02aff([") |realstring| '|,| + |imagstring| '|],| (STRINGIMAGE |n|) '|,| + |scale| '|,| (STRINGIMAGE |ifail|) '|)|))))))) + +;c02agf() == +; htInitPage('"C02AGF - All Zeros of a Real Polynomial",nil) +; htMakePage '( +; (domainConditions +; (isDomain PI (PositiveInteger))) +; (text . "\windowlink{Manual Page}{manpageXXc02agf} for this routine ") +; (text . "\newline ") +; (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02agf| '|NagPolynomialRootsPackage|)} for this routine") +; (text . "\newline \horizontalline ") +; (text . "Finds all the roots of the real polynomial equation ") +; (text . "\htbitmap{c02aff}, using a variant of Laguerre's method. ") +; (text . "\blankline ") +; (text . "\newline \menuitemstyle{} ") +; (text . "\tab{2} Enter the degree {\em n} of the polynomial:") +; (text . "\newline\tab{2} ") +; (bcStrings (5 5 n PI)) +; (text . "\blankline") +; (text . "\newline") +; (text . "\newline \menuitemstyle{} \tab{2} Scale value:") +; (radioButtons scale +; ("" " True" true) +; ("" " False" false)) +; (text . "\blankline ") +; (text . "\newline \menuitemstyle{} \tab{2} Ifail value:") +; (radioButtons ifail +; ("" " -1, Print error messages" minusOne) +; ("" " 1, Suppress error messages" one))) +; htMakeDoneButton('"Continue", 'c02agfSolve) +; htShowPage() + +(DEFUN |c02agf| () + (PROGN + (|htInitPage| + (MAKESTRING "C02AGF - All Zeros of a Real Polynomial") NIL) + (|htMakePage| + '((|domainConditions| (|isDomain| PI (|PositiveInteger|))) + (|text| + . "\\windowlink{Manual Page}{manpageXXc02agf} for this routine ") + (|text| . "\\newline ") + (|text| + . "\\lispwindowlink{Browser operation page}{(|oPageFrom| '|c02agf| '|NagPolynomialRootsPackage|)} for this routine") + (|text| . "\\newline \\horizontalline ") + (|text| + . "Finds all the roots of the real polynomial equation ") + (|text| + . "\\htbitmap{c02aff}, using a variant of Laguerre's method. ") + (|text| . "\\blankline ") + (|text| . "\\newline \\menuitemstyle{} ") + (|text| + . "\\tab{2} Enter the degree {\\em n} of the polynomial:") + (|text| . "\\newline\\tab{2} ") (|bcStrings| (5 5 |n| PI)) + (|text| . "\\blankline") (|text| . "\\newline") + (|text| + . "\\newline \\menuitemstyle{} \\tab{2} Scale value:") + (|radioButtons| |scale| ("" " True" |true|) + ("" " False" |false|)) + (|text| . "\\blankline ") + (|text| + . "\\newline \\menuitemstyle{} \\tab{2} Ifail value:") + (|radioButtons| |ifail| + ("" " -1, Print error messages" |minusOne|) + ("" " 1, Suppress error messages" |one|)))) + (|htMakeDoneButton| (MAKESTRING "Continue") '|c02agfSolve|) + (|htShowPage|))) + +;c02agfSolve htPage == +; n := +; $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) +; objValUnwrap htpLabelSpadValue(htPage, 'n) +; logical := htpButtonValue(htPage,'scale) +; scale := +; logical = 'true => '"true" +; '"false" +; error := htpButtonValue(htPage,'ifail) +; ifail := +; error = 'one => '1 +; '-1 +; n = '5 => c02agfDefaultSolve(htPage,scale,ifail) +; labelList := +; "append"/[f(i,n) for i in 1..(n+1)] where f(i,n) == +; prefix := ('"\newline z**") +; prefix := STRCONC(prefix,STRINGIMAGE (n-i+1),'"\space{1}") +; rnam := INTERN STRCONC ('"r",STRINGIMAGE i) +; [['text,:prefix],['bcStrings,[10, 0.0, rnam, 'P]]] +; equationPart := [ +; '(domainConditions +; (isDomain P (Polynomial $EmptyMode)) +; (isDomain S (String)) +; (isDomain PI (PositiveInteger))), +; :labelList] +; page := htInitPage("C02AGF - All Zeros of a Real Polynomial", htpPropertyList htPage) +; htSay '"\menuitemstyle{} \tab{2} " +; htSay '"Enter the coefficients of the polynomial: " +; htSay '"\newline " +; htMakePage equationPart +; htMakeDoneButton('"Continue",'c02agfGen) +; htpSetProperty(page,'n,n) +; htpSetProperty(page,'scale,scale) +; htpSetProperty(page,'ifail,ifail) +; htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) +; htShowPage() + +(DEFUN |c02agfSolve,f| (|i| |n|) + (PROG (|prefix| |rnam|) + (RETURN + (SEQ (SPADLET |prefix| (MAKESTRING "\\newline z**")) + (SPADLET |prefix| + (STRCONC |prefix| + (STRINGIMAGE + (PLUS (SPADDIFFERENCE |n| |i|) 1)) + (MAKESTRING "\\space{1}"))) + (SPADLET |rnam| + (INTERN (STRCONC (MAKESTRING "r") + (STRINGIMAGE |i|)))) + (EXIT (CONS (CONS '|text| |prefix|) + (CONS (CONS '|bcStrings| + (CONS + (CONS 10 + (CONS 0.0 + (CONS |rnam| (CONS 'P NIL)))) + NIL)) + NIL))))))) + +(DEFUN |c02agfSolve| (|htPage|) + (PROG (|n| |logical| |scale| |error| |ifail| |labelList| + |equationPart| |page|) + (declare (special |$EmptyMode| |$bcParseOnly|)) + (RETURN + (SEQ (PROGN + (SPADLET |n| + (COND + (|$bcParseOnly| + (PARSE-INTEGER + (|htpLabelInputString| |htPage| '|n|))) + ('T + (|objValUnwrap| + (|htpLabelSpadValue| |htPage| '|n|))))) + (SPADLET |logical| (|htpButtonValue| |htPage| '|scale|)) + (SPADLET |scale| + (COND + ((BOOT-EQUAL |logical| '|true|) + (MAKESTRING "true")) + ('T (MAKESTRING "false")))) + (SPADLET |error| (|htpButtonValue| |htPage| '|ifail|)) + (SPADLET |ifail| + (COND ((BOOT-EQUAL |error| '|one|) '1) ('T '-1))) + (COND + ((BOOT-EQUAL |n| '5) + (|c02agfDefaultSolve| |htPage| |scale| |ifail|)) + ('T + (SPADLET |labelList| + (PROG (G166149) + (SPADLET G166149 NIL) + (RETURN + (DO ((G166154 (PLUS |n| 1)) + (|i| 1 (QSADD1 |i|))) + ((QSGREATERP |i| G166154) G166149) + (SEQ (EXIT + (SETQ G166149 + (APPEND G166149 + (|c02agfSolve,f| |i| |n|))))))))) + (SPADLET |equationPart| + (CONS '(|domainConditions| + (|isDomain| P + (|Polynomial| |$EmptyMode|)) + (|isDomain| S (|String|)) + (|isDomain| PI (|PositiveInteger|))) + |labelList|)) + (SPADLET |page| + (|htInitPage| + '|C02AGF - All Zeros of a Real Polynomial| + (|htpPropertyList| |htPage|))) + (|htSay| (MAKESTRING "\\menuitemstyle{} \\tab{2} ")) + (|htSay| (MAKESTRING + "Enter the coefficients of the polynomial: ")) + (|htSay| (MAKESTRING "\\newline ")) + (|htMakePage| |equationPart|) + (|htMakeDoneButton| (MAKESTRING "Continue") + '|c02agfGen|) + (|htpSetProperty| |page| '|n| |n|) + (|htpSetProperty| |page| '|scale| |scale|) + (|htpSetProperty| |page| '|ifail| |ifail|) + (|htpSetProperty| |page| '|inputArea| + (|htpInputAreaAlist| |htPage|)) + (|htShowPage|)))))))) + +;c02agfDefaultSolve (htPage, scale, ifail) == +; n := '5 +; page := htInitPage('"C02AGF - All Zeros of a Real Polynomial",nil) +; htMakePage '( +; (domainConditions +; (isDomain F (Float))) +; (text . "\newline \menuitemstyle{} \tab{2} ") +; (text . "Enter the coefficients of the polynomial: ") +; (text . "\newline ") +; (text . "z**5 \space{1} ") +; (bcStrings (10 "1.0" r1 F)) +; (text . "\newline ") +; (text . "z**4 \space{1} ") +; (bcStrings (10 "2.0" r2 F)) +; (text . "\newline ") +; (text . "z**3 \space{1} ") +; (bcStrings (10 "3.0" r3 F)) +; (text . "\newline ") +; (text . "z**2 \space{1} ") +; (bcStrings (10 "4.0" r4 F)) +; (text . "\newline ") +; (text . "z**1 \space{1} ") +; (bcStrings (10 "5.0" r5 F)) +; (text . "\newline ") +; (text . "z**0 \space{1} ") +; (bcStrings (10 "6.0" r6 F)) +; (text . "\newline ") +; (text . "\blankline")) +; htMakeDoneButton('"Continue",'c02agfGen) +; htpSetProperty(page,'n,n) +; htpSetProperty(page,'scale,scale) +; htpSetProperty(page,'ifail,ifail) +; htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) +; htShowPage() + +(DEFUN |c02agfDefaultSolve| (|htPage| |scale| |ifail|) + (PROG (|n| |page|) + (RETURN + (PROGN + (SPADLET |n| '5) + (SPADLET |page| + (|htInitPage| + (MAKESTRING + "C02AGF - All Zeros of a Real Polynomial") + NIL)) + (|htMakePage| + '((|domainConditions| (|isDomain| F (|Float|))) + (|text| . "\\newline \\menuitemstyle{} \\tab{2} ") + (|text| . "Enter the coefficients of the polynomial: ") + (|text| . "\\newline ") (|text| . "z**5 \\space{1} ") + (|bcStrings| (10 "1.0" |r1| F)) (|text| . "\\newline ") + (|text| . "z**4 \\space{1} ") + (|bcStrings| (10 "2.0" |r2| F)) (|text| . "\\newline ") + (|text| . "z**3 \\space{1} ") + (|bcStrings| (10 "3.0" |r3| F)) (|text| . "\\newline ") + (|text| . "z**2 \\space{1} ") + (|bcStrings| (10 "4.0" |r4| F)) (|text| . "\\newline ") + (|text| . "z**1 \\space{1} ") + (|bcStrings| (10 "5.0" |r5| F)) (|text| . "\\newline ") + (|text| . "z**0 \\space{1} ") + (|bcStrings| (10 "6.0" |r6| F)) (|text| . "\\newline ") + (|text| . "\\blankline"))) + (|htMakeDoneButton| (MAKESTRING "Continue") '|c02agfGen|) + (|htpSetProperty| |page| '|n| |n|) + (|htpSetProperty| |page| '|scale| |scale|) + (|htpSetProperty| |page| '|ifail| |ifail|) + (|htpSetProperty| |page| '|inputArea| + (|htpInputAreaAlist| |htPage|)) + (|htShowPage|))))) + +;c02agfGen htPage == +; n := htpProperty(htPage,'n) +; scale := htpProperty(htPage,'scale) +; ifail := htpProperty(htPage,'ifail) +; alist := htpInputAreaAlist htPage +; y := alist +; while y repeat +; left := STRCONC((first y).1," ") +; y := rest y +; reallist := [left,:reallist] +; realstring := bcwords2liststring reallist +; linkGen STRCONC ('"c02agf([",realstring,"],",STRINGIMAGE n,",",scale,",",STRINGIMAGE ifail,")") + +(DEFUN |c02agfGen| (|htPage|) + (PROG (|n| |scale| |ifail| |alist| |left| |y| |reallist| + |realstring|) + (RETURN + (SEQ (PROGN + (SPADLET |n| (|htpProperty| |htPage| '|n|)) + (SPADLET |scale| (|htpProperty| |htPage| '|scale|)) + (SPADLET |ifail| (|htpProperty| |htPage| '|ifail|)) + (SPADLET |alist| (|htpInputAreaAlist| |htPage|)) + (SPADLET |y| |alist|) + (DO () ((NULL |y|) NIL) + (SEQ (EXIT (PROGN + (SPADLET |left| + (STRCONC (ELT (CAR |y|) 1) '| |)) + (SPADLET |y| (CDR |y|)) + (SPADLET |reallist| + (CONS |left| |reallist|)))))) + (SPADLET |realstring| (|bcwords2liststring| |reallist|)) + (|linkGen| + (STRCONC (MAKESTRING "c02agf([") |realstring| '|],| + (STRINGIMAGE |n|) '|,| |scale| '|,| + (STRINGIMAGE |ifail|) '|)|))))))) + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document}