\documentclass{article} \usepackage{axiom} \begin{document} \title{\$SPAD/src/interp nag-f01.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. @ <<*>>= <> f01brf() == htInitPage("F01BRF - LU factorization of real sparse matrix",nil) htMakePage '( (domainConditions (isDomain F (Float))) (text . "\windowlink{Manual Page}{manpageXXf01brf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01brf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "Factorizes a real sparse matrix A of order n. The routine forms ") (text . "the {\it LU} factorization of the entire matrix, or ,") (text . "optionally, first permutes the matrix to block lower ") (text . "triangular form and then only factorizes the diagonal block. ") (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Enter the order {\em n} of the matrix A ") (text . "\htbitmap{great=} 1:") (text . "\newline\tab{2} ") (bcStrings (8 6 n PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Number of non-zero elements {\it nz}:") (text . "\tab{32} \menuitemstyle{}\tab{34}") (text . "{\it pivot}:") (text . "\newline \tab{2} ") (bcStrings (8 15 nz PI)) (text . "\tab{34} ") (bcStrings (8 "0.1" pivot PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Dimension of A & ICN {\it licn}:") (text . "\tab{32} \menuitemstyle{}\tab{34}") (text . "Dimension of IRN {\it lirn}:") (text . "\newline \tab{2} ") (bcStrings (6 150 licn PI)) (text . "\tab{34} ") (bcStrings (6 75 lirn PI)) (text . "\blankline") (text . "\menuitemstyle{}\tab{2} Grow value:") (radioButtons grow ("" " True" gr_true) ("" " False" gr_false)) (text . "\blankline") (text . "\menuitemstyle{}\tab{2} Lblock value:") (radioButtons lblock ("" " True" lb_true) ("" " False" lb_false)) (text . "\blankline ") (text . "\newline \tab{2} ") (text . "Ifail is input in three components: ") (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it a} ") (radioButtons afail ("" " 0, hard failure" azero) ("" " 1, soft failure" aone)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it b} ") (radioButtons bfail ("" " 1, print error messages" bone) ("" " 0, suppress error messages" bzero)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it c} ") (radioButtons cfail ("" " 1, print warning messages" cone) ("" " 0, suppress warning messages" czero))) htMakeDoneButton('"Continue", 'f01brfSolve) htShowPage() f01brfSolve htPage == n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) nz := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nz) objValUnwrap htpLabelSpadValue(htPage, 'nz) licn := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'licn) objValUnwrap htpLabelSpadValue(htPage, 'licn) lirn := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lirn) objValUnwrap htpLabelSpadValue(htPage, 'lirn) pivot := htpLabelInputString(htPage, 'pivot) gr := htpButtonValue(htPage,'grow) grow := gr = 'gr_true => '"true" '"false" lb := htpButtonValue(htPage,'lblock) lblock := lb = 'lb_true => '"true" '"false" aerror := htpButtonValue(htPage,'afail) afail := aerror = 'azero => '0 '1 berror := htpButtonValue(htPage,'bfail) bfail := berror = 'bone => '1 '0 cerror := htpButtonValue(htPage,'cfail) cfail := cerror = 'cone => '1 '0 ifail := 100*cfail + 10*bfail + afail ((n = '6 and nz = '15) and (licn = '150 and lirn = '75)) => f01brfDefaultSolve(htPage,pivot,grow,lblock,ifail) labelList := "append"/[f(i) for i in 1..nz] where f(i) == prefix := ('"\newline \tab{2} ") anam := INTERN STRCONC ('"a",STRINGIMAGE i) mid := ('"\tab{32} ") rnam := INTERN STRCONC ('"irn",STRINGIMAGE i) end := ('"\tab{42} ") cnam := INTERN STRCONC ('"icn",STRINGIMAGE i) [['text,:prefix],['bcStrings,[8, 0.0, anam, 'F]], ['text,:mid],['bcStrings,[4, 0, rnam, 'PI]], ['text,:end],['bcStrings,[4, 0, cnam, 'PI]]] abortList := [['bcStrings,[6, '"true", 'abortone, 'EM]], ['bcStrings,[6, '"true", 'aborttwo, 'EM]], ['bcStrings,[6, '"false", 'abortthree, 'EM]], ['bcStrings,[6, '"true", 'abortfour, 'EM]]] prefix := ('"\blankline \menuitemstyle{}\tab{2} Abort: ") abortList := [['text,:prefix],:abortList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain EM (EmptyMode)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :labelList,:abortList] page := htInitPage("F01BRF - LU factorization of real sparse matrix",nil) htSay '"\menuitemstyle{}\tab{2} Non-zero elements of A: " htSay '"\tab{30} \menuitemstyle{}\tab{32} Row: " htSay '"\tab{40} \menuitemstyle{}\tab{42} Column: " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01brfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'nz,nz) htpSetProperty(page,'licn,licn) htpSetProperty(page,'lirn,lirn) htpSetProperty(page,'pivot,pivot) htpSetProperty(page,'grow,grow) htpSetProperty(page,'lblock,lblock) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01brfDefaultSolve(htPage,pivot,grow,lblock,ifail) == n := '6 nz := '15 licn := '150 lirn := '75 page := htInitPage("F01BRF - LU factorization of real sparse matrix",nil) htMakePage '( (domainConditions (isDomain PI (Positive Integer)) (isDomain EM $EmptyMode) (isDomain F (Float))) (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Non-zero elements of A: ") (text . "\tab{30} \menuitemstyle{}\tab{32} Row: ") (text . "\tab{40} \menuitemstyle{}\tab{42} Column: ") (text . "\newline \tab{2}") (bcStrings (8 "5.0" a1 F)) (text . "\tab{32} ") (bcStrings (4 1 irn1 PI)) (text . "\tab{42} ") (bcStrings (4 1 icn1 PI)) (text . "\newline \tab{2}") (bcStrings (8 "2.0" a2 F)) (text . "\tab{32} ") (bcStrings (4 2 irn2 PI)) (text . "\tab{42} ") (bcStrings (4 2 icn2 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-1.0" a3 F)) (text . "\tab{32} ") (bcStrings (4 2 irn3 PI)) (text . "\tab{42} ") (bcStrings (4 3 icn3 PI)) (text . "\newline \tab{2}") (bcStrings (8 "2.0" a4 F)) (text . "\tab{32} ") (bcStrings (4 2 irn4 PI)) (text . "\tab{42} ") (bcStrings (4 4 icn4 PI)) (text . "\newline \tab{2}") (bcStrings (8 "3.0" a5 F)) (text . "\tab{32} ") (bcStrings (4 3 irn5 PI)) (text . "\tab{42} ") (bcStrings (4 3 icn5 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-2.0" a6 F)) (text . "\tab{32} ") (bcStrings (4 4 irn6 PI)) (text . "\tab{42} ") (bcStrings (4 1 icn6 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a7 F)) (text . "\tab{32} ") (bcStrings (4 4 irn7 PI)) (text . "\tab{42} ") (bcStrings (4 4 icn7 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a8 F)) (text . "\tab{32} ") (bcStrings (4 4 irn8 PI)) (text . "\tab{42} ") (bcStrings (4 5 icn8 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-1.0" a9 F)) (text . "\tab{32} ") (bcStrings (4 5 irn9 PI)) (text . "\tab{42} ") (bcStrings (4 1 icn9 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-1.0" a10 F)) (text . "\tab{32} ") (bcStrings (4 5 irn10 PI)) (text . "\tab{42} ") (bcStrings (4 4 icn10 PI)) (text . "\newline \tab{2}") (bcStrings (8 "2.0" a11 F)) (text . "\tab{32} ") (bcStrings (4 5 irn11 PI)) (text . "\tab{42} ") (bcStrings (4 5 icn11 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-3.0" a12 F)) (text . "\tab{32} ") (bcStrings (4 5 irn12 PI)) (text . "\tab{42} ") (bcStrings (4 6 icn12 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-1.0" a13 F)) (text . "\tab{32} ") (bcStrings (4 6 irn13 PI)) (text . "\tab{42} ") (bcStrings (4 1 icn13 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-1.0" a14 F)) (text . "\tab{32} ") (bcStrings (4 6 irn14 PI)) (text . "\tab{42} ") (bcStrings (4 2 icn14 PI)) (text . "\newline \tab{2}") (bcStrings (8 "6.0" a15 F)) (text . "\tab{32} ") (bcStrings (4 6 irn15 PI)) (text . "\tab{42} ") (bcStrings (4 6 icn15 PI)) (text . "\blankline ") (text . "\menuitemstyle{} \tab{2} Abort :") (bcStrings (8 "true" abort_one EM)) (bcStrings (8 "true" abort_two EM)) (bcStrings (8 "false" abort_three EM)) (bcStrings (8 "true" abort_four EM))) htMakeDoneButton('"Continue",'f01brfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'nz,nz) htpSetProperty(page,'licn,licn) htpSetProperty(page,'lirn,lirn) htpSetProperty(page,'pivot,pivot) htpSetProperty(page,'grow,grow) htpSetProperty(page,'lblock,lblock) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01brfGen htPage == n := htpProperty(htPage,'n) nz := htpProperty(htPage,'nz) licn := htpProperty(htPage,'licn) lirn := htpProperty(htPage,'lirn) pivot := htpProperty(htPage,'pivot) grow := htpProperty(htPage,'grow) lblock := htpProperty(htPage,'lblock) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..4 repeat abort := STRCONC((first y).1," ") y := rest y abortList := [abort,:abortList] astring := bcwords2liststring abortList while y repeat end := STRCONC ((first y).1," ") y := rest y mid := STRCONC ((first y).1," ") y := rest y top := STRCONC ((first y).1," ") y := rest y cList := [end,:cList] rList := [mid,:rList] matList := [top,:matList] for i in 1..(licn-nz) repeat cList := [:cList,'"0 "] matList := [:matList,'"0 "] for i in 1..(lirn-nz) repeat rList := [:rList,'"0 "] cstring := bcwords2liststring cList rstring := bcwords2liststring rList matstring := bcwords2liststring matList prefix := STRCONC('"f01brf(",STRINGIMAGE n,", ",STRINGIMAGE nz,", ") prefix := STRCONC(prefix,STRINGIMAGE licn,", ",STRINGIMAGE lirn,", ",pivot) prefix := STRCONC(prefix,", ",lblock,", ",grow,", ",astring,",[",matstring) prefix := STRCONC(prefix,"],[",rstring,"],[",cstring,"], ") linkGen STRCONC(prefix,STRINGIMAGE ifail,")") f01bsf() == htInitPage("F01BSF - LU factorization of real sparse matrix with known sparsity pattern",nil) htMakePage '( (domainConditions (isDomain F (Float))) (text . "\windowlink{Manual Page}{manpageXXf01bsf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01bsf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "Factorizes a real sparse matrix A of order n using the pivotal ") (text . "sequence previously obtained by F01BRF when a matrix of the ") (text . "same sparsity pattern was factorized. ") (text . "\blankline ") (text . "Read the input file to see the example program. ") (text . "\spadpaste{)read f01bsf \bound{s0}} ") (text . "\blankline") (text . "\newline ")) htShowPage() f01maf() == htInitPage("F01MAF - \htbitmap{llt} factorization of real sparse symmetric positive-definite matrix",nil) htMakePage '( (domainConditions (isDomain F (Float))) (text . "\windowlink{Manual Page}{manpageXXf01maf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01maf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "Computes an incomplete Cholesky factorization of a real ") (text . "sparse symmetric positive-definite matrix A of order n. ") (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Enter the order {\em n} of the matrix A ") (text . "\htbitmap{great=} 1:") (text . "\newline\tab{2} ") (bcStrings (8 16 n PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Number of non-zero elements {\it nz}:") (text . "\newline \tab{2} ") (bcStrings (8 40 nz PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Dimension of A & ICN {\it licn}:") (text . "\tab{32} \menuitemstyle{}\tab{34}") (text . "Dimension of IRN {\it lirn}:") (text . "\newline \tab{2} ") (bcStrings (6 90 licn PI)) (text . "\tab{34} ") (bcStrings (6 50 lirn PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Tolerance {\it droptl}: ") (text . "\tab{32} \menuitemstyle{}\tab{34}") (text . "{\it densw}:") (text . "\newline \tab{2} ") (bcStrings (6 "0.1" droptl F)) (text . "\tab{34} ") (bcStrings (6 "0.8" densw F)) (text . "\blankline ") (text . "\newline \tab{2} ") (text . "Ifail is input in three components: ") (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it a} ") (radioButtons afail ("" " 0, hard failure" azero) ("" " 1, soft failure" aone)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it b} ") (radioButtons bfail ("" " 1, print error messages" bone) ("" " 0, suppress error messages" bzero)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2}") (text . "{\it c} ") (radioButtons cfail ("" " 1, print warning messages" cone) ("" " 0, suppress warning messages" czero))) htMakeDoneButton('"Continue", 'f01mafSolve) htShowPage() f01mafSolve htPage == n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) nz := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nz) objValUnwrap htpLabelSpadValue(htPage, 'nz) licn := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'licn) objValUnwrap htpLabelSpadValue(htPage, 'licn) lirn := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lirn) objValUnwrap htpLabelSpadValue(htPage, 'lirn) aerror := htpButtonValue(htPage,'afail) afail := aerror = 'azero => '0 '1 berror := htpButtonValue(htPage,'bfail) bfail := berror = 'bone => '1 '0 cerror := htpButtonValue(htPage,'cfail) cfail := cerror = 'cone => '1 '0 ifail := 100*cfail + 10*bfail + afail droptl := htpLabelInputString(htPage, 'droptl) densw := htpLabelInputString(htPage, 'densw) ((n = '16 and nz = '40) and (licn = '90 and lirn = '50)) => f01mafDefaultSolve(htPage,droptl,densw,ifail) labelList := "append"/[f(i) for i in 1..nz] where f(i) == prefix := ('"\newline \tab{2} ") anam := INTERN STRCONC ('"a",STRINGIMAGE i) mid := ('"\tab{32} ") rnam := INTERN STRCONC ('"irn",STRINGIMAGE i) end := ('"\tab{42} ") cnam := INTERN STRCONC ('"icn",STRINGIMAGE i) [['text,:prefix],['bcStrings,[8, 0.0, anam, 'F]], ['text,:mid],['bcStrings,[4, 0, rnam, 'PI]], ['text,:end],['bcStrings,[4, 0, cnam, 'PI]]] abortList := [['bcStrings,[6, '"true", 'abortone, 'EM]], ['bcStrings,[6, '"true", 'aborttwo, 'EM]], ['bcStrings,[6, '"true", 'abortthree, 'EM]]] prefix := ('"\blankline \menuitemstyle{}\tab{2} Abort: ") abortList := [['text,:prefix],:abortList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain EM (EmptyMode)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :labelList,:abortList] page := htInitPage("F01MAF - \htbitmap{llt} factorization of real sparse symmetric positive-definite matrix",nil) htSay '"\menuitemstyle{}\tab{2} Non-zero elements of A: " htSay '"\tab{30} \menuitemstyle{}\tab{32} Row: " htSay '"\tab{40} \menuitemstyle{}\tab{42} Column: " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01mafGen) htpSetProperty(page,'n,n) htpSetProperty(page,'nz,nz) htpSetProperty(page,'licn,licn) htpSetProperty(page,'lirn,lirn) htpSetProperty(page,'droptl,droptl) htpSetProperty(page,'densw,densw) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01mafDefaultSolve(htPage,droptl,densw,ifail) == n := '16 nz := '40 licn := '90 lirn := '50 page := htInitPage("F01MAF - \htbitmap{llt} factorization of real sparse symmetric positive-definite matrix",nil) htMakePage '( (domainConditions (isDomain PI (Positive Integer)) (isDomain EM $EmptyMode) (isDomain F (Float))) (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Non-zero elements of A: ") (text . "\tab{30} \menuitemstyle{}\tab{32} Row: ") (text . "\tab{40} \menuitemstyle{}\tab{42} Column: ") (text . "\newline \tab{2}") (bcStrings (8 "1.0" a1 F)) (text . "\tab{32} ") (bcStrings (4 1 irn1 PI)) (text . "\tab{42} ") (bcStrings (4 1 icn1 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a2 F)) (text . "\tab{32} ") (bcStrings (4 2 irn2 PI)) (text . "\tab{42} ") (bcStrings (4 2 icn2 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a3 F)) (text . "\tab{32} ") (bcStrings (4 3 irn3 PI)) (text . "\tab{42} ") (bcStrings (4 3 icn3 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a4 F)) (text . "\tab{32} ") (bcStrings (4 4 irn4 PI)) (text . "\tab{42} ") (bcStrings (4 4 icn4 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a5 F)) (text . "\tab{32} ") (bcStrings (4 5 irn5 PI)) (text . "\tab{42} ") (bcStrings (4 5 icn5 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a6 F)) (text . "\tab{32} ") (bcStrings (4 6 irn6 PI)) (text . "\tab{42} ") (bcStrings (4 6 icn6 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a7 F)) (text . "\tab{32} ") (bcStrings (4 7 irn7 PI)) (text . "\tab{42} ") (bcStrings (4 7 icn7 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a8 F)) (text . "\tab{32} ") (bcStrings (4 8 irn8 PI)) (text . "\tab{42} ") (bcStrings (4 8 icn8 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a9 F)) (text . "\tab{32} ") (bcStrings (4 9 irn9 PI)) (text . "\tab{42} ") (bcStrings (4 9 icn9 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a10 F)) (text . "\tab{32} ") (bcStrings (4 10 irn10 PI)) (text . "\tab{42} ") (bcStrings (4 10 icn10 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a11 F)) (text . "\tab{32} ") (bcStrings (4 11 irn11 PI)) (text . "\tab{42} ") (bcStrings (4 11 icn11 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a12 F)) (text . "\tab{32} ") (bcStrings (4 12 irn12 PI)) (text . "\tab{42} ") (bcStrings (4 12 icn12 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a13 F)) (text . "\tab{32} ") (bcStrings (4 13 irn13 PI)) (text . "\tab{42} ") (bcStrings (4 13 icn13 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a14 F)) (text . "\tab{32} ") (bcStrings (4 14 irn14 PI)) (text . "\tab{42} ") (bcStrings (4 14 icn14 PI)) (text . "\newline \tab{2}") (bcStrings (8 "1.0" a15 F)) (text . "\tab{32} ") (bcStrings (4 15 irn15 PI)) (text . "\tab{42} ") (bcStrings (4 15 icn15 PI)) (text . "\blankline ") (text . "\newline \tab{2}") (bcStrings (8 "1.0" a16 F)) (text . "\tab{32} ") (bcStrings (4 16 irn16 PI)) (text . "\tab{42} ") (bcStrings (4 16 icn16 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a17 F)) (text . "\tab{32} ") (bcStrings (4 1 irn17 PI)) (text . "\tab{42} ") (bcStrings (4 2 icn17 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a18 F)) (text . "\tab{32} ") (bcStrings (4 2 irn18 PI)) (text . "\tab{42} ") (bcStrings (4 3 icn18 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a19 F)) (text . "\tab{32} ") (bcStrings (4 3 irn19 PI)) (text . "\tab{42} ") (bcStrings (4 4 icn19 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a20 F)) (text . "\tab{32} ") (bcStrings (4 5 irn20 PI)) (text . "\tab{42} ") (bcStrings (4 6 icn20 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a21 F)) (text . "\tab{32} ") (bcStrings (4 6 irn21 PI)) (text . "\tab{42} ") (bcStrings (4 7 icn21 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a22 F)) (text . "\tab{32} ") (bcStrings (4 7 irn22 PI)) (text . "\tab{42} ") (bcStrings (4 8 icn22 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a23 F)) (text . "\tab{32} ") (bcStrings (4 9 irn23 PI)) (text . "\tab{42} ") (bcStrings (4 10 icn23 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a24 F)) (text . "\tab{32} ") (bcStrings (4 10 irn24 PI)) (text . "\tab{42} ") (bcStrings (4 11 icn24 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a25 F)) (text . "\tab{32} ") (bcStrings (4 11 irn25 PI)) (text . "\tab{42} ") (bcStrings (4 12 icn25 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a26 F)) (text . "\tab{32} ") (bcStrings (4 13 irn26 PI)) (text . "\tab{42} ") (bcStrings (4 14 icn26 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a27 F)) (text . "\tab{32} ") (bcStrings (4 14 irn27 PI)) (text . "\tab{42} ") (bcStrings (4 15 icn27 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a28 F)) (text . "\tab{32} ") (bcStrings (4 15 irn28 PI)) (text . "\tab{42} ") (bcStrings (4 16 icn28 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a29 F)) (text . "\tab{32} ") (bcStrings (4 1 irn29 PI)) (text . "\tab{42} ") (bcStrings (4 5 icn29 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a30 F)) (text . "\tab{32} ") (bcStrings (4 2 irn30 PI)) (text . "\tab{42} ") (bcStrings (4 6 icn30 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a31 F)) (text . "\tab{32} ") (bcStrings (4 3 irn31 PI)) (text . "\tab{42} ") (bcStrings (4 7 icn31 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a32 F)) (text . "\tab{32} ") (bcStrings (4 4 irn32 PI)) (text . "\tab{42} ") (bcStrings (4 8 icn32 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a33 F)) (text . "\tab{32} ") (bcStrings (4 5 irn33 PI)) (text . "\tab{42} ") (bcStrings (4 9 icn33 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a34 F)) (text . "\tab{32} ") (bcStrings (4 6 irn34 PI)) (text . "\tab{42} ") (bcStrings (4 10 icn34 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a35 F)) (text . "\tab{32} ") (bcStrings (4 7 irn35 PI)) (text . "\tab{42} ") (bcStrings (4 11 icn35 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a36 F)) (text . "\tab{32} ") (bcStrings (4 8 irn36 PI)) (text . "\tab{42} ") (bcStrings (4 12 icn36 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a37 F)) (text . "\tab{32} ") (bcStrings (4 9 irn37 PI)) (text . "\tab{42} ") (bcStrings (4 13 icn37 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a38 F)) (text . "\tab{32} ") (bcStrings (4 10 irn38 PI)) (text . "\tab{42} ") (bcStrings (4 14 icn38 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a39 F)) (text . "\tab{32} ") (bcStrings (4 11 irn39 PI)) (text . "\tab{42} ") (bcStrings (4 15 icn39 PI)) (text . "\newline \tab{2}") (bcStrings (8 "-0.25" a40 F)) (text . "\tab{32} ") (bcStrings (4 12 irn40 PI)) (text . "\tab{42} ") (bcStrings (4 16 icn40 PI)) (text . "\blankline ") (text . "\menuitemstyle{} \tab{2} Abort :") (bcStrings (8 "true" abort_one EM)) (bcStrings (8 "true" abort_two EM)) (bcStrings (8 "true" abort_three EM))) htMakeDoneButton('"Continue",'f01mafGen) htpSetProperty(page,'n,n) htpSetProperty(page,'nz,nz) htpSetProperty(page,'licn,licn) htpSetProperty(page,'lirn,lirn) htpSetProperty(page,'droptl,droptl) htpSetProperty(page,'densw,densw) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01mafGen htPage == n := htpProperty(htPage,'n) nz := htpProperty(htPage,'nz) licn := htpProperty(htPage,'licn) lirn := htpProperty(htPage,'lirn) droptl := htpProperty(htPage,'droptl) densw := htpProperty(htPage,'densw) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..3 repeat abort := STRCONC((first y).1," ") y := rest y abortList := [abort,:abortList] astring := bcwords2liststring abortList while y repeat end := STRCONC ((first y).1," ") y := rest y mid := STRCONC ((first y).1," ") y := rest y top := STRCONC ((first y).1," ") y := rest y cList := [end,:cList] rList := [mid,:rList] matList := [top,:matList] for i in 1..(licn-nz) repeat cList := [:cList,'"0 "] matList := [:matList,'"0 "] for i in 1..(lirn-nz) repeat rList := [:rList,'"0 "] cstring := bcwords2liststring cList rstring := bcwords2liststring rList matstring := bcwords2liststring matList prefix := STRCONC('"f01maf(",STRINGIMAGE n,", ",STRINGIMAGE nz,", ") prefix := STRCONC(prefix,STRINGIMAGE licn,", ",STRINGIMAGE lirn,", ") prefix := STRCONC(prefix,astring,",[",matstring) prefix := STRCONC(prefix,"],[",rstring,"],[",cstring,"], ",droptl,", ",densw) linkGen STRCONC(prefix,", ",STRINGIMAGE ifail,")") f01mcf() == htInitPage("F01MCF - \htbitmap{ldlt} factorization of real symmetric positive-definite variable-bandwidth matrix",nil) htMakePage '( (domainConditions (isDomain F (Float))) (text . "\windowlink{Manual Page}{manpageXXf01mcf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01mcf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "Computes the Cholesky factorization of a real symmetric positive") (text . "-definite variable-bandwidth matrix {\it A} or order {\it n}. ") (text . "That is, {\it A = }\htbitmap{ldlt}, where {\it L} is ") (text . "a unit lower triangular matrix and {\it D} is a diagonal matrix.") (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2}") (text . "Enter the order {\em n} of the matrix A ") (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 number of elements: ") (text . "\newline\tab{2} ") (bcStrings (9 14 lal 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", 'f01mcfSolve) htShowPage() f01mcfSolve htPage == n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lal := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lal) objValUnwrap htpLabelSpadValue(htPage, 'lal) error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 (n = '6 and lal = '14) => f01mcfDefaultSolve(htPage,ifail) labelList := "append"/[f(i) for i in 1..lal] where f(i) == xnam := INTERN STRCONC ('"x",STRINGIMAGE i) [['bcStrings,[6, 0.0, xnam, 'F]]] nrowList := "append"/[g(j) for j in 1..n] where g(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 \tab{2} ") nrowList := [['text,:prefix],:nrowList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :labelList,:nrowList] page := htInitPage("F01MCF - \htbitmap{ldlt} factorization of real symmetric positive-definite variable-bandwidth matrix",nil) htSay '"\menuitemstyle{}\tab{2} Elements of matrix {\it A} in row by row " htSay '"order: \newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01mcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'lal,lal) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01mcfDefaultSolve (htPage,ifail) == n := '6 lal := '14 page := htInitPage("F01MCF - \htbitmap{ldlt} factorization of real symmetric positive-definite variable-bandwidth matrix",nil) htMakePage '( (domainConditions (isDomain PI (Positive Integer)) (isDomain F (Float))) (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Elements of matrix {\it A} in row by ") (text . "row order: ") (text . "\newline ") (bcStrings (6 "1.0" x1 F)) (bcStrings (6 "2.0" x2 F)) (bcStrings (6 "5.0" x3 F)) (bcStrings (6 "3.0" x4 F)) (bcStrings (6 "13.0" x5 F)) (bcStrings (6 "16.0" x6 F)) (bcStrings (6 "5.0" x7 F)) (bcStrings (6 "14.0" x8 F)) (bcStrings (6 "18.0" x9 F)) (bcStrings (6 "8.0" x10 F)) (bcStrings (6 "55.0" x11 F)) (bcStrings (6 "24.0" x12 F)) (bcStrings (6 "17.0" x13 F)) (bcStrings (6 "77.0" x14 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 ")) htMakeDoneButton('"Continue",'f01mcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'lal,lal) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01mcfGen htPage == n := htpProperty(htPage,'n) lal := htpProperty(htPage,'lal) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..n repeat right := STRCONC ((first y).1," ") y := rest y nrowList := [right,:nrowList] nrowstring := bcwords2liststring nrowList while y repeat right := STRCONC ((first y).1," ") y := rest y matList := [right,:matList] matstring := bcwords2liststring matList prefix := STRCONC('"f01mcf(",STRINGIMAGE n,", [",matstring,"], ") prefix := STRCONC(prefix,STRINGIMAGE lal,", [",nrowstring,"], ") linkGen STRCONC(prefix,STRINGIMAGE ifail,")") f01qcf() == htInitPage('"F01QCF - QR factorization or real m by n matrix (m \htbitmap{great=} n)",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01qcf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01qcf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Finds the QR factorization of a real {\it m} by {it n} ({\it m ") (text . "\htbitmap{great=} n}) matrix {\it A}, which ") (text . "is factorized as \htbitmap{f01qcf}, ") (text . "where {\it m > n} and {\it A = QR } when {\it m = n }, where ") (text . "{\it Q} is an {\it m} by {\it m } orthogonal matrix and {\it R} ") (text . "is an {\it n} by {\it n} upper triangular matrix. The {\it k}th ") (text . "transformation matrix,{\it Qk}, ") (text . "which is used to introduce zeros into the {\it k}th column of ") (text . "{\it A}, is given in the form ") (text . "\htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01qcf2}, ") (text . "\htbitmap{f01qcf3}, ") (text . "\htbitmap{zetak} is a scalar and ") (text . "\htbitmap{zk} is an (m-k) element vector. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) -- (text . "\blankline ") -- (text . "\newline ") -- (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda 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", 'f01qcfSolve) htShowPage() f01qcfSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 (m = '5 and n = '3) => f01qcfDefaultSolve(htPage,lda,ifail) matList := "append"/[f(i,n) for i in 1..lda] 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] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList] page := htInitPage("F01QCF - QR factorization or real m by n matrix (m \htbitmap{great=} n)",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: " htSay '"\newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01qcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qcfDefaultSolve (htPage,lda,ifail) == n := '3 m := '5 page := htInitPage('"F01QCF - QR factorization or real m by n matrix (m \htbitmap{great=} 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 "2.0" a11 F)) (bcStrings (6 "2.5" a12 F)) (bcStrings (6 "2.5" a13 F)) (text . "\newline \tab{2} ") (bcStrings (6 "2.0" a21 F)) (bcStrings (6 "2.5" a22 F)) (bcStrings (6 "2.5" a23 F)) (text . "\newline \tab{2} ") (bcStrings (6 "1.6" a31 F)) (bcStrings (6 "-0.4" a32 F)) (bcStrings (6 "2.8" a33 F)) (text . "\newline \tab{2} ") (bcStrings (6 "2.0" a41 F)) (bcStrings (6 "-0.5" a42 F)) (bcStrings (6 "0.5" a43 F)) (text . "\newline \tab{2} ") (bcStrings (6 "1.2" a51 F)) (bcStrings (6 "-0.3" a52 F)) (bcStrings (6 "-2.9" a53 F))) htMakeDoneButton('"Continue",'f01qcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qcfGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) lda := m ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist y := REVERSE y for i in 1..lda repeat for j in 1..n repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] prefix := STRCONC('"f01qcf(",STRINGIMAGE m,", ",STRINGIMAGE n,", ") prefix := STRCONC(prefix,STRINGIMAGE lda,", ",matstring,", ") prefix := STRCONC(prefix,STRINGIMAGE ifail,")") linkGen prefix f01qdf() == htInitPage('"F01QDF - Operations with orthogonal matrices, compute {\it QB} or \htbitmap{f01qdf} after factorization by F01QCF or F01QDF",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01qdf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01qdf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Performs one of the transformations {\it B = QB or B = }") (text . "\htbitmap{f01qdf}, where {\it B} is a real {\it m} ") (text . "by {\it ncolb} matrix and {\it Q} is an {\it m} by {\it m} ") (text . "orthogonal matrix assumed to be given by {\it Q = }") (text . "\htbitmap{f01qdf1}, \htbitmap{f01qdf2} ") (text . "being given in the form ") (text . "\htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01qcf2}, ") (text . "\htbitmap{f01qcf3}, ") (text . "\htbitmap{zetak} is a scalar and ") (text . "\htbitmap{zk} is an (m-k) element vector. ") (text . "The routine is intended for use following F01QCF or F01QFF. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) -- (text . "\blankline ") -- (text . "\newline ") -- (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\tab{32} \menuitemstyle{} \tab{34} ") -- (text . "First dimension of B, {\it ldb} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda PI)) -- (text . "\tab{34} ") -- (bcStrings (6 5 ldb PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Number of columns of matrix B {\it ncolb}: ") (text . "\newline \tab{2} ") (bcStrings (6 2 ncolb PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Transformation to be performed: ") (radioButtons trans (" " " {\it B = QB}" no_trans) (" " " {\it B =} \htbitmap{f01qdf}" trans)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Where the elements can be found: ") (radioButtons wheret (" " " the elements of \zeta are in A" in_a) (" " " the elements of \zeta are in ZETA, returned by F01QCF/F01QFF" seperate)) (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", 'f01qdfSolve) htShowPage() f01qdfSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) ldb := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ldb) -- objValUnwrap htpLabelSpadValue(htPage, 'ldb) ncolb := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncolb) objValUnwrap htpLabelSpadValue(htPage, 'ncolb) operation := htpButtonValue(htPage,'trans) trans := operation = 'no_trans => '"n" '"t" elements := htpButtonValue(htPage,'wheret) wheret := elements = 'in_a => '"i" '"s" error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 ((m = '5 and n = '3) and ncolb = '2) => f01qdfDefaultSolve(htPage,lda,ldb,trans,wheret,ifail) matList := "append"/[fa(i,n) for i in 1..lda] where fa(i,n) == labelList := "append"/[ga(i,j) for j in 1..n] where ga(i,j) == anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[6, "0.0", anam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] bList := "append"/[fb(i,ncolb) for i in 1..ldb] where fb(i,ncolb) == labelList := "append"/[gb(i,j) for j in 1..ncolb] where gb(i,j) == bnam := INTERN STRCONC ('"b",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[6, "0.0", bnam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of {\it B}: ") bList := [['text,:prefix],:bList] zList := "append"/[fz(i) for i in 1..n] where fz(i) == znam := INTERN STRCONC ('"z",STRINGIMAGE i) [['bcStrings,[6, "0.0", znam, 'F]]] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of \zeta ") prefix := STRCONC(prefix,"(if required): \newline \tab{2}") zList := [['text,:prefix],:zList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList,:bList,:zList] page := htInitPage('"F01QDF - Operations with orthogonal matrices, compute {\it QB} or \htbitmap{f01qdf} after factorization by F01QCF or F01QDF",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: " htSay '"\newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01qdfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) -- htpSetProperty(page,'ldb,ldb) htpSetProperty(page,'ncolb,ncolb) htpSetProperty(page,'trans,trans) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qdfDefaultSolve (htPage,lda,ldb,trans,wheret,ifail) == n := '3 m := '5 ncolb := '2 page := htInitPage('"F01QDF - Operations with orthogonal matrices, compute {\it QB} or \htbitmap{f01qdf} after factorization by F01QCF or F01QDF",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 "2.0" a11 F)) (bcStrings (6 "2.5" a12 F)) (bcStrings (6 "2.5" a13 F)) (text . "\newline \tab{2} ") (bcStrings (6 "2.0" a21 F)) (bcStrings (6 "2.5" a22 F)) (bcStrings (6 "2.5" a23 F)) (text . "\newline \tab{2} ") (bcStrings (6 "1.6" a31 F)) (bcStrings (6 "-0.4" a32 F)) (bcStrings (6 "2.8" a33 F)) (text . "\newline \tab{2} ") (bcStrings (6 "2.0" a41 F)) (bcStrings (6 "-0.5" a42 F)) (bcStrings (6 "0.5" a43 F)) (text . "\newline \tab{2} ") (bcStrings (6 "1.2" a51 F)) (bcStrings (6 "-0.3" a52 F)) (bcStrings (6 "-2.9" a53 F)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2} Enter values of {\it B}: ") (text . "\newline \tab{2} ") (bcStrings (6 "1.1" b11 F)) (bcStrings (6 "0.0" b12 F)) (text . "\newline \tab{2} ") (bcStrings (6 "0.9" b21 F)) (bcStrings (6 "0.0" b22 F)) (text . "\newline \tab{2} ") (bcStrings (6 "0.6" b31 F)) (bcStrings (6 "1.32" b32 F)) (text . "\newline \tab{2} ") (bcStrings (6 "0.0" b41 F)) (bcStrings (6 "1.1" b42 F)) (text . "\newline \tab{2} ") (bcStrings (6 "-0.8" b51 F)) (bcStrings (6 "-0.26" b52 F)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Enter values of \zeta (if required): ") (text . "\newline \tab{2} ") (bcStrings (10 "0.0" z1 F)) (bcStrings (10 "0.0" z2 F)) (bcStrings (10 "0.0" z3 F)) (text . "\blankline ")) htMakeDoneButton('"Continue",'f01qdfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) -- htpSetProperty(page,'ldb,ldb) htpSetProperty(page,'ncolb,ncolb) htpSetProperty(page,'trans,trans) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qdfGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) -- ldb := htpProperty(htPage,'ldb) lda := m ldb := m ncolb := htpProperty(htPage,'ncolb) trans := htpProperty(htPage,'trans) wheret := htpProperty(htPage,'wheret) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..n repeat left := STRCONC((first y).1," ") y := rest y zetalist := [left,:zetalist] zetastring := bcwords2liststring zetalist y := REVERSE y for i in 1..lda repeat for j in 1..n repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] for i in 1..ldb repeat for j in 1..ncolb repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y bform := [:bform,rowList] rowList := [] bstring := bcwords2liststring [bcwords2liststring x for x in bform] prefix := STRCONC('"f01qdf(_"",trans,"_",_"",wheret,"_",",STRINGIMAGE m,", ") prefix := STRCONC(prefix,STRINGIMAGE n,", ",matstring,", ",STRINGIMAGE lda) prefix := STRCONC(prefix,",[",zetastring,"],",STRINGIMAGE ncolb,", ") prefix := STRCONC(prefix,STRINGIMAGE ldb,", ",bstring,", ",STRINGIMAGE ifail,")") linkGen prefix f01qef() == htInitPage('"F01QEF - Operations with orthogonal matrices, form columns of {\it Q} after factorization by F01QCF or F01QFF",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01qef} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01qef| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Returns the first {\it ncolq} columns of the real {\it m} by ") (text . "{\it n} orthogonal matrix {\it Q}, where {\it Q} is assumed ") (text . "to be given by {\it Q = }\htbitmap{f01qdf1}, ") (text . "\htbitmap{f01qdf2} being given in the form ") (text . "\htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01qcf2}, ") (text . "\htbitmap{f01qcf3}, ") (text . "\htbitmap{zetak} is a scalar and ") (text . "\htbitmap{zk} is an (m-k) element vector. ") (text . "The routine is intended for use following F01QCF or F01QFF. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\tab{32} \menuitemstyle{} \tab{34} ") (text . "Number columns of matrix Q {\it ncolq}: ") (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda PI)) -- (text . "\tab{34} ") (bcStrings (6 5 ncolq PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Where the elements can be found: ") (radioButtons wheret (" " " the elements of \zeta are in ZETA, returned by F01QCF/F01QFF" subsequent) (" " " the elements of \zeta are in A" initial)) (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", 'f01qefSolve) htShowPage() f01qefSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) ncolq := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncolq) objValUnwrap htpLabelSpadValue(htPage, 'ncolq) elements := htpButtonValue(htPage,'wheret) wheret := elements = 'initial => '"i" '"s" error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 ((m = '5 and n = '3) and ncolq = '5) => f01qefDefaultSolve(htPage,lda,wheret,ifail) matList := "append"/[fa(i,ncolq) for i in 1..lda] where fa(i,ncolq) == labelList := "append"/[ga(i,j) for j in 1..ncolq] where ga(i,j) == anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[7, "0.0", anam, 'F]]] prefix := ('"\newline ") labelList := [['text,:prefix],:labelList] zList := "append"/[fz(i) for i in 1..n] where fz(i) == znam := INTERN STRCONC ('"z",STRINGIMAGE i) [['bcStrings,[7, "0.0", znam, 'F]]] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of \zeta ") prefix := STRCONC(prefix,"(if required): \newline ") zList := [['text,:prefix],:zList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList,:zList] page := htInitPage('"F01QEF - Operations with orthogonal matrices, form columns of {\it Q} after factorization by F01QCF or F01QFF",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it Q}: " htSay '"\newline " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01qefGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ncolq,ncolq) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qefDefaultSolve (htPage,lda,wheret,ifail) == n := '3 m := '5 ncolq := '5 page := htInitPage('"F01QEF - Operations with orthogonal matrices, form columns of {\it Q} after factorization by F01QCF or F01QFF",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain I (Integer))) (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Enter values of {\it Q}") (text . "(in this case returned by the default entries of F01QCF) : ") (text . "\newline ") (bcStrings (7 "-4.0" a11 F)) (bcStrings (7 "-2.0" a12 F)) (bcStrings (7 "-3.0" a13 F)) (bcStrings (7 "0.0" a14 F)) (bcStrings (7 "0.0" a15 F)) (text . "\newline ") (bcStrings (7 "0.4085" a21 F)) (bcStrings (7 "-3.0" a22 F)) (bcStrings (7 "-2.0" a23 F)) (bcStrings (7 "0.0" a24 F)) (bcStrings (7 "0.0" a25 F)) (text . "\newline ") (bcStrings (7 "0.3266" a31 F)) (bcStrings (7 "-0.4619" a32 F)) (bcStrings (7 "-4.0" a33 F)) (bcStrings (7 "0.0" a34 F)) (bcStrings (7 "0.0" a35 F)) (text . "\newline ") (bcStrings (7 "0.4082" a41 F)) (bcStrings (7 "-0.5774" a42 F)) (bcStrings (7 "0.0" a43 F)) (bcStrings (7 "0.0" a44 F)) (bcStrings (7 "0.0" a45 F)) (text . "\newline ") (bcStrings (7 "0.2449" a51 F)) (bcStrings (7 "-0.3464" a52 F)) (bcStrings (7 "-0.6326" a53 F)) (bcStrings (7 "0.0" a54 F)) (bcStrings (7 "0.0" a55 F)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Enter values of \zeta: ") (text . "\newline ") (bcStrings (10 "1.2247" z1 F)) (bcStrings (10 "1.1547" z2 F)) (bcStrings (10 "1.2649" z3 F)) (text . "\blankline ")) htMakeDoneButton('"Continue",'f01qefGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ncolq,ncolq) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01qefGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) lda := m ncolq := htpProperty(htPage,'ncolq) wheret := htpProperty(htPage,'wheret) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..n repeat left := STRCONC((first y).1," ") y := rest y zetalist := [left,:zetalist] zetastring := bcwords2liststring zetalist y := REVERSE y for i in 1..lda repeat for j in 1..ncolq repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] prefix := STRCONC('"f01qef(_"",wheret,"_",",STRINGIMAGE m,", ") prefix := STRCONC(prefix,STRINGIMAGE n,", ",STRINGIMAGE lda,", ") prefix := STRCONC(prefix,STRINGIMAGE ncolq,",[",zetastring,"],") prefix := STRCONC(prefix,matstring,", ",STRINGIMAGE ifail,")") linkGen prefix f01rcf() == htInitPage('"F01RCF - {\it QR} factorization of complex {\it m} by {\it n} matrix (m \htbitmap{great=} n)",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01rcf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01rcf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Finds the QR factorization of the complex m by n matrix {\it A},") (text . " which is factorized as \htbitmap{f01qcf}, where m > n") (text . " and A = QR when m = n , where Q is an m by m unitary matrix ") (text . "and R is an n by n upper triangular matrix with real diagonal ") (text . "elements. The {\it k}th transformation matrix,{\it Qk}, ") (text . "which is used to introduce zeros into the {\it k}th column of ") (text . "{\it A}, is given in the form ") (text . "\htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01rdf2}, ") (text . "\htbitmap{f01qcf3}, ") (text . "\htbitmap{gammak} is a scalar for which Re ") (text . "\htbitmap{gammak} = 1.0, \htbitmap{zetak} ") (text . "is a real scalar and \htbitmap{zk} is an ") (text . "(m-k) element vector. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) -- (text . "\blankline ") -- (text . "\newline ") -- (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda 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", 'f01rcfSolve) htShowPage() f01rcfSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 (m = '5 and n = '3) => f01rcfDefaultSolve(htPage,ifail) matList := "append"/[fa(i,n) for i in 1..lda] where fa(i,n) == labelList := "append"/[ga(i,j) for j in 1..n] where ga(i,j) == anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[16, "0.0 + 0.0*%i", anam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList] page := htInitPage('"F01RCF - {\it QR} factorization of complex {\it m} by {\it n} matrix (m \htbitmap{great=} n)",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: " htSay '"\newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01rcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01rcfDefaultSolve (htPage,ifail) == n := '3 m := '5 lda := '5 page := htInitPage('"F01RCF - {\it QR} factorization of complex {\it m} by {\it n} matrix (m \htbitmap{great=} 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 (15 "0.5*%i" a11 F)) (bcStrings (15 "-0.5 + 1.5*%i" a12 F)) (bcStrings (15 "-1.0 + 1.0*%i" a13 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.4 + 0.3*%i" a21 F)) (bcStrings (15 "0.9 + 1.3*%i" a22 F)) (bcStrings (15 "0.2 + 1.4*%i" a23 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.4" a31 F)) (bcStrings (15 "-0.4 + 0.4*%i" a32 F)) (bcStrings (15 "1.8" a33 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.3 - 0.4*%i" a41 F)) (bcStrings (15 "0.1 + 0.7*%i" a42 F)) (bcStrings (15 "0.0" a43 F)) (text . "\newline \tab{2} ") (bcStrings (15 "-0.3*%i" a51 F)) (bcStrings (15 "0.3 + 0.3*%i" a52 F)) (bcStrings (15 "2.4*%i" a53 F)) (text . "\blankline ")) htMakeDoneButton('"Continue",'f01rcfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01rcfGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) lda := m ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist y := REVERSE y for i in 1..lda repeat for j in 1..n repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] prefix := STRCONC('"f01rcf(",STRINGIMAGE m,", ",STRINGIMAGE n,", ") prefix := STRCONC(prefix,STRINGIMAGE lda,", ",matstring) linkGen STRCONC(prefix,", ",STRINGIMAGE ifail,")") f01rdf() == htInitPage('"F01RDF - Operations with unitary matrices, compute {\it QB} or \htbitmap{f01rdf} after factorization by F01QCF",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01rdf} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01rdf| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Performs one of the transformations B = QB or B = ") (text . "\htbitmap{f01rdf}, where B is an m ") (text . "by ncolb matrix and Q is an m by m ") (text . "unitary matrix assumed to be given by Q = ") (text . "\htbitmap{f01rdf1}, \htbitmap{f01qdf2} ") (text . "being given in the form \htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01rdf2}, \htbitmap{f01qcf3}") (text . ", \htbitmap{gammak} is a scalar for which Re ") (text . "\htbitmap{gammak} = 1.0, \htbitmap{zetak} ") (text . "is a real scalar and \htbitmap{zk} is an ") (text . "(m-k) element vector. ") (text . "The routine is intended for use following F01QCF or F01QFF. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) -- (text . "\blankline ") -- (text . "\newline ") -- (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\tab{32} \menuitemstyle{} \tab{34} ") -- (text . "First dimension of B, {\it ldb} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda PI)) -- (text . "\tab{34} ") -- (bcStrings (6 5 ldb PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Number of columns of matrix B {\it ncolb}: ") (text . "\newline \tab{2} ") (bcStrings (6 2 ncolb PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Transformation to be performed: ") (radioButtons trans (" " " {\it B = QB}" no_trans) (" " " {\it B =} \htbitmap{f01rdf} (Conjugate Transpose)" trans)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Where the elements can be found: ") (radioButtons wheret (" " " the elements of \theta are in A" in_a) (" " " the elements of \theta are in THETA" seperate)) (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", 'f01rdfSolve) htShowPage() f01rdfSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) ldb := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ldb) -- objValUnwrap htpLabelSpadValue(htPage, 'ldb) ncolb := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncolb) objValUnwrap htpLabelSpadValue(htPage, 'ncolb) operation := htpButtonValue(htPage,'trans) trans := operation = 'no_trans => '"n" '"c" elements := htpButtonValue(htPage,'wheret) wheret := elements = 'in_a => '"i" '"c" error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 ((m = '5 and n = '3) and ncolb = '2) => f01rdfDefaultSolve(htPage,lda,ldb,trans,wheret,ifail) matList := "append"/[fa(i,n) for i in 1..lda] where fa(i,n) == labelList := "append"/[ga(i,j) for j in 1..n] where ga(i,j) == anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[16, "0.0 + 0.0*%i", anam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] bList := "append"/[fb(i,ncolb) for i in 1..ldb] where fb(i,ncolb) == labelList := "append"/[gb(i,j) for j in 1..ncolb] where gb(i,j) == bnam := INTERN STRCONC ('"b",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[16, "0.0 + 0.0*%i", bnam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of {\it B}: ") bList := [['text,:prefix],:bList] zList := "append"/[fz(i) for i in 1..n] where fz(i) == znam := INTERN STRCONC ('"z",STRINGIMAGE i) [['bcStrings,[16, "0.0", znam, 'F]]] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of \theta ") prefix := STRCONC(prefix,"(if required): \newline \tab{2}") zList := [['text,:prefix],:zList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList,:bList,:zList] page := htInitPage('"F01RDF - Operations with orthogonal matrices, compute {\it QB} or \htbitmap{f01rdf} after factorization by F01QCF or F01RDF",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: " htSay '"\newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01rdfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) -- htpSetProperty(page,'ldb,ldb) htpSetProperty(page,'ncolb,ncolb) htpSetProperty(page,'trans,trans) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01rdfDefaultSolve (htPage,lda,ldb,trans,wheret,ifail) == n := '3 m := '5 ncolb := '2 page := htInitPage('"F01RDF - Operations with orthogonal matrices, compute {\it QB} or \htbitmap{f01rdf} after factorization by F01QCF or F01RDF",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 (15 "0.5*%i" a11 F)) (bcStrings (15 "-0.5 + 1.5*%i" a12 F)) (bcStrings (15 "-1.0 + 1.0*%i" a13 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.4 + 0.3*%i" a21 F)) (bcStrings (15 "0.9 + 1.3*%i" a22 F)) (bcStrings (15 "0.2 + 1.4*%i" a23 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.4" a31 F)) (bcStrings (15 "-0.4 + 0.4*%i" a32 F)) (bcStrings (15 "1.8" a33 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.3 - 0.4*%i" a41 F)) (bcStrings (15 "0.1 + 0.7*%i" a42 F)) (bcStrings (15 "0.0" a43 F)) (text . "\newline \tab{2} ") (bcStrings (15 "-0.3*%i" a51 F)) (bcStrings (15 "0.3 + 0.3*%i" a52 F)) (bcStrings (15 "2.4" a53 F)) (text . "\blankline ") (text . "\menuitemstyle{}\tab{2} Enter values of {\it B}: ") (text . "\newline \tab{2} ") (bcStrings (15 "-0.55 + 1.05*%i" b11 F)) (bcStrings (15 "0.45 + 1.05*%i" b12 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.49 + 0.93*%i" b21 F)) (bcStrings (15 "1.09 + 0.13*%i" b22 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.56 - 0.16*%i" b31 F)) (bcStrings (15 "0.64 + 0.16*%i" b32 F)) (text . "\newline \tab{2} ") (bcStrings (15 "0.39 + 0.23*%i" b41 F)) (bcStrings (15 "-0.39 - 0.23*%i" b42 F)) (text . "\newline \tab{2} ") (bcStrings (15 "1.13 + 0.83*%i" b51 F)) (bcStrings (15 "-1.13 + 0.77*%i" b52 F)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Enter values of \theta (if required): ") (text . "\newline \tab{2} ") (bcStrings (15 "0.0" z1 F)) (bcStrings (15 "0.0" z2 F)) (bcStrings (15 "0.0" z3 F)) (text . "\blankline ")) htMakeDoneButton('"Continue",'f01rdfGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) -- htpSetProperty(page,'ldb,ldb) htpSetProperty(page,'ncolb,ncolb) htpSetProperty(page,'trans,trans) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01rdfGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) -- ldb := htpProperty(htPage,'ldb) lda := m ldb := m ncolb := htpProperty(htPage,'ncolb) trans := htpProperty(htPage,'trans) wheret := htpProperty(htPage,'wheret) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..n repeat left := STRCONC((first y).1," ") y := rest y zetalist := [left,:zetalist] zetastring := bcwords2liststring zetalist y := REVERSE y for i in 1..lda repeat for j in 1..n repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] for i in 1..ldb repeat for j in 1..ncolb repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y bform := [:bform,rowList] rowList := [] bstring := bcwords2liststring [bcwords2liststring x for x in bform] prefix := STRCONC('"f01rdf(_"",trans,"_",_"",wheret,"_",",STRINGIMAGE m,", ") prefix := STRCONC(prefix,STRINGIMAGE n,", ",matstring,", ",STRINGIMAGE lda) prefix := STRCONC(prefix,",[",zetastring,"],",STRINGIMAGE ncolb,", ") prefix := STRCONC(prefix,STRINGIMAGE ldb,", ",bstring,", ",STRINGIMAGE ifail,")") linkGen prefix f01ref() == htInitPage('"F01REF - Operations with unitary matrices, form columns of {\it Q} after factorization by F01RCF",nil) htMakePage '( (domainConditions (isDomain F (Float)) (isDomain PI (PositiveInteger))) (text . "\windowlink{Manual Page}{manpageXXf01ref} for this routine ") (text . "\newline ") (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|f01ref| '|NagMatrixOperationsPackage|)} for this routine") (text . "\newline \horizontalline ") (text . "\newline ") (text . "Returns the first {\it ncolq} columns of the real {\it m} by ") (text . "{\it m} unitary matrix {\it Q}, where {\it Q} is assumed ") (text . "to be given by {\it Q = }\htbitmap{f01rdf1}, ") (text . "\htbitmap{f01qdf2} being given in the form ") (text . "\htbitmap{f01qcf1}, ") (text . "where \htbitmap{f01rdf2}, ") (text . "\htbitmap{f01qcf3}, ") (text . "\htbitmap{gammak} is a scalar for which Re ") (text . "\htbitmap{gammak} = 1.0, \htbitmap{zetak} ") (text . "is a real scalar and \htbitmap{zk} is an ") (text . "(m-k) element vector. ") (text . "The routine is intended for use following F01RCF or F01RFF. ") (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 5 m PI)) (text . "\tab{34} ") (bcStrings (6 3 n PI)) -- (text . "\blankline ") -- (text . "\newline ") -- (text . "\menuitemstyle{} \tab{2} ") -- (text . "\newline First dimension of A, {\it lda} ") -- (text . "\htbitmap{great=} m: ") -- (text . "\newline \tab{2} ") -- (bcStrings (6 5 lda PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Required number of columns of matrix Q {\it ncolq}: ") (text . "\newline \tab{2} ") (bcStrings (6 2 ncolq PI)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{} \tab{2} ") (text . "\newline \tab{2} ") (text . "Where the elements can be found: ") (radioButtons wheret (" " " the elements of \theta are in THETA" seperate) (" " " the elements of \theta are in A" in_a)) (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", 'f01refSolve) htShowPage() f01refSolve htPage == m := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) objValUnwrap htpLabelSpadValue(htPage, 'm) n := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) objValUnwrap htpLabelSpadValue(htPage, 'n) lda := m -- $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) -- objValUnwrap htpLabelSpadValue(htPage, 'lda) ncolq := $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncolq) objValUnwrap htpLabelSpadValue(htPage, 'ncolq) elements := htpButtonValue(htPage,'wheret) wheret := elements = 'in_a => '"i" '"s" error := htpButtonValue(htPage,'ifail) ifail := error = 'one => '1 '-1 ((m = '5 and n = '3) and ncolq = '2) => f01refDefaultSolve(htPage,lda,wheret,ifail) matList := "append"/[fa(i,n) for i in 1..lda] where fa(i,n) == labelList := "append"/[ga(i,j) for j in 1..n] where ga(i,j) == anam := INTERN STRCONC ('"a",STRINGIMAGE i, STRINGIMAGE j) [['bcStrings,[20, "0.0 + 0.0*%i", anam, 'F]]] prefix := ('"\newline \tab{2} ") labelList := [['text,:prefix],:labelList] zList := "append"/[fz(i) for i in 1..n] where fz(i) == znam := INTERN STRCONC ('"z",STRINGIMAGE i) [['bcStrings,[20, "0.0", znam, 'F]]] prefix := ("\blankline \menuitemstyle{}\tab{2} Enter values of \theta ") prefix := STRCONC(prefix,"(if required): \newline \tab{2}") zList := [['text,:prefix],:zList] equationPart := [ '(domainConditions (isDomain P (Polynomial $EmptyMode)) (isDomain S (String)) (isDomain F (Float)) (isDomain PI (PositiveInteger))), :matList,:zList] page := htInitPage('"F01REF - Operations with unitary matrices, form columns of {\it Q} after factorization by F01RCF",nil) htSay '"\newline \menuitemstyle{}\tab{2} Enter values of {\it A}: " htSay '"\newline \tab{2} " htMakePage equationPart htSay '"\blankline " htMakeDoneButton('"Continue",'f01refGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ncolq,ncolq) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01refDefaultSolve (htPage,lda,wheret,ifail) == n := '3 m := '5 ncolq := '2 page := htInitPage('"F01REF - Operations with unitary matrices, form columns of {\it Q} after factorization by F01RCF",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 (16 "1" a11 F)) (bcStrings (16 "1 + %i" a12 F)) (bcStrings (16 "1 + %i" a13 F)) (text . "\newline \tab{2} ") (bcStrings (16 "-0.2-0.4*%i" a21 F)) (bcStrings (16 "-2" a22 F)) (bcStrings (16 "-1 - %i" a23 F)) (text . "\newline \tab{2} ") (bcStrings (16 "-0.32 - 0.16*%i" a31 F)) (bcStrings (16 "-0.3505+0.263*%i" a32 F)) (bcStrings (16 "-3" a33 F)) (text . "\newline \tab{2} ") (bcStrings (16 "-0.4 + 0.2*%i" a41 F)) (bcStrings (16 "0.5477*%i" a42 F)) (bcStrings (16 "0.0" a43 F)) (text . "\newline \tab{2} ") (bcStrings (16 "-0.12 + 0.24*%i" a51 F)) (bcStrings (16 "0.1972+0.2629*%i" a52 F)) (bcStrings (16 "0.6325" a53 F)) (text . "\blankline ") (text . "\newline ") (text . "\menuitemstyle{}\tab{2} Enter values of \theta: ") (text . "\newline \tab{2} ") (bcStrings (16 "1 + 0.5*%i" z1 F)) (bcStrings (16 "1.0954-0.3333*%i" z2 F)) (bcStrings (16 "1.2649-1.1565*%i" z3 F)) (text . "\blankline ")) htMakeDoneButton('"Continue",'f01refGen) htpSetProperty(page,'n,n) htpSetProperty(page,'m,m) -- htpSetProperty(page,'lda,lda) htpSetProperty(page,'ncolq,ncolq) htpSetProperty(page,'wheret,wheret) htpSetProperty(page,'ifail,ifail) htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) htShowPage() f01refGen htPage == n := htpProperty(htPage,'n) m := htpProperty(htPage,'m) -- lda := htpProperty(htPage,'lda) lda := m ncolq := htpProperty(htPage,'ncolq) wheret := htpProperty(htPage,'wheret) ifail := htpProperty(htPage,'ifail) alist := htpInputAreaAlist htPage y := alist for i in 1..n repeat left := STRCONC((first y).1," ") y := rest y thetalist := [left,:thetalist] thetastring := bcwords2liststring thetalist y := REVERSE y for i in 1..lda repeat for j in 1..n repeat elm := STRCONC((first y).1," ") rowList := [:rowList,elm] y := rest y matform := [:matform,rowList] rowList := [] matstring := bcwords2liststring [bcwords2liststring x for x in matform] prefix := STRCONC('"f01ref(_"",wheret,"_",",STRINGIMAGE m,", ") prefix := STRCONC(prefix,STRINGIMAGE n,", ",STRINGIMAGE ncolq,", ") prefix := STRCONC(prefix,STRINGIMAGE lda,",[",thetastring,"],") prefix := STRCONC(prefix,matstring,", ",STRINGIMAGE ifail,")") linkGen prefix @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}