aboutsummaryrefslogtreecommitdiff
path: root/src/interp/nag-f04.boot.pamphlet
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/nag-f04.boot.pamphlet')
-rw-r--r--src/interp/nag-f04.boot.pamphlet2331
1 files changed, 2331 insertions, 0 deletions
diff --git a/src/interp/nag-f04.boot.pamphlet b/src/interp/nag-f04.boot.pamphlet
new file mode 100644
index 00000000..da36ae78
--- /dev/null
+++ b/src/interp/nag-f04.boot.pamphlet
@@ -0,0 +1,2331 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/interp nag-f04.boot}
+\author{The Axiom Team}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\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>>
+
+f04adf() ==
+ htInitPage("F04ADF - Solution of complex simultaneous linear equations, with multiple right-hand sides (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain I (Integer)))
+ (text . "\windowlink{Manual Page}{manpageXXf04adf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04adf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\newline ")
+ (text . "Calculates the approximate solution of a set of complex linear ")
+ (text . "equations {\it AX = B} using an {\it LU} factorization with ")
+ (text . "partial pivoting, where {\it A} is an n * n matrix, {\it X} is ")
+ (text . "an {\it n} by {\it m} matrix of unknowns and {\it B} is an ")
+ (text . "{\it n} by {\it m} matrix of right-hand sides.")
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} ")
+ (text . "{\it n} order of matrix A:")
+ (text . "\tab{28} \menuitemstyle{}\tab{30} ")
+ (text . "{\it m} number of right-hand sides \htbitmap{great=} 0 :")
+ (text . "\newline\tab{2} ")
+ (bcStrings (10 3 n I))
+ (text . "\tab{30} ")
+ (bcStrings (10 1 m I))
+-- (text . "\blankline ")
+-- (text . "\newline \menuitemstyle{}\tab{2} ")
+-- (text . "{\it IA} first dimension of A:")
+-- (text . "\tab{32} \menuitemstyle{}\tab{34} ")
+-- (text . "{\it IB} first dimension of B:")
+-- (text . "\newline\tab{2} ")
+-- (bcStrings (10 3 ia I))
+-- (text . "\tab{34} ")
+-- (bcStrings (10 3 ib I))
+-- (text . "\blankline ")
+-- (text . "\newline \menuitemstyle{}\tab{2} ")
+-- (text . "{\it IC} first dimension of C:")
+-- (text . "\newline\tab{2} ")
+-- (bcStrings (10 3 ic I))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{} \tab{2} ")
+ (text . "Ifail value:")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04adfSolve)
+ htShowPage()
+
+f04adfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ m :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm)
+ objValUnwrap htpLabelSpadValue(htPage, 'm)
+ ia := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ia)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ia)
+ ib := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ib)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ib)
+ ic := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ic)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ic)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ (n = '3 and m = '1) => f04adfDefaultSolve(htPage,ifail)
+ matList :=
+ "append"/[f(i,n) for i in 1..ia] where f(i,n) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..n] where g(i,j) ==
+ ianam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[12, "0.0 + 0.0*%i", ianam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ labelList := [['text,:prefix],:labelList]
+ bmatList :=
+ "append"/[fb(i,m) for i in 1..ib] where fb(i,m) ==
+ blabelList :=
+ "append"/[gb(i,j) for j in 1..m] where gb(i,j) ==
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[12, "0.0 + 0.0*%i", bnam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ blabelList := [['text,:prefix],:blabelList]
+ start := ('"\blankline \menuitemstyle{} \tab{2} Enter values of {\it b}:")
+ bmatList := [['text,:start],:bmatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :matList,:bmatList]
+ page := htInitPage("F04ADF - Solution of complex simultaneous linear equations, with multiple right-hand sides (Black box)",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04adfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'m,m)
+-- htpSetProperty(page,'ia,ia)
+-- htpSetProperty(page,'ib,ib)
+-- htpSetProperty(page,'ic,ic)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+
+f04adfDefaultSolve (htPage, ifail) ==
+ n := '3
+ m := '1
+ ia := '3
+ ib := '3
+ ic := '3
+ page := htInitPage("F04ADF - Solution of complex simultaneous linear equations, with multiple right-hand sides (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain I (Integer)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "1" a11 F))
+ (bcStrings (12 "1 + 2*%i" a12 F))
+ (bcStrings (12 "2 + 10*%i" a13 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "1 + %i" a21 F))
+ (bcStrings (12 "3*%i" a22 F))
+ (bcStrings (12 "-5 + 14*%i" a23 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "1 + %i" a31 F))
+ (bcStrings (12 "5*%i" a32 F))
+ (bcStrings (12 "-8 + 20*%i" a33 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it b}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "1" b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "0" b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (12 "0" b3 F)))
+ htMakeDoneButton('"Continue",'f04adfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'m,m)
+-- htpSetProperty(page,'ia,ia)
+-- htpSetProperty(page,'ib,ib)
+-- htpSetProperty(page,'ic,ic)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04adfGen htPage ==
+ n := htpProperty(htPage,'n)
+ m := htpProperty(htPage,'m)
+-- ia := htpProperty(htPage,'ia)
+-- ib := htpProperty(htPage,'ib)
+-- ic := htpProperty(htPage,'ic)
+ ia := n
+ ib := n
+ ic := n
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ -- will probably need to change this as its a vector not an array
+ for i in 1..m repeat
+ for j in 1..ib repeat
+ right := STRCONC((first y).1," ")
+ y := rest y
+ bList := [right,:bList]
+ bstring := bcwords2liststring bList
+ boutList := [bstring,:boutList]
+ bList := []
+ boutstring := bcwords2liststring boutList
+ y := REVERSE y
+ k := -1
+ matform := [[y.(k := k + 1).1 for j in 0..(n-1)] for i in 0..(ia-1)]
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ prefix := STRCONC('"f04adf(",STRINGIMAGE ia,",",boutstring,",")
+ prefix := STRCONC(prefix,STRINGIMAGE ib,", ",STRINGIMAGE n,", ")
+ prefix := STRCONC(prefix,STRINGIMAGE m,", ",STRINGIMAGE ic)
+ prefix := STRCONC(prefix,", ",matstring,", ",STRINGIMAGE ifail,")")
+ bcGen prefix
+
+f04arf() ==
+ htInitPage("F04ARF - Solution of real simultaneous linear equations, one right-hand side (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain I (Integer)))
+ (text . "\windowlink{Manual Page}{manpageXXf04arf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04arf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\blankline ")
+ (text . "Calculates the approximate solution of a set of real linear ")
+ (text . "equations {\it Ax = b} using an {\it LU} factorization with ")
+ (text . "pivoting, where {\it A} is an n * n matrix, {\it x} is an n ")
+ (text . "element vector of unknowns and {\it b} is an n element ")
+ (text . "right-hand side vector.")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} ")
+-- (text . "{\it IA} first dimension of A:")
+-- (text . "\tab{32} \menuitemstyle{}\tab{34} ")
+ (text . "{\it n} order of matrix A:")
+ (text . "\newline\tab{2} ")
+-- (bcStrings (10 8 ia I))
+-- (text . "\tab{34} ")
+ (bcStrings (10 3 n I))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{} \tab{2} ")
+ (text . "Ifail value:")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04arfSolve)
+ htShowPage()
+
+f04arfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ ia := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ia)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ia)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ n = '3 => f04arfDefaultSolve(htPage,ifail)
+ matList :=
+ "append"/[f(i,n) for i in 1..ia] where f(i,n) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..n] where g(i,j) ==
+ ianam := INTERN STRCONC ('"ia",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[6, "0.0", ianam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ labelList := [['text,:prefix],:labelList]
+ bmatList :=
+ "append"/[h(k) for k in 1..n] where h(k) ==
+ prefix := ('"\newline \tab{2} ")
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE k)
+ [['text,:prefix],['bcStrings,[6, "0.0", bnam, 'F]]]
+ start := ('"\blankline \menuitemstyle{} \tab{2} Enter values of {\it b}:")
+ bmatList := [['text,:start],:bmatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :matList,:bmatList]
+ page := htInitPage("F04ARF - Solution of real simultaneous linear equations, one right-hand side (Black box)",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04arfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+
+f04arfDefaultSolve (htPage, ifail) ==
+ n := '3
+ ia := '3
+ page := htInitPage("F04ARF - Solution of real simultaneous linear equations, one right-hand side (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain I (Integer)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 33 ia11 F))
+ (bcStrings (6 16 ia12 F))
+ (bcStrings (6 72 ia13 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-24" ia21 F))
+ (bcStrings (6 "-10" ia22 F))
+ (bcStrings (6 "-57" ia23 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-8" ia31 F))
+ (bcStrings (6 "-4" ia32 F))
+ (bcStrings (6 "-17" ia33 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia41 F))
+-- (bcStrings (6 0 ia42 F))
+-- (bcStrings (6 0 ia43 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia51 F))
+-- (bcStrings (6 0 ia52 F))
+-- (bcStrings (6 0 ia53 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia61 F))
+-- (bcStrings (6 0 ia62 F))
+-- (bcStrings (6 0 ia63 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia71 F))
+-- (bcStrings (6 0 ia72 F))
+-- (bcStrings (6 0 ia73 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia81 F))
+-- (bcStrings (6 0 ia82 F))
+-- (bcStrings (6 0 ia83 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it b}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-359" b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "281" b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "85" b3 F)))
+ htMakeDoneButton('"Continue",'f04arfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04arfGen htPage ==
+ n := htpProperty(htPage,'n)
+-- ia := htpProperty(htPage,'ia)
+ ia := n
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..n repeat
+ right := STRCONC((first y).1," ")
+ y := rest y
+ bList := [right,:bList]
+ bstring := bcwords2liststring bList
+ y := REVERSE y
+ k := -1
+ matform := [[y.(k := k + 1).1 for j in 0..(n-1)] for i in 0..(ia-1)]
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ prefix := STRCONC('"f04arf(",STRINGIMAGE ia,", [",bstring,"],",STRINGIMAGE n)
+ prefix := STRCONC(prefix,", ",matstring,", ",STRINGIMAGE ifail,")")
+ bcGen prefix
+
+f04asf() ==
+ htInitPage("F04ASF - Solution of real symmetric positive-definite simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain I (Integer)))
+ (text . "\windowlink{Manual Page}{manpageXXf04asf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04asf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\blankline ")
+ (text . "Calculates the accurate solution of a set of real symmetric ")
+ (text . "positive-definite linear equations {\it Ax = b} using an a ")
+ (text . "Cholesky factorization and iterative refinement, ")
+ (text . "where {\it A} is an n * n matrix, {\it x} is an n ")
+ (text . "element vector of unknowns and {\it b} is an n element ")
+ (text . "right-hand side vector.")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} ")
+-- (text . "{\it IA} first dimension of A:")
+-- (text . "\tab{32} \menuitemstyle{}\tab{34} ")
+ (text . "{\it n} order of matrix A:")
+ (text . "\newline\tab{2} ")
+-- (bcStrings (10 8 ia I))
+-- (text . "\tab{34} ")
+ (bcStrings (10 4 n I))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{} \tab{2} ")
+ (text . "Ifail value:")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04asfSolve)
+ htShowPage()
+
+f04asfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ ia := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ia)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ia)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+-- (n = '4 and ia = '8) => f04asfDefaultSolve(htPage,ifail)
+ n = '4 => f04asfDefaultSolve(htPage,ifail)
+ matList :=
+ "append"/[f(i,n) for i in 1..ia] where f(i,n) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..n] where g(i,j) ==
+ ianam := INTERN STRCONC ('"ia",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[6, "0.0", ianam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ labelList := [['text,:prefix],:labelList]
+ bmatList :=
+ "append"/[h(k) for k in 1..n] where h(k) ==
+ prefix := ('"\newline \tab{2} ")
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE k)
+ [['text,:prefix],['bcStrings,[6, "0.0", bnam, 'F]]]
+ start := ('"\blankline \menuitemstyle{} \tab{2} Enter values of {\it b}:")
+ bmatList := [['text,:start],:bmatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :matList,:bmatList]
+ page := htInitPage("F04ASF - Solution of real symmetric positive-definite simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04asfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+
+f04asfDefaultSolve (htPage, ifail) ==
+ n := '4
+ ia := '4
+ page := htInitPage("F04ASF - Solution of real symmetric positive-definite simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain I (Integer)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 5 ia11 F))
+ (bcStrings (6 7 ia12 F))
+ (bcStrings (6 6 ia13 F))
+ (bcStrings (6 5 ia14 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 7 ia21 F))
+ (bcStrings (6 10 ia22 F))
+ (bcStrings (6 8 ia23 F))
+ (bcStrings (6 7 ia24 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 6 ia31 F))
+ (bcStrings (6 8 ia32 F))
+ (bcStrings (6 10 ia33 F))
+ (bcStrings (6 9 ia34 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 5 ia41 F))
+ (bcStrings (6 7 ia42 F))
+ (bcStrings (6 9 ia43 F))
+ (bcStrings (6 10 ia44 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia51 F))
+-- (bcStrings (6 0 ia52 F))
+-- (bcStrings (6 0 ia53 F))
+-- (bcStrings (6 0 ia54 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia61 F))
+-- (bcStrings (6 0 ia62 F))
+-- (bcStrings (6 0 ia63 F))
+-- (bcStrings (6 0 ia64 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia71 F))
+-- (bcStrings (6 0 ia72 F))
+-- (bcStrings (6 0 ia73 F))
+-- (bcStrings (6 0 ia74 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia81 F))
+-- (bcStrings (6 0 ia82 F))
+-- (bcStrings (6 0 ia83 F))
+-- (bcStrings (6 0 ia84 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it b}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 23 b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 32 b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 33 b3 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 31 b4 F)))
+ htMakeDoneButton('"Continue",'f04asfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04asfGen htPage ==
+ n := htpProperty(htPage,'n)
+-- ia := htpProperty(htPage,'ia)
+ ia := n
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..n repeat
+ right := STRCONC((first y).1," ")
+ y := rest y
+ bList := [right,:bList]
+ bstring := bcwords2liststring bList
+ y := REVERSE y
+ k := -1
+ matform := [[y.(k := k + 1).1 for j in 0..(n-1)] for i in 0..(ia-1)]
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ prefix := STRCONC('"f04asf(",STRINGIMAGE ia,", [",bstring,"],",STRINGIMAGE n)
+ prefix := STRCONC(prefix,", ",matstring,", ",STRINGIMAGE ifail,")")
+ bcGen prefix
+
+f04atf() ==
+ htInitPage("F04ATF - Solution of real simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain I (Integer)))
+ (text . "\windowlink{Manual Page}{manpageXXf04atf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04atf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\blankline ")
+ (text . "Calculates the approximate solution of a set of real linear ")
+ (text . "equations {\it Ax = b} using an {\it LU} factorization with ")
+ (text . "pivoting and iterative refinement, ")
+ (text . "where {\it A} is an n * n matrix, {\it x} is an n ")
+ (text . "element vector of unknowns and {\it b} is an n element ")
+ (text . "right-hand side vector.")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} ")
+-- (text . "{\it IA} first dimension of A:")
+-- (text . "\tab{32} \menuitemstyle{}\tab{34} ")
+ (text . "{\it n} order of matrix A:")
+ (text . "\newline\tab{2} ")
+-- (bcStrings (10 8 ia I))
+-- (text . "\tab{34} ")
+ (bcStrings (10 3 n I))
+-- (text . "\blankline ")
+-- (text . "\newline \menuitemstyle{} \tab{2} ")
+-- (text . "{\it IAA} first dimension of AA:")
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (10 8 iaa I))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{} \tab{2} ")
+ (text . "Ifail value:")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04atfSolve)
+ htShowPage()
+
+f04atfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ ia := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ia)
+-- objValUnwrap htpLabelSpadValue(htPage, 'ia)
+ iaa := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'iaa)
+-- objValUnwrap htpLabelSpadValue(htPage, 'iaa)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+-- (n = '3 and ia = '8) => f04atfDefaultSolve(htPage,iaa,ifail)
+ n = '3 => f04atfDefaultSolve(htPage,iaa,ifail)
+ matList :=
+ "append"/[f(i,n) for i in 1..ia] where f(i,n) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..n] where g(i,j) ==
+ ianam := INTERN STRCONC ('"ia",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[6, "0.0", ianam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ labelList := [['text,:prefix],:labelList]
+ bmatList :=
+ "append"/[h(k) for k in 1..n] where h(k) ==
+ prefix := ('"\newline \tab{2} ")
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE k)
+ [['text,:prefix],['bcStrings,[6, "0.0", bnam, 'F]]]
+ start := ('"\blankline \menuitemstyle{} \tab{2} Enter values of {\it b}:")
+ bmatList := [['text,:start],:bmatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :matList,:bmatList]
+ page := htInitPage("F04ATF - Solution of real simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04atfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+-- htpSetProperty(page,'iaa,iaa)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+
+f04atfDefaultSolve (htPage, iaa, ifail) ==
+ n := '3
+ ia := '3
+ page := htInitPage("F04ATF - Solution of real simultaneous linear equations, one right-hand side using iterative refinement (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain I (Integer)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 33 ia11 F))
+ (bcStrings (6 16 ia12 F))
+ (bcStrings (6 72 ia13 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-24" ia21 F))
+ (bcStrings (6 "-10" ia22 F))
+ (bcStrings (6 "-57" ia23 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-8" ia31 F))
+ (bcStrings (6 "-4" ia32 F))
+ (bcStrings (6 "-17" ia33 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia41 F))
+-- (bcStrings (6 0 ia42 F))
+-- (bcStrings (6 0 ia43 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia51 F))
+-- (bcStrings (6 0 ia52 F))
+-- (bcStrings (6 0 ia53 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia61 F))
+-- (bcStrings (6 0 ia62 F))
+-- (bcStrings (6 0 ia63 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia71 F))
+-- (bcStrings (6 0 ia72 F))
+-- (bcStrings (6 0 ia73 F))
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 0 ia81 F))
+-- (bcStrings (6 0 ia82 F))
+-- (bcStrings (6 0 ia83 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it b}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-359" b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "281" b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "85" b3 F)))
+ htMakeDoneButton('"Continue",'f04atfGen)
+ htpSetProperty(page,'n,n)
+-- htpSetProperty(page,'ia,ia)
+-- htpSetProperty(page,'iaa,iaa)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04atfGen htPage ==
+ n := htpProperty(htPage,'n)
+-- ia := htpProperty(htPage,'ia)
+-- iaa := htpProperty(htPage,'iaa)
+ ia := n
+ iaa := n
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..n repeat
+ right := STRCONC((first y).1," ")
+ y := rest y
+ bList := [right,:bList]
+ bstring := bcwords2liststring bList
+ y := REVERSE y
+ k := -1
+ matform := [[y.(k := k + 1).1 for j in 0..(n-1)] for i in 0..(ia-1)]
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ prefix := STRCONC('"f04atf(",matstring,", ",STRINGIMAGE ia,", [",bstring)
+ prefix := STRCONC(prefix,"],",STRINGIMAGE n,", ",STRINGIMAGE iaa,", ")
+ prefix := STRCONC(prefix,STRINGIMAGE ifail,")")
+ bcGen prefix
+
+
+f04faf() ==
+ htInitPage('"F04FAF - Solution of real symmetric positive-definite tridiagonal simultaneous linear equations, one right-hand side (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain PI (PositiveInteger)))
+ (text . "\windowlink{Manual Page}{manpageXXf04adf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04faf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\blankline ")
+ (text . "Calculates the approximate solution of a set of real symmetric ")
+ (text . "positive-definite tridiagonal linear equations {\it Tx = b} ")
+ (text . "using a modified symmetric Gaussian Elimination algorithm, ")
+ (text . "where {\it T} is an n * n matrix, {\it x} is an n ")
+ (text . "element vector of unknowns and {\it b} is an n element ")
+ (text . "right-hand side vector. {\it T} is factorized as ")
+ (text . "\inputbitmap{\htbmdir{}/mkm.bitmap}, where {\it K} is a diagonal matrix ")
+ (text . "and {\it M} is a matrix of multipliers. ")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{} \tab{2} ")
+ (text . "\newline \tab{2} ")
+ (text . "{\it JOB} to be performed by f04faf: ")
+ (radioButtons job
+ ("" " = 0. {\it T} is factorized and equations {\it Tx = b} are solved for x." jobZero)
+ ("" " = 1. {\it T} assumed to be already factorized by previous call to f04faf, the equations {\it Tx = b} are solved for x." jobOne))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "\newline Order of the matrix T {\it n}:")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 5 n PI))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{} \tab{2} ")
+ (text . "\newline \tab{2} ")
+ (text . "Ifail value: ")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04fafSolve)
+ htShowPage()
+
+f04fafSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ number := htpButtonValue(htPage,'job)
+ job :=
+ number = 'jobOne => '1
+ '0
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ n = '5 => f04fafDefaultSolve(htPage,job,ifail)
+ dList :=
+ "append"/[f(i) for i in 1..n] where f(i) ==
+ prefix := ('"\newline \tab{2} ")
+ dnam := INTERN STRCONC ('"d",STRINGIMAGE i)
+ [['text,:prefix],['bcStrings,[10, 0.0, dnam, 'F]]]
+ prefix := ('"\menuitemstyle{}\tab{2} {\it D} Diagonal elements of T: ")
+ prefix := STRCONC(prefix,"\newline \tab{2} ")
+ dList := [['text,:prefix],:dList]
+ eList :=
+ "append"/[g(j) for j in 1..(n-1)] where g(j) ==
+ prefix := ('"\newline \tab{2} ")
+ enam := INTERN STRCONC ('"e",STRINGIMAGE j)
+ [['text,:prefix],['bcStrings,[10, 0.0, enam, 'F]]]
+ prefix := ('"\blankline \newline \menuitemstyle{}\tab{2} {\it E} E(2) ")
+ prefix := STRCONC(prefix,"to E(N)\newline \tab{2} Job = 0 => super-diagonal")
+ prefix := STRCONC(prefix," elements of {\it T}. \newline \tab{2} Job = 1 =>")
+ prefix := STRCONC(prefix," off-diagonal elements of {\it M} from previous ")
+ prefix := STRCONC(prefix,"call to F04FAF. ")
+ eList := [['text,:prefix],:eList]
+ bList :=
+ "append"/[h(k) for k in 1..n] where h(k) ==
+ prefix := ('"\newline \tab{2} ")
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE k)
+ [['text,:prefix],['bcStrings,[10, 0.0, bnam, 'F]]]
+ prefix := ('"\blankline \newline \menuitemstyle{}\tab{2} {\it B} Right-hand")
+ prefix := STRCONC(prefix," side vector b: ")
+ bList := [['text,:prefix],:bList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain S (String))
+ (isDomain F (Float))
+ (isDomain PI (PositiveInteger))),
+ :dList,:eList,:bList]
+ page := htInitPage("F04FAF - Solution of real symmetric positive-definite tridiagonal simultaneous linear equations, one right-hand side (Black box)",nil)
+ htMakePage equationPart
+ htMakeDoneButton('"Continue",'f04fafGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'job,job)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+f04fafDefaultSolve (htPage,job,ifail) ==
+ n := '5
+ page := htInitPage('"F04FAF - Solution of real symmetric positive-definite tridiagonal simultaneous linear equations, one right-hand side (Black box)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} {\it D} Diagonal elements of T:")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 4 d1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 10 d2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 29 d3 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 25 d4 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 5 d5 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} {\it E}\space{1} E(2) to E(N) ")
+ (text . "\newline \tab{2} ")
+ (text . "Job = 0 => super-diagonal elements of {\it T}. \newline \tab{2}")
+ (text . "Job = 1 => off-diagonal elements of {\it M} from ")
+ (text . "previous call to F04FAF \newline \tab{2} ")
+ (bcStrings (10 "-2" e2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 "-6" e3 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 15 e4 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 8 e5 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} {\it B} Right-hand side vector b:")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 6 b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 9 b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 2 b3 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 14 b4 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 7 b5 F)))
+ htMakeDoneButton('"Continue",'f04fafGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'job,job)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04fafGen htPage ==
+ n := htpProperty(htPage,'n)
+ job := htpProperty(htPage,'job)
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..n repeat
+ b := STRCONC((first y).1," ")
+ bList := [b,:bList]
+ y := rest y
+ bstring := bcwords2liststring bList
+ for i in 1..(n-1) repeat
+ e := STRCONC((first y).1," ")
+ eList := [e,:eList]
+ y := rest y
+ eList := ['"0",:eList]
+ estring := bcwords2liststring eList
+ for i in 1..n repeat
+ d := STRCONC((first y).1," ")
+ dList := [d,:dList]
+ y := rest y
+ dstring := bcwords2liststring dList
+ prefix := STRCONC('"f04faf(",STRINGIMAGE job,", ",STRINGIMAGE n,",[")
+ prefix := STRCONC(prefix,dstring,"], [",estring,"], [",bstring,"], ")
+ prefix := STRCONC(prefix,STRINGIMAGE ifail,")")
+ bcGen prefix
+
+
+f04jgf() ==
+ htInitPage('"F04JGF - Least-squares (if rank = n) or minimal least-squares (if rank < n) solution of m real equations in n unknowns, rank \inputbitmap{\htbmdir{}/less=.bitmap} it n, m \inputbitmap{\htbmdir{}/great=.bitmap} n",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain PI (PositiveInteger)))
+ (text . "\windowlink{Manual Page}{manpageXXf04jgf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04jgf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\blankline ")
+ (text . "Finds the solution of a linear least squares problem {\it Ax=b},")
+ (text . " where A is a real m by n matrix, (m \inputbitmap{\htbmdir{}/great=.bitmap}")
+ (text . " n), x is an n element vector of unknowns and b is an m element ")
+ (text . "right-hand side vector. The routine uses a QU factorization if ")
+ (text . "rank A = n and the SVD if A < n. ")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{} \tab{2} ")
+ (text . "\newline Rows of matrix A, {\it m}: ")
+ (text . "\tab{32} \menuitemstyle{} \tab{34} ")
+ (text . "Columns of matrix A, {\it n}: \newline \tab{2} ")
+ (bcStrings (6 6 m PI))
+ (text . "\tab{34} ")
+ (bcStrings (6 4 n PI))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{} \tab{2} ")
+-- (text . "\newline First dimension of A, {\it nra}: ")
+-- (text . "\tab{32} \menuitemstyle{} \tab{34} ")
+ (text . "Tolerance, {\it tol}: ")
+ (text . "\newline \tab{2} ")
+-- (bcStrings (6 8 nra PI))
+-- (text . "\tab{34} ")
+ (bcStrings (8 "5.0e-4" tol F))
+-- (text . "\blankline ")
+-- (text . "\newline ")
+-- (text . "\menuitemstyle{}\tab{2}")
+-- (text . "\newline Dimension of workspace array {\it lwork}: ")
+-- (text . "\newline \tab{2} ")
+-- (bcStrings (6 32 lwork PI))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{} \tab{2} ")
+ (text . "\newline \tab{2} ")
+ (text . "Ifail value: ")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04jgfSolve)
+ htShowPage()
+
+f04jgfSolve htPage ==
+ m :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm)
+ objValUnwrap htpLabelSpadValue(htPage, 'm)
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ nra := m
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nra)
+-- objValUnwrap htpLabelSpadValue(htPage, 'nra)
+ lwork := 4*n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lwork)
+-- objValUnwrap htpLabelSpadValue(htPage, 'lwork)
+ tol := htpLabelInputString(htPage,'tol)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ (m = '6 and n = '4) => f04jgfDefaultSolve(htPage,nra,lwork,tol,ifail)
+ matList :=
+ "append"/[f(i,n) for i in 1..m] where f(i,n) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..n] where g(i,j) ==
+ anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[6, "0.0", anam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ labelList := [['text,:prefix],:labelList]
+ bmatList :=
+ "append"/[h(k) for k in 1..m] where h(k) ==
+ prefix := ('"\newline \tab{2} ")
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE k)
+ [['text,:prefix],['bcStrings,[6, "0.0", bnam, 'F]]]
+ start := ('"\blankline \menuitemstyle{} \tab{2} Enter values of {\it b}:")
+ bmatList := [['text,:start],:bmatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain S (String))
+ (isDomain F (Float))
+ (isDomain PI (PositiveInteger))),
+ :matList,:bmatList]
+ page := htInitPage("F04JGF - Least-squares (if rank = {\it n}) or minimal least-squares (if rank < {\it n}) solution of {\it m} real equations in {\it n} unknowns, rank \inputbitmap{\htbmdir{}/less=.bitmap} {\it n}, {\it m} \inputbitmap{\htbmdir{}/great=.bitmap} {\it n}",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04jgfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'m,m)
+-- htpSetProperty(page,'nra,nra)
+-- htpSetProperty(page,'lwork,lwork)
+ htpSetProperty(page,'tol,tol)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+f04jgfDefaultSolve (htPage,nra,lwork,tol,ifail) ==
+ n := '4
+ m := '6
+ page := htInitPage('"F04JGF - Least-squares (if rank = n) or minimal least-squares (if rank < n) solution of m real equations in n unknowns, rank \inputbitmap{\htbmdir{}/less=.bitmap} n, m \inputbitmap{\htbmdir{}/great=.bitmap} n",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float))
+ (isDomain I (Integer)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.05" a11 F))
+ (bcStrings (6 "0.05" a12 F))
+ (bcStrings (6 "0.25" a13 F))
+ (bcStrings (6 "-0.25" a14 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.25" a21 F))
+ (bcStrings (6 "0.25" a22 F))
+ (bcStrings (6 "0.05" a23 F))
+ (bcStrings (6 "-0.05" a24 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.35" a31 F))
+ (bcStrings (6 "0.35" a32 F))
+ (bcStrings (6 "1.75" a33 F))
+ (bcStrings (6 "-1.75" a34 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "1.75" a41 F))
+ (bcStrings (6 "1.75" a42 F))
+ (bcStrings (6 "0.35" a43 F))
+ (bcStrings (6 "-0.35" a44 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.30" a51 F))
+ (bcStrings (6 "-0.30" a52 F))
+ (bcStrings (6 "0.30" a53 F))
+ (bcStrings (6 "0.30" a54 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.40" a61 F))
+ (bcStrings (6 "-0.40" a62 F))
+ (bcStrings (6 "0.40" a63 F))
+ (bcStrings (6 "0.40" a64 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Enter values of {\it b}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 1 b1 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 2 b2 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 3 b3 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 4 b4 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 5 b5 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 6 b6 F)))
+ htMakeDoneButton('"Continue",'f04jgfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'m,m)
+-- htpSetProperty(page,'nra,nra)
+-- htpSetProperty(page,'lwork,lwork)
+ htpSetProperty(page,'tol,tol)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04jgfGen htPage ==
+ n := htpProperty(htPage,'n)
+ m := htpProperty(htPage,'m)
+-- nra := htpProperty(htPage,'nra)
+-- lwork := htpProperty(htPage,'lwork)
+ nra := m
+ lwork := 4*n
+ tol := htpProperty(htPage,'tol)
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..m repeat
+ b := STRCONC((first y).1," ")
+ bList := [b,:bList]
+ y := rest y
+ bstring := bcwords2liststring bList
+ y := REVERSE y
+ for i in 1..m repeat
+ for j in 1..n repeat
+ elm := STRCONC((first y).1," ")
+ rowList := [:rowList,elm]
+ y := rest y
+ matform := [:matform,rowList]
+ rowList := []
+ for i in 1..n repeat
+ null := STRCONC('"0.0"," ")
+ nullList := [:nullList,null]
+ for i in m..(nra-1) repeat
+ matform := [:matform,nullList]
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ prefix := STRCONC('"f04jgf(",STRINGIMAGE m,", ",STRINGIMAGE n,", ")
+ prefix := STRCONC(prefix,STRINGIMAGE nra,", ",tol,", ",STRINGIMAGE lwork)
+ prefix := STRCONC(prefix,", ",matstring,", [",bstring,"], ")
+ prefix := STRCONC(prefix,STRINGIMAGE ifail,")")
+ bcGen prefix
+
+f04mcf() ==
+ htInitPage("F04MCF - Approximate solution of real symmetric positive-definite variable-bandwidth simultaneous linear equations (coefficient matrix already factorized)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float)))
+ (text . "\windowlink{Manual Page}{manpageXXf04mcf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04mcf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "Computes the approximate solution of a system of real linear ")
+ (text . "equations AX = B, where the n by n symmetric positive-definite ")
+ (text . "variable-bandwidth matrix A has previously been factorized as ")
+ (text . "\htbitmap{ldlt} by F01MCF, X is an n by r matrix of unknowns ")
+ (text . "and B is an n by r matrix of right-hand sides. Related systems ")
+ (text . "may also be solved. ")
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the order of the matrix A, {\it n} ")
+ (text ."\htbitmap{great=} 1:")
+ (text . "\newline\tab{2} ")
+ (bcStrings (9 6 n PI))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "\newline Enter the dimension of AL, {\it lal}: ")
+ (text . "\newline\tab{2} ")
+ (bcStrings (9 14 lal PI))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "\newline Enter the number of right-hand sides, {\it ir}: ")
+ (text . "\newline\tab{2} ")
+ (bcStrings (9 2 ir PI))
+-- (text . "\blankline")
+-- (text . "\newline ")
+-- (text . "\menuitemstyle{}\tab{2}")
+-- (text . "\newline Enter the first dimension of B, {\it nrb}: ")
+-- (text . "\newline\tab{2} ")
+-- (bcStrings (9 6 nrb PI))
+-- (text . "\blankline")
+-- (text . "\newline ")
+-- (text . "\menuitemstyle{}\tab{2}")
+-- (text . "\newline Enter the first dimension of X, {\it nrx}: ")
+-- (text . "\newline\tab{2} ")
+-- (bcStrings (9 6 nrx PI))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} ")
+ (text . "Type of system to be solved, {\it iselct}:")
+ (radioButtons iselct
+ ("" " {\em \htbitmap{ldlt}X = B} is solved" selone)
+ ("" " {\em LDX = B} is solved" seltwo)
+ ("" " {\em D\htbitmap{lt}X = B} is solved" selthree)
+ ("" " {\em L\htbitmap{lt}X = B} is solved" selfour)
+ ("" " {\em LX = B} is solved" selfive)
+ ("" " {\em \htbitmap{lt}X = B} is solved" selsix))
+ (text . "\blankline ")
+ (text . "\newline \menuitemstyle{}\tab{2} Ifail value:")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04mcfSolve)
+ htShowPage()
+
+f04mcfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ lal :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lal)
+ objValUnwrap htpLabelSpadValue(htPage, 'lal)
+ ir :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ir)
+ objValUnwrap htpLabelSpadValue(htPage, 'ir)
+ nrb := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nrb)
+-- objValUnwrap htpLabelSpadValue(htPage, 'nrb)
+ nrx := n
+-- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nrx)
+-- objValUnwrap htpLabelSpadValue(htPage, 'nrx)
+ select := htpButtonValue(htPage,'iselct)
+ iselct :=
+ select = 'selone => '1
+ select = 'seltwo => '2
+ select = 'selthree => '3
+ select = 'selfour => '4
+ select = 'selfive => '5
+ '6
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ (n = '6 and lal = '14 and ir = '2) => f04mcfDefaultSolve(htPage,iselct,ifail)
+ labelList :=
+ "append"/[fal(i) for i in 1..lal] where fal(i) ==
+ xnam := INTERN STRCONC ('"x",STRINGIMAGE i)
+ [['bcStrings,[6, "0.0", xnam, 'F]]]
+ dList :=
+ "append"/[fd(i) for i in 1..n] where fd(i) ==
+ dnam := INTERN STRCONC ('"d",STRINGIMAGE i)
+ [['bcStrings,[6, "0.0", dnam, 'F]]]
+ prefix := ('"\blankline \menuitemstyle{}\tab{2} Diagonal elements of diagon")
+ prefix := STRCONC(prefix,"al matrix D as returned by F01MCF: \newline")
+ dList := [['text,:prefix],:dList]
+ nrowList :=
+ "append"/[gj(j) for j in 1..n] where gj(j) ==
+ nam := INTERN STRCONC ('"n",STRINGIMAGE j)
+ [['bcStrings,[6, 0, nam, 'PI]]]
+ prefix := ('"\blankline \menuitemstyle{}\tab{2} {\it NROW(n)} the width ")
+ prefix := STRCONC(prefix,"of the ith row of A: \newline ")
+ nrowList := [['text,:prefix],:nrowList]
+ bList :=
+ "append"/[f(i,ir) for i in 1..nrb] where f(i,ir) ==
+ labelList :=
+ "append"/[g(i,j) for j in 1..ir] where g(i,j) ==
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE i, STRINGIMAGE j)
+ [['bcStrings,[6, "0.0", bnam, 'F]]]
+ prefix := ('"\newline ")
+ labelList := [['text,:prefix],:labelList]
+ prefix := ('"\blankline \menuitemstyle{}\tab{2} The n by r right-hand side ")
+ prefix := STRCONC(prefix,"matrix B: \newline ")
+ bList := [['text,:prefix],:bList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain S (String))
+ (isDomain F (Float))
+ (isDomain PI (PositiveInteger))),
+ :labelList,:dList,:nrowList,:bList]
+ page := htInitPage("F04MCF - Approximate solution of real symmetric positive-definite variable-bandwidth simultaneous linear equations (coefficient matrix already factorized)",nil)
+ htSay '"\menuitemstyle{}\tab{2} Elements of matrix {\it AL} in row by row "
+ htSay '"order as returned by F01MCF: \newline "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04mcfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'lal,lal)
+ htpSetProperty(page,'ir,ir)
+-- htpSetProperty(page,'nrb,nrb)
+-- htpSetProperty(page,'nrx,nrx)
+ htpSetProperty(page,'iselct,iselct)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+f04mcfDefaultSolve (htPage,iselct,ifail) ==
+ n := '6
+ lal := '14
+ ir := '2
+ nrb := '6
+ nrx := '6
+ page := htInitPage("F04MCF - Approximate solution of real symmetric positive-definite variable-bandwidth simultaneous linear equations (coefficient matrix already factorized)",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain PI (Positive Integer))
+ (isDomain F (Float)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} Elements of matrix {\it AL} in row by ")
+ (text . "row order as returned by F01MCF: ")
+ (text . "\newline ")
+ (bcStrings (6 "1.0" x1 F))
+ (bcStrings (6 "2.0" x2 F))
+ (bcStrings (6 "1.0" x3 F))
+ (bcStrings (6 "3.0" x4 F))
+ (bcStrings (6 "1.0" x5 F))
+ (bcStrings (6 "1.0" x6 F))
+ (bcStrings (6 "5.0" x7 F))
+ (bcStrings (6 "4.0" x8 F))
+ (bcStrings (6 "1.5" x9 F))
+ (bcStrings (6 "0.5" x10 F))
+ (bcStrings (6 "1.0" x11 F))
+ (bcStrings (6 "1.5" x12 F))
+ (bcStrings (6 "5.0" x13 F))
+ (bcStrings (6 "1.0" x14 F))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2} Diagonal elements of diagonal matrix ")
+ (text . "D as returned by F01MCF: ")
+ (text . "\newline ")
+ (bcStrings (6 "1.0" d1 F))
+ (bcStrings (6 "1.0" d2 F))
+ (bcStrings (6 "4.0" d3 F))
+ (bcStrings (6 "16.0" d4 F))
+ (bcStrings (6 "1.0" d5 F))
+ (bcStrings (6 "16.0" d6 F))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2} {\it NROW(n)} the width of the ith row ")
+ (text . "of A: ")
+ (text . "\newline ")
+ (bcStrings (6 1 n1 PI))
+ (bcStrings (6 2 n2 PI))
+ (bcStrings (6 2 n3 PI))
+ (bcStrings (6 1 n4 PI))
+ (bcStrings (6 5 n5 PI))
+ (bcStrings (6 3 n6 PI))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2} The n by r right-hand side matrix B:")
+ (text . "\newline ")
+ (bcStrings (6 "6" b11 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "-10" b12 PI))
+ (text . "\newline ")
+ (bcStrings (6 "15" b21 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "-21" b22 PI))
+ (text . "\newline ")
+ (bcStrings (6 "11" b31 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "-3" b32 PI))
+ (text . "\newline ")
+ (bcStrings (6 "0" b41 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "24" b42 PI))
+ (text . "\newline ")
+ (bcStrings (6 "51" b51 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "-39" b52 PI))
+ (text . "\newline ")
+ (bcStrings (6 "46" b61 F))
+ (text . "\tab{10} ")
+ (bcStrings (6 "67" b62 PI))
+ (text . "\blankline "))
+ htMakeDoneButton('"Continue",'f04mcfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'lal,lal)
+ htpSetProperty(page,'ir,ir)
+-- htpSetProperty(page,'nrb,nrb)
+-- htpSetProperty(page,'nrx,nrx)
+ htpSetProperty(page,'iselct,iselct)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04mcfGen htPage ==
+ n := htpProperty(htPage,'n)
+ lal := htpProperty(htPage,'lal)
+ ir := htpProperty(htPage,'ir)
+-- nrb := htpProperty(htPage,'nrb)
+-- nrx := htpProperty(htPage,'nrx)
+ nrb := n
+ nrx := n
+ iselct := htpProperty(htPage,'iselct)
+ ifail := htpProperty(htPage,'ifail)
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for i in 1..nrb repeat
+ for j in 1..ir repeat
+ elm := STRCONC((first y).1," ")
+ rowList := [elm,:rowList]
+ y := rest y
+ matform := [rowList,:matform]
+ rowList := []
+ matfrom := REVERSE matform
+ matstring := bcwords2liststring [bcwords2liststring x for x in matform]
+ for i in 1..n repeat
+ right := STRCONC ((first y).1," ")
+ y := rest y
+ nrowList := [right,:nrowList]
+ nrowstring := bcwords2liststring nrowList
+ for i in 1..n repeat
+ right := STRCONC ((first y).1," ")
+ y := rest y
+ dList := [right,:dList]
+ dstring := bcwords2liststring dList
+ while y repeat
+ right := STRCONC ((first y).1," ")
+ y := rest y
+ alList := [right,:alList]
+ alstring := bcwords2liststring alList
+ prefix := STRCONC('"f04mcf(",STRINGIMAGE n,", [",alstring,"], ")
+ prefix := STRCONC(prefix,STRINGIMAGE lal,", [",dstring,"],[",nrowstring)
+ prefix := STRCONC(prefix,"]::Matrix Integer,")
+ prefix := STRCONC(prefix,STRINGIMAGE ir,", ",matstring,", ",STRINGIMAGE nrb)
+ prefix := STRCONC(prefix,", ",STRINGIMAGE iselct,", ",STRINGIMAGE nrx,", ")
+ bcGen STRCONC(prefix,STRINGIMAGE ifail,")")
+
+
+f04axf() ==
+ htInitPage('"F04AXF - Approximate solution of a a set of real sparse linear equations after factorization by F01BRF or by F01BSF",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain EM $EmptyMode)
+ (isDomain F (Float)))
+ (text . "\windowlink{Manual Page}{manpageXXf04axf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04axf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\newline ")
+ (text . "F04AXF calculates the approximate solution of a set of real ")
+ (text . "sparse linear equations {\it Ax=b} or ")
+ (text . "\htbitmap{aTx=b}, where the {\it n} by {\it n} matrix ")
+ (text . "{\it A} has been factorized by F01BRF or F01BSF, {\it x} ")
+ (text . "is an {\it n} element vector of unknowns and {\it b} is an ")
+ (text . "{\it n} element right-hand side vector. ")
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "Read the input file to see the example program. ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "\spadcommand{)read f04axf \bound{s0}} "))
+ htShowPage()
+
+f04maf() ==
+ htInitPage('"F04MAF - Solution of a real sparse symmetric positive-definite system of linear equations after factorization by F01MAF",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain EM $EmptyMode)
+ (isDomain F (Float)))
+ (text . "\windowlink{Manual Page}{manpageXXf04maf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04maf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\newline ")
+ (text . "F04MAF solves a real sparse symmetric positive-definite system ")
+ (text . "of linear equations {\it Ax=b} using a pre-conditioned ")
+ (text . "conjugate gradient method, where the {\it n} by {\it n} ")
+ (text . "matrix {\it A} has been factorized by F01MAF, {\it x} is an ")
+ (text . "{\it n} element vector of unknowns and {\it b} is an {\it n} ")
+ (text . "element right-hand side vector. ")
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "\spadcommand{)read f04maf \bound{s0}} "))
+ htShowPage()
+
+f04mbf() ==
+ htInitPage('"F04MBF - Real sparse symmetric simultaneous linear equations",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain EM $EmptyMode)
+ (isDomain PI (PositiveInteger))
+ (isDomain F (Float)))
+ (text . "\windowlink{Manual Page}{manpageXXf04mbf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04mbf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\newline ")
+ (text . "F04MBF solve a system of real symmetric linear equations ")
+ (text . "({\it A} - \lambda {\it I}){\it x} = {\it b} using a Lanczos ")
+ (text . "algorithm, where {\it A} is an {\it n} by {\it n} sparse ")
+ (text . "symmetric matrix, {\it x} is an {\it n} vector of unknowns ")
+ (text . "and {\it b} is an {\it n} element right-hand side vector. ")
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the order {\it n} of matrix {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 10 n PI))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Is preconditioning required? ")
+ (radioButtons precon
+ ("" " Yes" true)
+ ("" " No" false))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the shift in the equations \lambda, {\it shift} : ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 "0.0" shift F))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the tolerance for convergence, {\it rtol}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 "0.00001" rtol F))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter an upper limit for the number of iterations, {\it itnlim}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 100 itnlim PI))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the printing level, {\it msglvl}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (10 1 msglvl PI))
+ (text . "\blankline")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Ifail value: ")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04mbfSolve)
+ htShowPage()
+
+f04mbfSolve htPage ==
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ msolve := htpButtonValue(htPage,'precon)
+ precon :=
+ msolve = 'true => 'true
+ 'false
+ shift := htpLabelInputString(htPage,'shift)
+ rtol := htpLabelInputString(htPage,'rtol)
+ itnlim :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'itnlim)
+ objValUnwrap htpLabelSpadValue(htPage, 'itnlim)
+ msglvl :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'msglvl)
+ objValUnwrap htpLabelSpadValue(htPage, 'msglvl)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ (n = '10 and precon ='true) => f04mbfDefaultSolve(htPage,shift,rtol,itnlim,msglvl,ifail)
+ bmatList :=
+ "append"/[f(i) for i in 1..n] where f(i) ==
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE i)
+ [['bcStrings,[6, "0.0", bnam, 'F]]]
+ amatList :=
+ "append"/[h(ia,n) for ia in 1..n] where h(ia,n) ==
+ alabelList :=
+ "append"/[k(ia,ja) for ja in 1..n] where k(ia,ja) ==
+ anam := INTERN STRCONC ('"a",STRINGIMAGE ia,STRINGIMAGE ja)
+ [['bcStrings,[6, "0.0", anam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ alabelList := [['text,:prefix],:alabelList]
+ start := ('"\blankline \menuitemstyle{}\tab{2} Enter the matrix {\it A}: ")
+ amatList := [['text,:start],:amatList]
+ mmatList:=
+ precon = 'true =>
+ alabelList:=
+ "append"/[l(im,n) for im in 1..n] where l(im,n) ==
+ mlabelList :=
+ "append"/[o(im,jm) for jm in 1..n] where o(im,jm) ==
+ mnam := INTERN STRCONC ('"m",STRINGIMAGE im,STRINGIMAGE jm)
+ [['bcStrings,[6, "0.0", mnam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ mlabelList := [['text,:prefix],:mlabelList]
+ start := ('"\blankline \menuitemstyle{}\tab{2} Enter the matrix {\it m}: ")
+ [['text,:start],:alabelList]
+ []
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :bmatList,:amatList,:mmatList]
+ page := htInitPage('"F04MBF - Real sparse symmetric simultaneous linear equations",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} "
+ htSay '"Enter the right-hand side vector {\it b(n)}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04mbfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'precon,precon)
+ htpSetProperty(page,'shift,shift)
+ htpSetProperty(page,'rtol,rtol)
+ htpSetProperty(page,'itnlim,itnlim)
+ htpSetProperty(page,'msglvl,msglvl)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04mbfDefaultSolve (htPage,shift,rtol,itnlim,msglvl,ifail) ==
+ n := '10
+ precon := 'true
+ page := htInitPage('"F04MBF - Real sparse symmetric simultaneous linear equations",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the right-hand side vector {\it b(n)}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "6.0" b1 F))
+ (bcStrings (6 "4.0" b2 F))
+ (bcStrings (6 "4.0" b3 F))
+ (bcStrings (6 "4.0" b4 F))
+ (bcStrings (6 "4.0" b5 F))
+ (bcStrings (6 "4.0" b6 F))
+ (bcStrings (6 "4.0" b7 F))
+ (bcStrings (6 "4.0" b8 F))
+ (bcStrings (6 "4.0" b9 F))
+ (bcStrings (6 "6.0" b10 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the matrix {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "2.0" a11 F))
+ (bcStrings (6 "1.0" a12 F))
+ (bcStrings (6 "0.0" a13 F))
+ (bcStrings (6 "0.0" a14 F))
+ (bcStrings (6 "0.0" a15 F))
+ (bcStrings (6 "0.0" a16 F))
+ (bcStrings (6 "0.0" a17 F))
+ (bcStrings (6 "0.0" a18 F))
+ (bcStrings (6 "0.0" a19 F))
+ (bcStrings (6 "3.0" a110 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "1.0" a21 F))
+ (bcStrings (6 "2.0" a22 F))
+ (bcStrings (6 "1.0" a23 F))
+ (bcStrings (6 "0.0" a24 F))
+ (bcStrings (6 "0.0" a25 F))
+ (bcStrings (6 "0.0" a26 F))
+ (bcStrings (6 "0.0" a27 F))
+ (bcStrings (6 "0.0" a28 F))
+ (bcStrings (6 "0.0" a29 F))
+ (bcStrings (6 "0.0" a210 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a31 F))
+ (bcStrings (6 "1.0" a32 F))
+ (bcStrings (6 "2.0" a33 F))
+ (bcStrings (6 "1.0" a34 F))
+ (bcStrings (6 "0.0" a35 F))
+ (bcStrings (6 "0.0" a36 F))
+ (bcStrings (6 "0.0" a37 F))
+ (bcStrings (6 "0.0" a38 F))
+ (bcStrings (6 "0.0" a39 F))
+ (bcStrings (6 "0.0" a310 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a41 F))
+ (bcStrings (6 "0.0" a42 F))
+ (bcStrings (6 "1.0" a43 F))
+ (bcStrings (6 "2.0" a44 F))
+ (bcStrings (6 "1.0" a45 F))
+ (bcStrings (6 "0.0" a46 F))
+ (bcStrings (6 "0.0" a47 F))
+ (bcStrings (6 "0.0" a48 F))
+ (bcStrings (6 "0.0" a49 F))
+ (bcStrings (6 "0.0" a410 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a51 F))
+ (bcStrings (6 "0.0" a52 F))
+ (bcStrings (6 "0.0" a53 F))
+ (bcStrings (6 "1.0" a54 F))
+ (bcStrings (6 "2.0" a55 F))
+ (bcStrings (6 "1.0" a56 F))
+ (bcStrings (6 "0.0" a57 F))
+ (bcStrings (6 "0.0" a58 F))
+ (bcStrings (6 "0.0" a59 F))
+ (bcStrings (6 "0.0" a510 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a61 F))
+ (bcStrings (6 "0.0" a62 F))
+ (bcStrings (6 "0.0" a63 F))
+ (bcStrings (6 "0.0" a64 F))
+ (bcStrings (6 "1.0" a65 F))
+ (bcStrings (6 "2.0" a66 F))
+ (bcStrings (6 "1.0" a67 F))
+ (bcStrings (6 "0.0" a68 F))
+ (bcStrings (6 "0.0" a69 F))
+ (bcStrings (6 "0.0" a610 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a71 F))
+ (bcStrings (6 "0.0" a72 F))
+ (bcStrings (6 "0.0" a73 F))
+ (bcStrings (6 "0.0" a74 F))
+ (bcStrings (6 "0.0" a75 F))
+ (bcStrings (6 "1.0" a76 F))
+ (bcStrings (6 "2.0" a77 F))
+ (bcStrings (6 "1.0" a78 F))
+ (bcStrings (6 "0.0" a79 F))
+ (bcStrings (6 "0.0" a710 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a81 F))
+ (bcStrings (6 "0.0" a82 F))
+ (bcStrings (6 "0.0" a83 F))
+ (bcStrings (6 "0.0" a84 F))
+ (bcStrings (6 "0.0" a85 F))
+ (bcStrings (6 "0.0" a86 F))
+ (bcStrings (6 "1.0" a87 F))
+ (bcStrings (6 "2.0" a88 F))
+ (bcStrings (6 "1.0" a89 F))
+ (bcStrings (6 "0.0" a810 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a91 F))
+ (bcStrings (6 "0.0" a92 F))
+ (bcStrings (6 "0.0" a93 F))
+ (bcStrings (6 "0.0" a94 F))
+ (bcStrings (6 "0.0" a95 F))
+ (bcStrings (6 "0.0" a96 F))
+ (bcStrings (6 "0.0" a97 F))
+ (bcStrings (6 "1.0" a98 F))
+ (bcStrings (6 "2.0" a99 F))
+ (bcStrings (6 "1.0" a910 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "3.0" a101 F))
+ (bcStrings (6 "0.0" a102 F))
+ (bcStrings (6 "0.0" a103 F))
+ (bcStrings (6 "0.0" a104 F))
+ (bcStrings (6 "0.0" a105 F))
+ (bcStrings (6 "0.0" a106 F))
+ (bcStrings (6 "0.0" a107 F))
+ (bcStrings (6 "0.0" a108 F))
+ (bcStrings (6 "1.0" a109 F))
+ (bcStrings (6 "2.0" a1010 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the matrix {\it m}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "2.0" m11 F))
+ (bcStrings (6 "1.0" m12 F))
+ (bcStrings (6 "0.0" m13 F))
+ (bcStrings (6 "0.0" m14 F))
+ (bcStrings (6 "0.0" m15 F))
+ (bcStrings (6 "0.0" m16 F))
+ (bcStrings (6 "0.0" m17 F))
+ (bcStrings (6 "0.0" m18 F))
+ (bcStrings (6 "0.0" m19 F))
+ (bcStrings (6 "0.0" m110 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "1.0" m21 F))
+ (bcStrings (6 "2.0" m22 F))
+ (bcStrings (6 "1.0" m23 F))
+ (bcStrings (6 "0.0" m24 F))
+ (bcStrings (6 "0.0" m25 F))
+ (bcStrings (6 "0.0" m26 F))
+ (bcStrings (6 "0.0" m27 F))
+ (bcStrings (6 "0.0" m28 F))
+ (bcStrings (6 "0.0" m29 F))
+ (bcStrings (6 "0.0" m210 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m31 F))
+ (bcStrings (6 "1.0" m32 F))
+ (bcStrings (6 "2.0" m33 F))
+ (bcStrings (6 "1.0" m34 F))
+ (bcStrings (6 "0.0" m35 F))
+ (bcStrings (6 "0.0" m36 F))
+ (bcStrings (6 "0.0" m37 F))
+ (bcStrings (6 "0.0" m38 F))
+ (bcStrings (6 "0.0" m39 F))
+ (bcStrings (6 "0.0" m310 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m41 F))
+ (bcStrings (6 "0.0" m42 F))
+ (bcStrings (6 "1.0" m43 F))
+ (bcStrings (6 "2.0" m44 F))
+ (bcStrings (6 "1.0" m45 F))
+ (bcStrings (6 "0.0" m46 F))
+ (bcStrings (6 "0.0" m47 F))
+ (bcStrings (6 "0.0" m48 F))
+ (bcStrings (6 "0.0" m49 F))
+ (bcStrings (6 "0.0" m410 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m51 F))
+ (bcStrings (6 "0.0" m52 F))
+ (bcStrings (6 "0.0" m53 F))
+ (bcStrings (6 "1.0" m54 F))
+ (bcStrings (6 "2.0" m55 F))
+ (bcStrings (6 "1.0" m56 F))
+ (bcStrings (6 "0.0" m57 F))
+ (bcStrings (6 "0.0" m58 F))
+ (bcStrings (6 "0.0" m59 F))
+ (bcStrings (6 "0.0" m510 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m61 F))
+ (bcStrings (6 "0.0" m62 F))
+ (bcStrings (6 "0.0" m63 F))
+ (bcStrings (6 "0.0" m64 F))
+ (bcStrings (6 "1.0" m65 F))
+ (bcStrings (6 "2.0" m66 F))
+ (bcStrings (6 "1.0" m67 F))
+ (bcStrings (6 "0.0" m68 F))
+ (bcStrings (6 "0.0" m69 F))
+ (bcStrings (6 "0.0" m610 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m71 F))
+ (bcStrings (6 "0.0" m72 F))
+ (bcStrings (6 "0.0" m73 F))
+ (bcStrings (6 "0.0" m74 F))
+ (bcStrings (6 "0.0" m75 F))
+ (bcStrings (6 "1.0" m76 F))
+ (bcStrings (6 "2.0" m77 F))
+ (bcStrings (6 "1.0" m78 F))
+ (bcStrings (6 "0.0" m79 F))
+ (bcStrings (6 "0.0" m710 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m81 F))
+ (bcStrings (6 "0.0" m82 F))
+ (bcStrings (6 "0.0" m83 F))
+ (bcStrings (6 "0.0" m84 F))
+ (bcStrings (6 "0.0" m85 F))
+ (bcStrings (6 "0.0" m86 F))
+ (bcStrings (6 "1.0" m87 F))
+ (bcStrings (6 "2.0" m88 F))
+ (bcStrings (6 "1.0" m89 F))
+ (bcStrings (6 "0.0" m810 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m91 F))
+ (bcStrings (6 "0.0" m92 F))
+ (bcStrings (6 "0.0" m93 F))
+ (bcStrings (6 "0.0" m94 F))
+ (bcStrings (6 "0.0" m95 F))
+ (bcStrings (6 "0.0" m96 F))
+ (bcStrings (6 "0.0" m97 F))
+ (bcStrings (6 "1.0" m98 F))
+ (bcStrings (6 "2.0" m99 F))
+ (bcStrings (6 "1.0" m910 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" m101 F))
+ (bcStrings (6 "0.0" m102 F))
+ (bcStrings (6 "0.0" m103 F))
+ (bcStrings (6 "0.0" m104 F))
+ (bcStrings (6 "0.0" m105 F))
+ (bcStrings (6 "0.0" m106 F))
+ (bcStrings (6 "0.0" m107 F))
+ (bcStrings (6 "0.0" m108 F))
+ (bcStrings (6 "1.0" m109 F))
+ (bcStrings (6 "2.0" m1010 F))
+ (text . "\blankline "))
+ htMakeDoneButton('"Continue",'f04mbfGen)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'precon,precon)
+ htpSetProperty(page,'shift,shift)
+ htpSetProperty(page,'rtol,rtol)
+ htpSetProperty(page,'itnlim,itnlim)
+ htpSetProperty(page,'msglvl,msglvl)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04mbfGen htPage ==
+ n := htpProperty(htPage,'n)
+ precon := htpProperty(htPage,'precon)
+ shift := htpProperty(htPage,'shift)
+ rtol := htpProperty(htPage,'rtol)
+ itnlim := htpProperty(htPage,'itnlim)
+ msglvl := htpProperty(htPage,'msglvl)
+ ifail := htpProperty(htPage,'ifail)
+ lrwork := '1
+ liwork := '1
+ alist := htpInputAreaAlist htPage
+ y := alist
+ if (precon = 'true) then
+ for i in 1..n repeat
+ for j in 1..n repeat
+ melm := STRCONC((first y).1," ")
+ mrowlist := [melm,:mrowlist]
+ y := rest y
+ matm := [mrowlist,:matm]
+ mrowlist := []
+ mstring := bcwords2liststring [bcwords2liststring x for x in matm]
+ for k in 1..n repeat
+ for l in 1..n repeat
+ aelm := STRCONC((first y).1," ")
+ arowlist := [aelm,:arowlist]
+ y := rest y
+ mata := [arowlist,:mata]
+ arowlist := []
+ astring := bcwords2liststring [bcwords2liststring y for y in mata]
+ for z in 1..n repeat
+ belm := STRCONC((first y).1," ")
+ blist := [belm,:blist]
+ y := rest y
+ bstring := bcwords2liststring blist
+ if (precon = 'false) then
+ mstring := astring
+ prefix := STRCONC('"f04mbf(",STRINGIMAGE n,",[",bstring,"]::Matrix DoubleFloat,",precon,",")
+ prefix := STRCONC(prefix,STRINGIMAGE shift,",",STRINGIMAGE itnlim,",",STRINGIMAGE msglvl,",")
+ prefix := STRCONC(prefix,STRINGIMAGE lrwork,",",STRINGIMAGE liwork,",")
+ prefix := STRCONC(prefix,STRINGIMAGE rtol,",",STRINGIMAGE ifail,",((")
+ prefix := STRCONC(prefix,astring,"::Matrix MachineFloat)::ASP28(APROD)),((")
+ prefix := STRCONC(prefix,mstring,"::Matrix MachineFloat)::ASP34(MSOLVE)))")
+ linkGen prefix
+
+
+-- f04qaf() ==
+-- htInitPage('"F04QAF - Solution of sparse unsymmetric equations, linear and damped least-squares problems using a Lanczos algorithm",nil)
+-- htMakePage '(
+-- (domainConditions
+-- (isDomain EM $EmptyMode)
+-- (isDomain F (Float)))
+-- (text . "\windowlink{Manual Page}{manpageXXf04qaf} for this routine ")
+-- (text . "\newline ")
+-- (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04qaf| '|NagLinearEquationSolvingPackage|)} for this routine")
+-- (text . "\newline \horizontalline ")
+-- (text . "\newline ")
+-- (text . "F04QAF solves sparse unsymmetric equations, sparse linear ")
+-- (text . "least-squares problems and sparse damped least-squares ")
+-- (text . "problems, using a Lanczos algorithm. Specifically, the ")
+-- (text . "routine can be used to solve a system of linear equations ")
+-- (text . "{\it Ax=b}, where {\it A} is an {\it n} by {\it n} real ")
+-- (text . "sparse unsymmetric matrix, or can be used to solve linear ")
+-- (text . "least-squares problems, so that it minimizes the the value ")
+-- (text . "{\htbitmap{newrho}} given by {\htbitmap{rho=r}}, ")
+-- (text . "{\it r=b-AX} where {\it A} is an {\it m} by {\it n} real ")
+-- (text . "sparse matrix. A damping parameter \lambda may ")
+-- (text . "be included in the least squares problem in which case the ")
+-- (text . "routine minimizes the value {\htbitmap{newrho}} given by ")
+-- (text . "{\htbitmap{rhosq=}}. \newline ")
+-- (text . "\blankline ")
+-- (text . "\menuitemstyle{}\tab{2}")
+-- (text . "\spadcommand{)read f04qaf \bound{s0}} "))
+-- htShowPage()
+
+-- f04mbf() ==
+-- htInitPage('"F04MBF - Real sparse symmetric simultaneous linear equations",nil)
+-- htMakePage '(
+-- (domainConditions
+-- (isDomain EM $EmptyMode)
+-- (isDomain F (Float)))
+-- (text . "\windowlink{Manual Page}{manpageXXf04mbf} for this routine ")
+-- (text . "\newline ")
+-- (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04mbf| '|NagLinearEquationSolvingPackage|)} for this routine")
+-- (text . "\newline \horizontalline ")
+-- (text . "\newline ")
+-- (text . "\newline ")
+-- (text . "F04MBF solve a system of real symmetric linear equations ")
+-- (text . "({\it A} - \lambda {\it I}){\it x} = {\it b} using a Lanczos ")
+-- (text . "algorithm, where {\it A} is an {\it n} by {\it n} sparse ")
+-- (text . "symmetric matrix, {\it x} is an {\it n} vector of unknowns ")
+-- (text . "and {\it b} is an {\it n} element right-hand side vector. ")
+-- (text . "\blankline")
+-- (text . "\newline ")
+-- (text . "\menuitemstyle{}\tab{2} ")
+-- (text . "\spadcommand{)read f04mbf \bound{s0}} "))
+-- htShowPage()
+
+f04qaf() ==
+ htInitPage('"F04QAF - Solution of sparse unsymmetric equations, linear and damped least-squares problems using a Lanczos algorithm",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain EM $EmptyMode)
+ (isDomain PI (PositiveInteger))
+ (isDomain F (Float)))
+ (text . "\windowlink{Manual Page}{manpageXXf04qaf} for this routine ")
+ (text . "\newline ")
+ (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f04qaf| '|NagLinearEquationSolvingPackage|)} for this routine")
+ (text . "\newline \horizontalline ")
+ (text . "\newline ")
+ (text . "F04QAF solves sparse unsymmetric equations, sparse linear ")
+ (text . "least-squares problems and sparse damped least-squares ")
+ (text . "problems, using a Lanczos algorithm. Specifically, the ")
+ (text . "routine can be used to solve a system of linear equations ")
+ (text . "{\it Ax=b}, where {\it A} is an {\it n} by {\it n} real ")
+ (text . "sparse unsymmetric matrix, or can be used to solve linear ")
+ (text . "least-squares problems, so that it minimizes the the value ")
+ (text . "{\htbitmap{newrho}} given by {\htbitmap{rho=r}}, ")
+ (text . "{\it r=b-AX} where {\it A} is an {\it m} by {\it n} real ")
+ (text . "sparse matrix. A damping parameter \lambda may ")
+ (text . "be included in the least squares problem in which case the ")
+ (text . "routine minimizes the value {\htbitmap{newrho}} given by ")
+ (text . "{\htbitmap{rhosq=}}. \newline ")
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the number of rows of the matrix {\it A}, {\it m}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 13 m PI))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the number of columns of the matrix {\it A}, {\it n}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 12 n PI))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the damping parameter \lambda, {\it damp}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 "0.0" damp F))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the tolerance for elements of {\it A}, {\it atol}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 "0.00001" atol F))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the tolerance for elements of {\it b}, {\it btol}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 "0.0001" btol F))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the maximum number of iterations {\it itnlim}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 100 itnlim PI))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Enter the printing level {\it msglvl}:")
+ (text . "\newline \tab{2}")
+ (bcStrings (10 1 msglvl PI))
+ (text . "\blankline ")
+ (text . "\menuitemstyle{}\tab{2}")
+ (text . "Ifail value: ")
+ (radioButtons ifail
+ ("" " -1, Print error messages" minusOne)
+ ("" " 1, Suppress error messages" one)))
+ htMakeDoneButton('"Continue", 'f04qafSolve)
+ htShowPage()
+
+f04qafSolve htPage ==
+ m :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm)
+ objValUnwrap htpLabelSpadValue(htPage, 'm)
+ n :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n)
+ objValUnwrap htpLabelSpadValue(htPage, 'n)
+ damp := htpLabelInputString(htPage,'damp)
+ atol := htpLabelInputString(htPage,'atol)
+ btol := htpLabelInputString(htPage,'btol)
+ itnlim :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'itnlim)
+ objValUnwrap htpLabelSpadValue(htPage, 'itnlim)
+ msglvl :=
+ $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'msglvl)
+ objValUnwrap htpLabelSpadValue(htPage, 'msglvl)
+ error := htpButtonValue(htPage,'ifail)
+ ifail :=
+ error = 'one => '1
+ '-1
+ (m = '13 and n = '12) => f04qafDefaultSolve(htPage,damp,atol,btol,itnlim,msglvl,ifail)
+ bmatList :=
+ "append"/[f(i) for i in 1..m] where f(i) ==
+ bnam := INTERN STRCONC ('"b",STRINGIMAGE i)
+ [['bcStrings,[6, "0.0", bnam, 'F]]]
+ amatList :=
+ "append"/[h(ia,n) for ia in 1..m] where h(ia,n) ==
+ alabelList :=
+ "append"/[k(ia,ja) for ja in 1..n] where k(ia,ja) ==
+ anam := INTERN STRCONC ('"a",STRINGIMAGE ia,STRINGIMAGE ja)
+ [['bcStrings,[6, "0.0", anam, 'F]]]
+ prefix := ('"\newline \tab{2} ")
+ alabelList := [['text,:prefix],:alabelList]
+ start := ('"\blankline \menuitemstyle{}\tab{2} Enter the matrix {\it A}: ")
+ amatList := [['text,:start],:amatList]
+ equationPart := [
+ '(domainConditions
+ (isDomain P (Polynomial $EmptyMode))
+ (isDomain F (Float))),
+ :bmatList,:amatList]
+ page := htInitPage('"F04QAF - Solution of sparse unsymmetric equations, linear and damped least-squares problems using a Lanczos algorithm",nil)
+ htSay '"\newline \menuitemstyle{}\tab{2} "
+ htSay '"Enter the right-hand side vector {\it b(m)}: "
+ htSay '"\newline \tab{2} "
+ htMakePage equationPart
+ htSay '"\blankline "
+ htMakeDoneButton('"Continue",'f04qafGen)
+ htpSetProperty(page,'m,m)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'damp,damp)
+ htpSetProperty(page,'atol,atol)
+ htpSetProperty(page,'btol,btol)
+ htpSetProperty(page,'itnlim,itnlim)
+ htpSetProperty(page,'msglvl,msglvl)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+
+
+f04qafDefaultSolve (htPage,damp,atol,btol,itnlim,msglvl,ifail) ==
+ m := '13
+ n := '12
+ page := htInitPage('"F04QAF - Solution of sparse unsymmetric equations, linear and damped least-squares problems using a Lanczos algorithm",nil)
+ htMakePage '(
+ (domainConditions
+ (isDomain F (Float)))
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the right-hand side vector {\it b(n)}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" b1 F))
+ (bcStrings (6 "0.0" b2 F))
+ (bcStrings (6 "0.0" b3 F))
+ (bcStrings (6 "-0.01" b4 F))
+ (bcStrings (6 "-0.01" b5 F))
+ (bcStrings (6 "0.0" b6 F))
+ (bcStrings (6 "0.0" b7 F))
+ (bcStrings (6 "-0.01" b8 F))
+ (bcStrings (6 "-0.01" b9 F))
+ (bcStrings (6 "0.0" b10 F))
+ (bcStrings (6 "0.0" b11 F))
+ (bcStrings (6 "0.0" b12 F))
+ (bcStrings (6 "10.0" b13 F))
+ (text . "\blankline ")
+ (text . "\newline ")
+ (text . "\menuitemstyle{}\tab{2} ")
+ (text . "Enter the matrix {\it A}: ")
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "1.0" a0101 F))
+ (bcStrings (6 "0.0" a0102 F))
+ (bcStrings (6 "0.0" a0103 F))
+ (bcStrings (6 "-1.0" a0104 F))
+ (bcStrings (6 "0.0" a0105 F))
+ (bcStrings (6 "0.0" a0106 F))
+ (bcStrings (6 "0.0" a0107 F))
+ (bcStrings (6 "0.0" a0108 F))
+ (bcStrings (6 "0.0" a0109 F))
+ (bcStrings (6 "0.0" a0110 F))
+ (bcStrings (6 "0.0" a0111 F))
+ (bcStrings (6 "0.0" a0112 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0201 F))
+ (bcStrings (6 "1.0" a0202 F))
+ (bcStrings (6 "0.0" a0203 F))
+ (bcStrings (6 "0.0" a0204 F))
+ (bcStrings (6 "-1.0" a0205 F))
+ (bcStrings (6 "0.0" a0206 F))
+ (bcStrings (6 "0.0" a0207 F))
+ (bcStrings (6 "0.0" a0208 F))
+ (bcStrings (6 "0.0" a0209 F))
+ (bcStrings (6 "0.0" a0210 F))
+ (bcStrings (6 "0.0" a0211 F))
+ (bcStrings (6 "0.0" a0212 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0301 F))
+ (bcStrings (6 "0.0" a0302 F))
+ (bcStrings (6 "1.0" a0303 F))
+ (bcStrings (6 "-1.0" a0304 F))
+ (bcStrings (6 "0.0" a0305 F))
+ (bcStrings (6 "0.0" a0306 F))
+ (bcStrings (6 "0.0" a0307 F))
+ (bcStrings (6 "0.0" a0308 F))
+ (bcStrings (6 "0.0" a0309 F))
+ (bcStrings (6 "0.0" a0310 F))
+ (bcStrings (6 "0.0" a0311 F))
+ (bcStrings (6 "0.0" a0312 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "-1.0" a0401 F))
+ (bcStrings (6 "0.0" a0402 F))
+ (bcStrings (6 "-1.0" a0403 F))
+ (bcStrings (6 "4.0" a0404 F))
+ (bcStrings (6 "-1.0" a0405 F))
+ (bcStrings (6 "0.0" a0406 F))
+ (bcStrings (6 "0.0" a0407 F))
+ (bcStrings (6 "-1.0" a0408 F))
+ (bcStrings (6 "0.0" a0409 F))
+ (bcStrings (6 "0.0" a0410 F))
+ (bcStrings (6 "0.0" a0411 F))
+ (bcStrings (6 "0.0" a0412 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0501 F))
+ (bcStrings (6 "-1.0" a0502 F))
+ (bcStrings (6 "0.0" a0503 F))
+ (bcStrings (6 "-1.0" a0504 F))
+ (bcStrings (6 "4.0" a0505 F))
+ (bcStrings (6 "-1.0" a0506 F))
+ (bcStrings (6 "0.0" a0507 F))
+ (bcStrings (6 "0.0" a0508 F))
+ (bcStrings (6 "-1.0" a0509 F))
+ (bcStrings (6 "0.0" a0510 F))
+ (bcStrings (6 "0.0" a0511 F))
+ (bcStrings (6 "0.0" a0512 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0601 F))
+ (bcStrings (6 "0.0" a0602 F))
+ (bcStrings (6 "0.0" a0603 F))
+ (bcStrings (6 "0.0" a0604 F))
+ (bcStrings (6 "-1.0" a0605 F))
+ (bcStrings (6 "1.0" a0606 F))
+ (bcStrings (6 "0.0" a0607 F))
+ (bcStrings (6 "0.0" a0608 F))
+ (bcStrings (6 "0.0" a0609 F))
+ (bcStrings (6 "0.0" a0610 F))
+ (bcStrings (6 "0.0" a0611 F))
+ (bcStrings (6 "0.0" a0612 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0701 F))
+ (bcStrings (6 "0.0" a0702 F))
+ (bcStrings (6 "0.0" a0703 F))
+ (bcStrings (6 "0.0" a0704 F))
+ (bcStrings (6 "0.0" a0705 F))
+ (bcStrings (6 "0.0" a0706 F))
+ (bcStrings (6 "1.0" a0707 F))
+ (bcStrings (6 "-1.0" a0708 F))
+ (bcStrings (6 "0.0" a0709 F))
+ (bcStrings (6 "0.0" a0710 F))
+ (bcStrings (6 "0.0" a0711 F))
+ (bcStrings (6 "0.0" a0712 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0801 F))
+ (bcStrings (6 "0.0" a0802 F))
+ (bcStrings (6 "0.0" a0803 F))
+ (bcStrings (6 "-1.0" a0804 F))
+ (bcStrings (6 "0.0" a0805 F))
+ (bcStrings (6 "0.0" a0806 F))
+ (bcStrings (6 "-1.0" a0807 F))
+ (bcStrings (6 "4.0" a0808 F))
+ (bcStrings (6 "-1.0" a0809 F))
+ (bcStrings (6 "0.0" a0810 F))
+ (bcStrings (6 "-1.0" a0811 F))
+ (bcStrings (6 "0.0" a0812 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a0901 F))
+ (bcStrings (6 "0.0" a0902 F))
+ (bcStrings (6 "0.0" a0903 F))
+ (bcStrings (6 "0.0" a0904 F))
+ (bcStrings (6 "-1.0" a0905 F))
+ (bcStrings (6 "0.0" a0906 F))
+ (bcStrings (6 "0.0" a0907 F))
+ (bcStrings (6 "-1.0" a0908 F))
+ (bcStrings (6 "4.0" a0909 F))
+ (bcStrings (6 "-1.0" a0910 F))
+ (bcStrings (6 "0.0" a0911 F))
+ (bcStrings (6 "-1.0" a0912 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a1001 F))
+ (bcStrings (6 "0.0" a1002 F))
+ (bcStrings (6 "0.0" a1003 F))
+ (bcStrings (6 "0.0" a1004 F))
+ (bcStrings (6 "0.0" a1005 F))
+ (bcStrings (6 "0.0" a1006 F))
+ (bcStrings (6 "0.0" a1007 F))
+ (bcStrings (6 "0.0" a1008 F))
+ (bcStrings (6 "-1.0" a1009 F))
+ (bcStrings (6 "1.0" a1010 F))
+ (bcStrings (6 "0.0" a1011 F))
+ (bcStrings (6 "0.0" a1012 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a1101 F))
+ (bcStrings (6 "0.0" a1102 F))
+ (bcStrings (6 "0.0" a1103 F))
+ (bcStrings (6 "0.0" a1104 F))
+ (bcStrings (6 "0.0" a1105 F))
+ (bcStrings (6 "0.0" a1106 F))
+ (bcStrings (6 "0.0" a1107 F))
+ (bcStrings (6 "-1.0" a1108 F))
+ (bcStrings (6 "0.0" a1109 F))
+ (bcStrings (6 "0.0" a1110 F))
+ (bcStrings (6 "1.0" a1111 F))
+ (bcStrings (6 "0.0" a1112 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "0.0" a1201 F))
+ (bcStrings (6 "0.0" a1202 F))
+ (bcStrings (6 "0.0" a1203 F))
+ (bcStrings (6 "0.0" a1204 F))
+ (bcStrings (6 "0.0" a1205 F))
+ (bcStrings (6 "0.0" a1206 F))
+ (bcStrings (6 "0.0" a1207 F))
+ (bcStrings (6 "0.0" a1208 F))
+ (bcStrings (6 "-1.0" a1209 F))
+ (bcStrings (6 "0.0" a1210 F))
+ (bcStrings (6 "0.0" a1211 F))
+ (bcStrings (6 "1.0" a1212 F))
+ (text . "\newline \tab{2} ")
+ (bcStrings (6 "1.0" a1301 F))
+ (bcStrings (6 "1.0" a1302 F))
+ (bcStrings (6 "1.0" a1303 F))
+ (bcStrings (6 "0.0" a1304 F))
+ (bcStrings (6 "0.0" a1305 F))
+ (bcStrings (6 "1.0" a1306 F))
+ (bcStrings (6 "1.0" a1307 F))
+ (bcStrings (6 "0.0" a1308 F))
+ (bcStrings (6 "0.0" a1309 F))
+ (bcStrings (6 "1.0" a1310 F))
+ (bcStrings (6 "1.0" a1311 F))
+ (bcStrings (6 "1.0" a1312 F))
+ (text . "\blankline "))
+ htMakeDoneButton('"Continue",'f04qafGen)
+ htpSetProperty(page,'m,m)
+ htpSetProperty(page,'n,n)
+ htpSetProperty(page,'damp,damp)
+ htpSetProperty(page,'atol,atol)
+ htpSetProperty(page,'btol,btol)
+ htpSetProperty(page,'itnlim,itnlim)
+ htpSetProperty(page,'msglvl,msglvl)
+ htpSetProperty(page,'ifail,ifail)
+ htpSetProperty(page,'inputArea, htpInputAreaAlist htPage)
+ htShowPage()
+
+f04qafGen htPage ==
+ m := htpProperty(htPage,'m)
+ n := htpProperty(htPage,'n)
+ damp := htpProperty(htPage,'damp)
+ atol := htpProperty(htPage,'atol)
+ btol := htpProperty(htPage,'btol)
+ divisor := READ_-FROM_-STRING(atol)
+ if (divisor < 1.0e-7) then divisor:=1.0e-7
+ conlim := 1.0/divisor
+ itnlim := htpProperty(htPage,'itnlim)
+ msglvl := htpProperty(htPage,'msglvl)
+ ifail := htpProperty(htPage,'ifail)
+ lrwork := 1
+ liwork := 1
+ alist := htpInputAreaAlist htPage
+ y := alist
+ for k in 1..m repeat
+ for l in 1..n repeat
+ aelm := STRCONC((first y).1," ")
+ arowlist := [aelm,:arowlist]
+ y := rest y
+ mata := [arowlist,:mata]
+ arowlist := []
+ astring := bcwords2liststring [bcwords2liststring y for y in mata]
+ for z in 1..m repeat
+ belm := STRCONC((first y).1," ")
+ blist := [belm,:blist]
+ y := rest y
+ bstring := bcwords2liststring blist
+ prefix := STRCONC('"f04qaf(",STRINGIMAGE m,",",STRINGIMAGE n,",")
+ prefix := STRCONC(prefix,STRINGIMAGE damp,",")
+ prefix := STRCONC(prefix,STRINGIMAGE atol,",",STRINGIMAGE btol,",")
+ prefix := STRCONC(prefix,STRINGIMAGE conlim,",",STRINGIMAGE itnlim,",",STRINGIMAGE msglvl,",")
+ prefix := STRCONC(prefix,STRINGIMAGE lrwork,",",STRINGIMAGE liwork,",")
+ prefix := STRCONC(prefix,"[",bstring,"]::Matrix DoubleFloat,")
+ prefix := STRCONC(prefix,STRINGIMAGE ifail,",((",astring,"::Matrix MachineFloat)::ASP30(APROD)))")
+ linkGen prefix
+
+
+
+
+
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}