aboutsummaryrefslogtreecommitdiff
path: root/src/interp/nag-f01.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/nag-f01.boot')
-rw-r--r--src/interp/nag-f01.boot2235
1 files changed, 0 insertions, 2235 deletions
diff --git a/src/interp/nag-f01.boot b/src/interp/nag-f01.boot
deleted file mode 100644
index 69323b88..00000000
--- a/src/interp/nag-f01.boot
+++ /dev/null
@@ -1,2235 +0,0 @@
--- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
--- All rights reserved.
--- Copyright (C) 2007, Gabriel Dos Reis.
--- 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.
-
-
-import '"macros"
-)package "BOOT"
-
-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
-