Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / ahcon.f
Size: Mime:
€]q(cpygments.token
_TokenType
qXNameqXLabelq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXTagq†q…qq}q(hh	]q…qRqh
hubhhXEntityq†q…qq}q(hh	]q hhhXDBSq!‡q"…q#q$}q%(hh	]q&…q'Rq(h
huba…q)Rq*h
hh!h$ubhhX	Exceptionq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhX	Decoratorq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhXClassq;†q<…q=q>}q?(hh	]q@(hhh;h!‡qA…qBqC}qD(hh	]qE…qFRqGh
h>ubhhh;XStartqH‡qI…qJqK}qL(hh	]qM…qNRqOh
h>ube…qPRqQh
hhHhKh!hCubhhXVariableqR†qS…qTqU}qV(hh	]qW(hhhRX	AnonymousqX‡qY…qZq[}q\(hh	]q]…q^Rq_h
hUubhhhRh;‡q`…qaqb}qc(hh	]qd…qeRqfh
hUubhhhRXMagicqg‡qh…qiqj}qk(hh	]ql…qmRqnh
hUubhhhRXGlobalqo‡qp…qqqr}qs(hh	]qt…quRqvh
hUubhhhRXInstanceqw‡qx…qyqz}q{(hh	]q|…q}Rq~h
hUube…qRq€h
hh;hbhohrhwhzhghjhXh[ubhhX	Attributeq†q‚…qƒq„}q…(hh	]q†hhhhR‡q‡…qˆq‰}qŠ(hh	]q‹…qŒRqh
h„uba…qŽRqh
hhRh‰ubhhX	Namespaceq†q‘…q’q“}q”(hh	]q•…q–Rq—h
hubhhXPropertyq˜†q™…qšq›}qœ(hh	]q…qžRqŸh
hubhhXSymbolq †q¡…q¢q£}q¤(hh	]q¥…q¦Rq§h
hubhhXClassesq¨†q©…qªq«}q¬(hh	]q­…q®Rq¯h
hubhhXPseudoq°†q±…q²q³}q´(hh	]qµ…q¶Rq·h
hubhhhXOperatorq¸†q¹…qºq»}q¼(hh	]q½…q¾Rq¿h
hubhhXBuiltinqqEqqÃ}qÄ(hh	]qÅ(hhhÀh°‡qƅqǁqÈ}qÉ(hh	]qʅqËRqÌh
hÃubhhhÀXTypeq͇q΅qρqÐ}qÑ(hh	]q҅qÓRqÔh
hÃube…qÕRqÖh
hh°hÈhÍhÐubhhXFieldq׆q؅qفqÚ}qÛ(hh	]q܅qÝRqÞh
hubhhXOtherq߆qà…qáqâ}qã(hh	]qähhhßXMemberqå‡qæ…qçqè}qé(hh	]qê…qëRqìh
hâuba…qíRqîh
hhåhèubhhXFunctionqï†qð…qñqò}qó(hh	]qôhhhïhg‡qõ…qöq÷}qø(hh	]qù…qúRqûh
hòuba…qüRqýh
hhgh÷ubhhh͆qþ…qÿr}r(hh	]r…rRrh
hubhhXConstantr†r…rr}r	(hh	]r
…rRrh
hube…r
Rrh
h)…rr}r(hh	]r(hXEscaper…r…rr}r(hh	]r…rRrh
jubhh¸…r…rr}r(hh	]r(hh¸h!†r …r!r"}r#(hh	]r$…r%Rr&h
jubhh¸XWordr'†r(…r)r*}r+(hh	]r,…r-Rr.h
jube…r/Rr0h
jj'j*h!j"ubhhXLiteralr1…r2…r3r4}r5(hh	]r6(hj1h߆r7…r8r9}r:(hh	]r;…r<Rr=h
j4ubhj1XCharr>†r?…r@rA}rB(hh	]rC…rDRrEh
j4ubhj1XDaterF†rG…rHrI}rJ(hh	]rK…rLRrMh
j4ubhj1XScalarrN†rO…rPrQ}rR(hh	]rShj1jNXPlainrT‡rU…rVrW}rX(hh	]rY…rZRr[h
jQuba…r\Rr]h
j4jTjWubhj1XStringr^†r_…r`ra}rb(hh	]rc(hj1j^XInterpolrd‡re…rfrg}rh(hh	]ri…rjRrkh
jaubhj1j^X	Delimeterrl‡rm…rnro}rp(hh	]rq…rrRrsh
jaubhj1j^j>‡rt…rurv}rw(hh	]rx…ryRrzh
jaubhj1j^h ‡r{…r|r}}r~(hh	]r…r€Rrh
jaubhj1j^XSingler‚‡rƒ…r„r…}r†(hh	]r‡…rˆRr‰h
jaubhj1j^h߇rŠ…r‹rŒ}r(hh	]rŽ…rRrh
jaubhj1j^XBacktickr‘‡r’…r“r”}r•(hh	]r–…r—Rr˜h
jaubhj1j^j‡r™…ršr›}rœ(hh	]r…ržRrŸh
jaubhj1j^XRegexr ‡r¡…r¢r£}r¤(hh	]r¥…r¦Rr§h
jaubhj1j^XMomentr¨‡r©…rªr«}r¬(hh	]r­…r®Rr¯h
jaubhj1j^XBooleanr°‡r±…r²r³}r´(hh	]rµ…r¶Rr·h
jaubhj1j^X	Characterr¸‡r¹…rºr»}r¼(hh	]r½…r¾Rr¿h
jaubhj1j^X	DelimiterrÀ‡rÁ…rrÃ}rÄ(hh	]rÅ…rÆRrÇh
jaubhj1j^XDocrȇrÉ…rʁrË}rÌ(hh	]rÍ…rÎRrÏh
jaubhj1j^h‡rÐ…rсrÒ}rÓ(hh	]rÔ…rÕRrÖh
jaubhj1j^XAffixrׇrØ…rفrÚ}rÛ(hh	]rÜ…rÝRrÞh
jaubhj1j^XHeredocr߇rà…rárâ}rã(hh	]rä…råRræh
jaubhj1j^XDoublerç‡rè…rérê}rë(hh	]rì…ríRrîh
jaubhj1j^XInterprï‡rð…rñrò}ró(hh	]rô…rõRröh
jaubhj1j^XAtomr÷‡rø…rùrú}rû(hh	]rü…rýRrþh
jaube…rÿRrh
j4j×jÚj‘j”j>jvjÀjÃjÈjËjçjêjj›jßjâjdjghßjŒj j£j‚j…h j}j¸j»j¨j«jïjòj°j³jljoj÷júhjÒubhj1XNumberr†r…rr}r(hh	]r(hj1jXFloatr‡r…r	r
}r(hh	]r…r
Rrh
jubhj1jXDecr‡r…rr}r(hh	]r…rRrh
jubhj1jXRadixr‡r…rr}r(hh	]r…rRrh
jubhj1jXOctr‡r …r!r"}r#(hh	]r$…r%Rr&h
jubhj1jXBinr'‡r(…r)r*}r+(hh	]r,…r-Rr.h
jubhj1jh‡r/…r0r1}r2(hh	]r3…r4Rr5h
jubhj1jXHexr6‡r7…r8r9}r:(hh	]r;…r<Rr=h
jubhj1jXIntegerr>‡r?…r@rA}rB(hh	]rCh(j1jj>XLongrDtrE…rFrG}rH(hh	]rI…rJRrKh
jAuba…rLRrMh
jjDjGubhj1jXDecimalrN‡rO…rPrQ}rR(hh	]rS…rTRrUh
jube…rVRrWh
j4j'j*jj
j6j9j>jAjj"jjhj1jNjQjjube…rXRrYh
jj^jajjjFjIjNjQhßj9j>jAubhXGenericrZ…r[…r\r]}r^(hh	]r_(hjZXErrorr`†ra…rbrc}rd(hh	]re…rfRrgh
j]ubhjZX
Subheadingrh†ri…rjrk}rl(hh	]rm…rnRroh
j]ubhjZX	Tracebackrp†rq…rrrs}rt(hh	]ru…rvRrwh
j]ubhjZXOutputrx†ry…rzr{}r|(hh	]r}…r~Rrh
j]ubhjZXPromptr€†r…r‚rƒ}r„(hh	]r……r†Rr‡h
j]ubhjZXDeletedrˆ†r‰…rЁr‹}rŒ(hh	]r…rŽRrh
j]ubhjZXInsertedr†r‘…r’r“}r”(hh	]r•…r–Rr—h
j]ubhjZXHeadingr˜†r™…ršr›}rœ(hh	]r…ržRrŸh
j]ubhjZXStrongr †r¡…r¢r£}r¤(hh	]r¥…r¦Rr§h
j]ubhjZXEmphr¨†r©…rªr«}r¬(hh	]r­…r®Rr¯h
j]ube…r°Rr±h
jjˆj‹j¨j«j`jcj˜j›jj“jxj{j€jƒj j£jhjkjpjsubhj`…r²…r³r´}rµ(hh	]r¶…r·Rr¸h
jubhXKeywordr¹…rº…r»r¼}r½(hh	]r¾(hj¹j'†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j¼ubhj¹j¹†rÆ…rǁrÈ}rÉ(hh	]rÊ…rËRrÌh
j¼ubhj¹h͆rÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
j¼ubhj¹XPreProcrÔ†rÕ…rցr×}rØ(hh	]rÙ…rÚRrÛh
j¼ubhj¹XControlr܆rÝ…rށrß}rà(hh	]rá…râRrãh
j¼ubhj¹j†rä…råræ}rç(hh	]rè…réRrêh
j¼ubhj¹h†rë…rìrí}rî(hh	]rï…rðRrñh
j¼ubhj¹h°†rò…rórô}rõ(hh	]rö…r÷Rrøh
j¼ubhj¹XDeclarationrù†rú…rûrü}rý(hh	]rþ…rÿRrh
j¼ubhj¹XReservedr†r…rr}r(hh	]r…rRrh
j¼ube…r	Rr
h
jjjæjùjühjíh°jôjjhÍjÏjÜjßj¹jÈjÔj×j'jÁubhh߅r…rr
}r(hh	]r…rRrh
jubhXTextr…r…rr}r(hh	]r(hjXRootr†r…rr}r(hh	]r…rRrh
jubhjh †r …r!r"}r#(hh	]r$…r%Rr&h
jubhjXRagr'†r(…r)r*}r+(hh	]r,…r-Rr.h
jubhjX
Whitespacer/†r0…r1r2}r3(hh	]r4…r5Rr6h
jubhjXBeerr7†r8…r9r:}r;(hh	]r<…r=Rr>h
jubhjXPunctuationr?†r@…rArB}rC(hh	]rD…rERrFh
jube…rGRrHh
jj/j2h j"j?jBjjj7j:j'j*ubhXCommentrI…rJ…rKrL}rM(hh	]rN(hjIXPreprocrO†rP…rQrR}rS(hh	]rT…rURrVh
jLubhjIXMultirW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jLubhjIXHashbangr_†r`…rarb}rc(hh	]rd…reRrfh
jLubhjIj‚†rg…rhri}rj(hh	]rk…rlRrmh
jLubhjIX
SingleLinern†ro…rprq}rr(hh	]rs…rtRruh
jLubhjIjȆrv…rwrx}ry(hh	]rz…r{Rr|h
jLubhjIX	Directiver}†r~…rr€}r(hh	]r‚…rƒRr„h
jLubhjIX	Multiliner…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jLubhjIX
Singleliner†rŽ…rr}r‘(hh	]r’…r“Rr”h
jLubhjIXPreprocFiler•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jLubhjIXSpecialr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jLube…r¥Rr¦h
jj_jbj…jˆjOjRj•j˜j‚jijj j}j€jnjqjÈjxjWjZjjubhj?…r§…r¨r©}rª(hh	]r«hj?X	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
jj¬j¯ube…r¶Rr·jjjjj`j´hßj
j¹j¼hhj1j4j?j©h¸jjIjLjZj]XTokenr¸jj^jajjubhh„hÀhÃh;h>jjh3h6hhh+h.hïhòh˜h›hhhh“hßhâhhhRhUh×hÚh h£h°h³h¸h»h¨h«hÍjububX     r¹†rºjX r»†r¼jX  r½†r¾j¼XSUBROUTINE r¿†rÀhXAHCONrÁ†rÂjj»†rÃj©X(rĆrÅhXSIZErƆrÇj©X,rȆrÉhXNrʆrËj©jȆrÌhXMr͆rÎj©jȆrÏhXArІrÑj©jȆrÒhXBrÓ†rÔj©jȆrÕhXOLEVRrÖ†r×j©jȆrØhXOLEVIrÙ†rÚj©jȆrÛhXCLEVRr܆rÝj©jȆrÞhXCLEVIr߆ràj©jȆrájX	         râ†rãjLX	TRUNCATEDrä†råjX
ræ†rçhX     rè†réj£X&rê†rëjX                    rì†ríhXSCR1rî†rïj©jȆrðhXSCR2rñ†ròj©jȆróhXIPVTrô†rõj©jȆröhXJPVTr÷†røj©jȆrùhXCONrú†rûj©jȆrühXWORKrý†rþj©jȆrÿhXISEEDr†rj©jȆrhXIERRr†rj©X)r†rjj»†rjLX!Testr†r	jLX inline commentr
†rjjæ†rjLXC
r
†rjLXC       FUNCTION:
r†rjLXCF
r†rjLXDCF      Determines whether the pair (A,B) is controllable and flags
r†rjLX?CF      the eigenvalues corresponding to uncontrollable modes.
r†rjLXGCF      this ad-hoc controllability calculation uses a random matrix F
r†rjLXGCF      and computes whether eigenvalues move from A to the controlled
r†rjLXCF      system A+B*F.
r†rjLXCF
r†rjLXC       USAGE:
r†r jLXCU
r!†r"jLXICU      CALL AHCON (SIZE,N,M,A,B,OLEVR,OLEVI,CLEVR,CLEVI,SCR1,SCR2,IPVT,
r#†r$jLX.CU                  JPVT,CON,WORK,ISEED,IERR)
r%†r&jLXCU
r'†r(jLXCCU      since AHCON generates different random F matrices for each
r)†r*jLXACU      call, as long as iseed is not re-initialized by the main
r+†r,jLXDCU      program, and since this code has the potential to be fooled
r-†r.jLXACU      by extremely ill-conditioned problems, the cautious user
r/†r0jLXACU      may wish to call it multiple times and rely, perhaps, on
r1†r2jLXBCU      a 2-of-3 vote.  We believe, but have not proved, that any
r3†r4jLXECU      errors this routine may produce are conservative--i.e., that
r5†r6jLX?CU      it may flag a controllable mode as uncontrollable, but
r7†r8jLXCU      not vice-versa.
r9†r:jLXCU
r;†r<jLXC       INPUTS:
r=†r>jLXCI
r?†r@jLX=CI      SIZE    integer - first dimension of all 2-d arrays.
rA†rBjLXCI
rC†rDjLX,CI      N       integer - number of states.
rE†rFjLXCI
rG†rHjLX,CI      M       integer - number of inputs.
rI†rJjLXCI
rK†rLjLXBCI      A       double precision - SIZE by N array containing the
rM†rNjLX1CI              N by N system dynamics matrix A.
rO†rPjLXCI
rQ†rRjLXBCI      B       double precision - SIZE by M array containing the
rS†rTjLX.CI              N by M system input matrix B.
rU†rVjLXCI
rW†rXjLXFCI      ISEED   initial seed for random number generator; if ISEED=0,
rY†rZjLX<CI              then AHCON will set ISEED to a legal value.
r[†r\jLXCI
r]†r^jLXC       OUTPUTS:
r_†r`jLXCO
ra†rbjLXGCO      OLEVR   double precision - N dimensional vector containing the
rc†rdjLX4CO              real parts of the eigenvalues of A.
re†rfjLXCO
rg†rhjLXGCO      OLEVI   double precision - N dimensional vector containing the
ri†rjjLX9CO              imaginary parts of the eigenvalues of A.
rk†rljLXCO
rm†rnjLXCCO      CLEVR   double precision - N dimensional vector work space
ro†rpjLXGCO              containing the real parts of the eigenvalues of A+B*F,
rq†rrjLX.CO              where F is the random matrix.
rs†rtjLXCO
ru†rvjLXCCO      CLEVI   double precision - N dimensional vector work space
rw†rxjLXECO              containing the imaginary parts of the eigenvalues of
ry†rzjLX5CO              A+B*F, where F is the random matrix.
r{†r|jLXCO
r}†r~jLXGCO      SCR1    double precision - N dimensional vector containing the
r†r€jLXBCO              magnitudes of the corresponding eigenvalues of A.
r†r‚jLXCO
rƒ†r„jLXGCO      SCR2    double precision - N dimensional vector containing the
r…†r†jLXGCO              damping factors of the corresponding eigenvalues of A.
r‡†rˆjLXCO
r‰†rŠjLXHCO      IPVT    integer - N dimensional vector; contains the row pivots
r‹†rŒjLXICO              used in finding the nearest neighbor eigenvalues between
r†rŽjLXFCO              those of A and of A+B*F.  The IPVT(1)th eigenvalue of
r†rjLXHCO              A and the JPVT(1)th eigenvalue of A+B*F are the closest
r‘†r’jLXCO              pair.
r“†r”jLXCO
r•†r–jLXDCO      JPVT    integer - N dimensional vector; contains the column
r—†r˜jLXICO              pivots used in finding the nearest neighbor eigenvalues;
r™†ršjLXCO              see IPVT.
r›†rœjLXCO
r†ržjLXLCO      CON     logical - N dimensional vector; flagging the uncontrollable
rŸ†r jLX@CO              modes of the system.  CON(I)=.TRUE. implies the
r¡†r¢jLXOCO              eigenvalue of A given by DCMPLX(OLEVR(IPVT(I)),OLEVI(IPVT(i)))
r£†r¤jLXCCO              corresponds to a controllable mode; CON(I)=.FALSE.
r¥†r¦jLXDCO              implies an uncontrollable mode for that eigenvalue.
r§†r¨jLXCO
r©†rªjLXJCO      WORK    double precision - SIZE by N dimensional array containing
r«†r¬jLXECO              an N by N matrix.  WORK(I,J) is the distance between
r­†r®jLXLCO              the open loop eigenvalue given by DCMPLX(OLEVR(I),OLEVI(I))
r¯†r°jLXACO              and the closed loop eigenvalue of A+B*F given by
r±†r²jLX+CO              DCMPLX(CLEVR(J),CLEVI(J)).
r³†r´jLXCO
rµ†r¶jLXECO      IERR    integer - IERR=0 indicates normal return; a non-zero
r·†r¸jLXGCO              value indicates trouble in the eigenvalue calculation.
r¹†rºjLXECO              see the EISPACK and EIGEN documentation for details.
r»†r¼jLXCO
r½†r¾jLXC       ALGORITHM:
r¿†rÀjLXCA
rÁ†rÂjLX?CA      Calculate eigenvalues of A and of A+B*F for a randomly
rÆrÄjLXBCA      generated F, and see which ones change.  Use a full pivot
rņrÆjLX?CA      search through a matrix of euclidean distance measures
rdžrÈjLX:CA      between each pair of eigenvalues from (A,A+BF) to
rɆrÊjLX%CA      determine the closest pairs.
rˆrÌjLXCA
r͆rÎjLXC       MACHINE DEPENDENCIES:
rφrÐjLXCM
rцrÒjLXCM       NONE
rÓ†rÔjLXCM
rÕ†rÖjLXC       HISTORY:
r׆rØjLXCH
rÙ†rÚjLX0CH      written by:             Birdwell & Laub
rÛ†rÜjLX-CH      date:                   May 18, 1985
r݆rÞjLX$CH      current version:        1.0
r߆ràjLXJCH      modifications:          made machine independent and modified for
rá†râjLX-CH                              f77:bb:8-86.
rã†räjLXECH                              changed cmplx -> dcmplx: 7/27/88 jdb
rå†ræjLXCH
rç†rèjLXC       ROUTINES CALLED:
ré†rêjLXCC
rë†rìjLXCC      EIGEN,RAND
rí†rîjLXCC
rï†rðjLXC       COMMON MEMORY USED:
rñ†ròjLXCM
ró†rôjLX
CM      none
rõ†röjLXCM
r÷†røjLXHC----------------------------------------------------------------------
rù†rújLX,C       written for:    The CASCADE Project
rû†rüjLX6C                       Oak Ridge National Laboratory
rý†rþjLX2C                       U.S. Department of Energy
rÿ†rjLX:C                       contract number DE-AC05-840R21400
r†rjLX8C                       subcontract number 37B-7685 S13
r†rjLXDC                       organization:   The University of Tennessee
r†rjLXHC----------------------------------------------------------------------
r†rjLX.C       THIS SOFTWARE IS IN THE PUBLIC DOMAIN
r	†r
jLX/C       NO RESTRICTIONS ON ITS USE ARE IMPLIED
r†rjLXHC----------------------------------------------------------------------
r
†rjLXC
r†rjLXC--global variables:
r†rjLXC
r†rhX     r†rjj»†rjX  r†rjÏXINTEGER         r†rhXSIZEr†rjjæ†rhX     r†r jj»†r!jX  r"†r#jÏXINTEGER         r$†r%hjʆr&jjæ†r'hX     r(†r)jj»†r*jX  r+†r,jÏXINTEGER         r-†r.hj͆r/jjæ†r0hX     r1†r2jj»†r3jX  r4†r5jÏXINTEGER         r6†r7hXIPVTr8†r9j©jĆr:jAX1r;†r<j©j†r=jjæ†r>hX     r?†r@jj»†rAjX  rB†rCjÏXINTEGER         rD†rEhXJPVTrF†rGj©jĆrHjAj;†rIj©j†rJjjæ†rKhX     rL†rMjj»†rNjX  rO†rPjÏXINTEGER         rQ†rRhXIERRrS†rTjjæ†rUjLXC
rV†rWhX     rX†rYjj»†rZjX  r[†r\jÏXDOUBLE PRECISION        r]†r^hjІr_j©jĆr`hXSIZEra†rbj©jȆrchjʆrdj©j†rejjæ†rfhX     rg†rhjj»†rijX  rj†rkjÏXDOUBLE PRECISION        rl†rmhjÓ†rnj©jĆrohXSIZErp†rqj©jȆrrhj͆rsj©j†rtjjæ†ruhX     rv†rwjj»†rxjX  ry†rzjÏXDOUBLE PRECISION        r{†r|hXWORKr}†r~j©jĆrhXSIZEr€†rj©jȆr‚hjʆrƒj©j†r„jjæ†r…hX     r††r‡jj»†rˆjX  r‰†rŠjÏXDOUBLE PRECISION        r‹†rŒhXCLEVRr†rŽj©jĆrhjʆrj©j†r‘jjæ†r’hX     r“†r”jj»†r•jX  r–†r—jÏXDOUBLE PRECISION        r˜†r™hXCLEVIrš†r›j©jĆrœhjʆrj©j†ržjjæ†rŸhX     r †r¡jj»†r¢jX  r£†r¤jÏXDOUBLE PRECISION        r¥†r¦hXOLEVRr§†r¨j©jĆr©hjʆrªj©j†r«jjæ†r¬hX     r­†r®jj»†r¯jX  r°†r±jÏXDOUBLE PRECISION        r²†r³hXOLEVIr´†rµj©jĆr¶hjʆr·j©j†r¸jjæ†r¹hX     rº†r»jj»†r¼jX  r½†r¾jÏXDOUBLE PRECISION        r¿†rÀhXSCR1rÁ†rÂj©jĆrÃhjʆrÄj©j†rÅjjæ†rÆhX     rdžrÈjj»†rÉjX  rʆrËjÏXDOUBLE PRECISION        r̆rÍhXSCR2rΆrÏj©jĆrÐhjʆrÑj©j†rÒjjæ†rÓjLXC
rÔ†rÕhX     rÖ†r×jj»†rØjX  rÙ†rÚjÏXLOGICAL                 rÛ†rÜhXCONr݆rÞj©jĆrßhjʆràj©j†rájjæ†râjLXC
rã†räjLXC--local variables:
rå†ræjLXC
rç†rèhX     ré†rêjj»†rëjX  rì†ríjÏXINTEGER         rî†rïhXISEEDrð†rñjjæ†ròhX     ró†rôjj»†rõjX  rö†r÷jÏXINTEGER         rø†rùhXITEMPrú†rûjjæ†rühX     rý†rþjj»†rÿjX  r†rjÏXINTEGER         r†rhXK1r†rjjæ†rhX     r†rjj»†r	jX  r
†rjÏXINTEGER         r†r
hXK2r†rjjæ†rhX     r†rjj»†rjX  r†rjÏXINTEGER         r†rhXIr†rjjæ†rhX     r†rjj»†rjX  r†rjÏXINTEGER         r †r!hXJr"†r#jjæ†r$hX     r%†r&jj»†r'jX  r(†r)jÏXINTEGER         r*†r+hXKr,†r-jjæ†r.hX     r/†r0jj»†r1jX  r2†r3jÏXINTEGER         r4†r5hXIMAXr6†r7jjæ†r8hX     r9†r:jj»†r;jX  r<†r=jÏXINTEGER         r>†r?hXJMAXr@†rAjjæ†rBjLXC
rC†rDhX     rE†rFjj»†rGjX  rH†rIjÏXDOUBLE PRECISION        rJ†rKj¼XVALUErL†rMjjæ†rNhX     rO†rPjj»†rQjX  rR†rSjÏXDOUBLE PRECISION        rT†rUhXEPSrV†rWjjæ†rXhX     rY†rZjj»†r[jX  r\†r]jÏXDOUBLE PRECISION        r^†r_hXEPS1r`†rajjæ†rbhX     rc†rdjj»†rejX  rf†rgjÏXDOUBLE PRECISION        rh†rihXTEMPrj†rkjjæ†rlhX     rm†rnjj»†rojX  rp†rqjÏXDOUBLE PRECISION        rr†rshXCURRrt†rujjæ†rvhX     rw†rxjj»†ryjX  rz†r{jÏXDOUBLE PRECISION        r|†r}hXANORMr~†rjjæ†r€hX     r†r‚jj»†rƒjX  r„†r…jÏXDOUBLE PRECISION        r††r‡hXBNORMrˆ†r‰jjæ†rŠhX     r‹†rŒjj»†rjX  rކrjÏXDOUBLE PRECISION        r†r‘hXCOLNRMr’†r“jjæ†r”hX     r•†r–jj»†r—jX  r˜†r™jÏXDOUBLE PRECISION        rš†r›hXRNDMNOrœ†rjjæ†ržjLXC
rŸ†r hX     r¡†r¢jj»†r£jX  r¤†r¥jÏXDOUBLE COMPLEX		r¦†r§hXDCMPLXr¨†r©jjæ†rªjLXC
r«†r¬jLXC--compute machine epsilon
r­†r®jLXC
r¯†r°hX     r±†r²jj»†r³jX  r´†rµhXEPSr¶†r·jj»†r¸jX=r¹†rºjj»†r»j
X1.D0r¼†r½jjæ†r¾hX100  r¿†rÀjj»†rÁjX  r†rÃj¼XCONTINUErĆrÅjjæ†rÆhX     rdžrÈjj»†rÉjX    rʆrËhXEPSr̆rÍjj»†rÎjj¹†rÏjj»†rÐhXEPSrцrÒjj»†rÓjX/rÔ†rÕjj»†rÖj
X2.D0r׆rØjjæ†rÙhX     rÚ†rÛjj»†rÜjX    r݆rÞhXEPS1r߆ràjj»†rájj¹†râjj»†rãj
X1.D0rä†råjj»†ræjX+rç†rèjj»†réhXEPSrê†rëjjæ†rìhX     rí†rîjj»†rïjX  rð†rñj¼XIFrò†rójj»†rôj©jĆrõhXEPS1rö†r÷jj»†røj©X.rù†rúhXNErû†rüj©jù†rýjj»†rþj
X1.D0rÿ†rj©j†rjj»†rhXGOr†rjj»†rhXTOr†rjj»†rjAX100r	†r
jjæ†rhX     r†r
jj»†rjX  r†rhXEPSr†rjj»†rjj¹†rjj»†rhXEPSr†rjj»†rjX*r†rjj»†rj
X2.D0r†rjjæ†rjLXC
r†r jLXC--compute the l-1 norm of a
r!†r"jLXC
r#†r$hX     r%†r&jj»†r'jX  r(†r)hXANORMr*†r+jj»†r,jj¹†r-jj»†r.j
X0.0D0r/†r0jjæ†r1hX     r2†r3jj»†r4jX  r5†r6j¼XDO r7†r8jAX120r9†r:jj»†r;hj"†r<jj»†r=jj¹†r>jj»†r?jAj;†r@j©jȆrAjj»†rBhjʆrCjjæ†rDhX     rE†rFjj»†rGjX    rH†rIhXCOLNRMrJ†rKjj»†rLjj¹†rMjj»†rNj
X0.D0rO†rPjjæ†rQhX     rR†rSjj»†rTjX    rU†rVj¼XDO rW†rXjAX110rY†rZjj»†r[hj†r\jj»†r]jj¹†r^jj»†r_jAj;†r`j©jȆrajj»†rbhjʆrcjjæ†rdhX     re†rfjj»†rgjX      rh†rihXCOLNRMrj†rkjj»†rljj¹†rmjj»†rnhXCOLNRMro†rpjj»†rqjjç†rrjj»†rshÃXABSrt†ruj©jĆrvhjІrwj©jĆrxhj†ryj©jȆrzhj"†r{j©j†r|j©j†r}jjæ†r~hX110  r†r€jj»†rjX    r‚†rƒj¼XCONTINUEr„†r…jjæ†r†hX     r‡†rˆjj»†r‰jX    rІr‹j¼XIFrŒ†rjj»†rŽj©jĆrhXCOLNRMr†r‘jj»†r’j©jù†r“hXGTr”†r•j©jù†r–jj»†r—hXANORMr˜†r™j©j†ršjj»†r›hXANORMrœ†rjj»†ržjj¹†rŸjj»†r hXCOLNRMr¡†r¢jjæ†r£hX120  r¤†r¥jj»†r¦jX  r§†r¨j¼XCONTINUEr©†rªjjæ†r«jLXC
r¬†r­jLXC--compute the l-1 norm of b
r®†r¯jLXC
r°†r±hX     r²†r³jj»†r´jX  rµ†r¶hXBNORMr·†r¸jj»†r¹jj¹†rºjj»†r»j
X0.0D0r¼†r½jjæ†r¾hX     r¿†rÀjj»†rÁjX  r†rÃj¼XDO rĆrÅjAX140rƆrÇjj»†rÈhj"†rÉjj»†rÊjj¹†rËjj»†rÌjAj;†rÍj©jȆrÎjj»†rÏhj͆rÐjjæ†rÑhX     rÒ†rÓjj»†rÔjX    rÕ†rÖhXCOLNRMr׆rØjj»†rÙjj¹†rÚjj»†rÛj
X0.D0r܆rÝjjæ†rÞhX     r߆ràjj»†rájX    râ†rãj¼XDO rä†råjAX130ræ†rçjj»†rèhj†réjj»†rêjj¹†rëjj»†rìjAj;†ríj©jȆrîjj»†rïhjʆrðjjæ†rñhX     rò†rójj»†rôjX      rõ†röhXCOLNRMr÷†røjj»†rùjj¹†rújj»†rûhXCOLNRMrü†rýjj»†rþjjç†rÿjj»†rhÃXABSr†rj©jĆrhjÓ†rj©jĆrhj†rj©jȆrhj"†rj©j†r	j©j†r
jjæ†rhX130  r†r
jj»†rjX    r†rj¼XCONTINUEr†rjjæ†rhX     r†rjj»†rjX    r†rj¼XIFr†rjj»†rj©jĆrhXCOLNRMr†rjj»†rj©jù†r hXGTr!†r"j©jù†r#jj»†r$hXBNORMr%†r&j©j†r'jj»†r(hXBNORMr)†r*jj»†r+jj¹†r,jj»†r-hXCOLNRMr.†r/jjæ†r0hX140  r1†r2jj»†r3jX  r4†r5j¼XCONTINUEr6†r7jjæ†r8jLXC
r9†r:jLXC--compute a + b * f
r;†r<jLXC
r=†r>hX     r?†r@jj»†rAjX  rB†rCj¼XDO rD†rEjAX160rF†rGjj»†rHhj"†rIjj»†rJjj¹†rKjj»†rLjAj;†rMj©jȆrNjj»†rOhjʆrPjjæ†rQhX     rR†rSjj»†rTjX    rU†rVj¼XDO rW†rXjAX150rY†rZjj»†r[hj†r\jj»†r]jj¹†r^jj»†r_jAj;†r`j©jȆrajj»†rbhjʆrcjjæ†rdhX     re†rfjj»†rgjX      rh†rihXWORKrj†rkj©jĆrlhj†rmj©jȆrnhj"†roj©j†rpjj»†rqjj¹†rrjj»†rshjІrtj©jĆruhj†rvj©jȆrwhj"†rxj©j†ryjjæ†rzhX150  r{†r|jj»†r}jX    r~†rj¼XCONTINUEr€†rjjæ†r‚hX160  rƒ†r„jj»†r…jX  r††r‡j¼XCONTINUErˆ†r‰jjæ†rŠjLXC
r‹†rŒjLX:C--the elements of f are random with uniform distribution
r†rŽjLX%C--from -anorm/bnorm to +anorm/bnorm
r†rjLX4C--note that f is not explicitly stored as a matrix
r‘†r’jLX@C--pathalogical floating point notes:  the if (bnorm .gt. 0.d0)
r“†r”jLX@C--test should actually be if (bnorm .gt. dsmall), where dsmall
r•†r–jLX>C--is the smallest representable number whose reciprocal does
r—†r˜jLX2C--not generate an overflow or loss of precision.
r™†ršjLXC
r›†rœhX     r†ržjj»†rŸjX  r †r¡j¼XIFr¢†r£jj»†r¤j©jĆr¥hXISEEDr¦†r§jj»†r¨j©jù†r©hXEQrª†r«j©jù†r¬jj»†r­jAX0r®†r¯j©j†r°jj»†r±hXISEEDr²†r³jj»†r´jj¹†rµjj»†r¶jAX86345823r·†r¸jjæ†r¹hX     rº†r»jj»†r¼jX  r½†r¾j¼XIFr¿†rÀjj»†rÁj©jĆrÂhXANORMrÆrÄjj»†rÅj©jù†rÆhXEQrdžrÈj©jù†rÉjj»†rÊj
X0.D0rˆrÌj©j†rÍjj»†rÎhXANORMrφrÐjj»†rÑjj¹†rÒjj»†rÓj
X1.D0rÔ†rÕjjæ†rÖhX     r׆rØjj»†rÙjX  rÚ†rÛj¼XIFr܆rÝjj»†rÞj©jĆrßhXBNORMrà†rájj»†râj©jù†rãhXGTrä†råj©jù†ræjj»†rçj
X0.D0rè†réj©j†rêjj»†rëj¼XTHENrì†ríjjæ†rîhX     rï†rðjj»†rñjX    rò†róhXTEMPrô†rõjj»†röjj¹†r÷jj»†røj
X2.D0rù†rújj»†rûjj†rüjj»†rýhXANORMrþ†rÿjj»†r	jjÔ†r	jj»†r	hXBNORMr	†r	jjæ†r	hX     r	†r	jj»†r	jX  r		†r
	j¼XELSEr	†r	jjæ†r
	hX     r	†r	jj»†r	jX    r	†r	hXTEMPr	†r	jj»†r	jj¹†r	jj»†r	j
X2.D0r	†r	jjæ†r	hX     r	†r	jj»†r	jX  r	†r	j¼XEND r 	†r!	j¼XIFr"	†r#	jjæ†r$	hX     r%	†r&	jj»†r'	jX  r(	†r)	j¼XDO r*	†r+	jAX190r,	†r-	jj»†r.	hj,†r/	jj»†r0	jj¹†r1	jj»†r2	jAj;†r3	j©jȆr4	jj»†r5	hj͆r6	jjæ†r7	hX     r8	†r9	jj»†r:	jX    r;	†r<	j¼XDO r=	†r>	jAX180r?	†r@	jj»†rA	hj"†rB	jj»†rC	jj¹†rD	jj»†rE	jAj;†rF	j©jȆrG	jj»†rH	hjʆrI	jjæ†rJ	hX     rK	†rL	jj»†rM	jX      rN	†rO	j¼XCALL rP	†rQ	hÃXRANDrR	†rS	j©jĆrT	hXISEEDrU	†rV	j©jȆrW	hXISEEDrX	†rY	j©jȆrZ	hXRNDMNOr[	†r\	j©j†r]	jjæ†r^	hX     r_	†r`	jj»†ra	jX      rb	†rc	j¼XVALUErd	†re	jj»†rf	jj¹†rg	jj»†rh	j©jĆri	hXRNDMNOrj	†rk	jj»†rl	jX-rm	†rn	jj»†ro	j
X0.5D0rp	†rq	j©j†rr	jj»†rs	jj†rt	jj»†ru	hXTEMPrv	†rw	jjæ†rx	hX     ry	†rz	jj»†r{	jX      r|	†r}	j¼XDO r~	†r	jAX170r€	†r	jj»†r‚	hj†rƒ	jj»†r„	jj¹†r…	jj»†r†	jAj;†r‡	j©jȆrˆ	jj»†r‰	hjʆrŠ	jjæ†r‹	hX     rŒ	†r	jj»†rŽ	jX        r	†r	hXWORKr‘	†r’	j©jĆr“	hj†r”	j©jȆr•	hj"†r–	j©j†r—	jj»†r˜	jj¹†r™	jj»†rš	hXWORKr›	†rœ	j©jĆr	hj†rž	j©jȆrŸ	hj"†r 	j©j†r¡	jj»†r¢	jjç†r£	jj»†r¤	hjÓ†r¥	j©jĆr¦	hj†r§	j©jȆr¨	hj,†r©	j©j†rª	jj†r«	j¼XVALUEr¬	†r­	jjæ†r®	hX170  r¯	†r°	e(jj»†r±	jX      r²	†r³	j¼XCONTINUEr´	†rµ	jjæ†r¶	hX180  r·	†r¸	jj»†r¹	jX    rº	†r»	j¼XCONTINUEr¼	†r½	jjæ†r¾	hX190  r¿	†rÀ	jj»†rÁ	jX  rÂ	†rÃ	j¼XCONTINUErÄ	†rÅ	jjæ†rÆ	jLXC
rÇ	†rÈ	jLX@C--compute the eigenvalues of a + b*f, and several other things
rÉ	†rÊ	jLXC
rË	†rÌ	hX     rÍ	†rÎ	jj»†rÏ	jX  rÐ	†rÑ	j¼XCALL rÒ	†rÓ	hXEIGENrÔ	†rÕ	jj»†rÖ	j©jĆr×	jAj®†rØ	j©jȆrÙ	hXSIZErÚ	†rÛ	j©jȆrÜ	hjʆrÝ	j©jȆrÞ	hXWORKrß	†rà	j©jȆrá	hXCLEVRrâ	†rã	j©jȆrä	hXCLEVIrå	†ræ	j©jȆrç	hXWORKrè	†ré	j©jȆrê	hXSCR1rë	†rì	j©jȆrí	hXSCR2rî	†rï	j©jȆrð	hXIERRrñ	†rò	j©j†ró	jjæ†rô	hX     rõ	†rö	jj»†r÷	jX  rø	†rù	j¼XIFrú	†rû	jj»†rü	j©jĆrý	hXIERRrþ	†rÿ	jj»†r
j©jù†r
hXNEr
†r
j©jù†r
jjȠr
jAj®†r
j©j†r
jjȠr
j¼XRETURNr	
†r

jjæ†r
jLXC
r
†r
jLX!C--copy a so it is not destroyed
r
†r
jLXC
r
†r
hX     r
†r
jjȠr
jX  r
†r
j¼XDO r
†r
jAX210r
†r
jjȠr
hj"†r
jjȠr
jj¹†r
jjȠr
jAj;†r 
j©jȆr!
jjȠr"
hjʆr#
jjæ†r$
hX     r%
†r&
jjȠr'
jX    r(
†r)
j¼XDO r*
†r+
jAX200r,
†r-
jjȠr.
hj†r/
jjȠr0
jj¹†r1
jjȠr2
jAj;†r3
j©jȆr4
jjȠr5
hjʆr6
jjæ†r7
hX     r8
†r9
jjȠr:
jX      r;
†r<
hXWORKr=
†r>
j©jĆr?
hj†r@
j©jȆrA
hj"†rB
j©j†rC
jjȠrD
jj¹†rE
jjȠrF
hjІrG
j©jĆrH
hj†rI
j©jȆrJ
hj"†rK
j©j†rL
jjæ†rM
hX200  rN
†rO
jjȠrP
jX    rQ
†rR
j¼XCONTINUErS
†rT
jjæ†rU
hX210  rV
†rW
jjȠrX
jX  rY
†rZ
j¼XCONTINUEr[
†r\
jjæ†r]
jLXC
r^
†r_
jLX:C--compute the eigenvalues of a, and several other things
r`
†ra
jLXC
rb
†rc
hX     rd
†re
jjȠrf
jX  rg
†rh
j¼XCALL ri
†rj
hXEIGENrk
†rl
jjȠrm
j©jĆrn
jAj®†ro
j©jȆrp
hXSIZErq
†rr
j©jȆrs
hjʆrt
j©jȆru
hXWORKrv
†rw
j©jȆrx
hXOLEVRry
†rz
j©jȆr{
hXOLEVIr|
†r}
j©jȆr~
hXWORKr
†r€
j©jȆr
hXSCR1r‚
†rƒ
j©jȆr„
hXSCR2r…
†r†
j©jȆr‡
hXIERRrˆ
†r‰
j©j†rŠ
jjæ†r‹
hX     rŒ
†r
jj»†rŽ
jX  r
†r
j¼XIFr‘
†r’
jj»†r“
j©jĆr”
hXIERRr•
†r–
jj»†r—
j©jù†r˜
hXNEr™
†rš
j©jù†r›
jj»†rœ
jAj®†r
j©j†rž
jj»†rŸ
j¼XRETURNr 
†r¡
jjæ†r¢
jLXC
r£
†r¤
jLX=C--form the matrix of distances between eigenvalues of a and
r¥
†r¦
jLXC--EIGENVALUES OF A+B*F
r§
†r¨
jLXC
r©
†rª
hX     r«
†r¬
jj»†r­
jX  r®
†r¯
j¼XDO r°
†r±
jAX230r²
†r³
jj»†r´
hj"†rµ
jj»†r¶
jj¹†r·
jj»†r¸
jAj;†r¹
j©jȆrº
jj»†r»
hjʆr¼
jjæ†r½
hX     r¾
†r¿
jj»†rÀ
jX    rÁ
†rÂ
j¼XDO rÃ
†rÄ
jAX220rÅ
†rÆ
jj»†rÇ
hj†rÈ
jj»†rÉ
jj¹†rÊ
jj»†rË
jAj;†rÌ
j©jȆrÍ
jj»†rÎ
hjʆrÏ
jjæ†rÐ
hX     rÑ
†rÒ
jj»†rÓ
jX      rÔ
†rÕ
hXWORKrÖ
†r×
j©jĆrØ
hj†rÙ
j©jȆrÚ
hj"†rÛ
j©j†rÜ
jj»†rÝ
jj¹†rÞ
jjæ†rß
hX     rà
†rá
j£jê†râ
jX        rã
†rä
hÃXABSrå
†ræ
j©jĆrç
hXDCMPLXrè
†ré
j©jĆrê
hXOLEVRrë
†rì
j©jĆrí
hj†rî
j©j†rï
j©jȆrð
hXOLEVIrñ
†rò
j©jĆró
hj†rô
j©j†rõ
j©j†rö
jjm	†r÷
hXDCMPLXrø
†rù
j©jĆrú
hXCLEVRrû
†rü
j©jĆrý
hj"†rþ
j©j†rÿ
j©jȆrhXCLEVIr†rj©jĆrhj"†rj©j†rj©j†rj©j†rjjæ†rhX220  r	†r
jj»†rjX    r†r
j¼XCONTINUEr†rjjæ†rhX230  r†rjj»†rjX  r†rj¼XCONTINUEr†rjjæ†rjLXC
r†rjLX$C--initialize row and column pivots
r†rjLXC
r†rhX     r†r jj»†r!jX  r"†r#j¼XDO r$†r%jAX240r&†r'jj»†r(hj†r)jj»†r*jj¹†r+jj»†r,jAj;†r-j©jȆr.jj»†r/hjʆr0jjæ†r1hX     r2†r3jj»†r4jX    r5†r6hXIPVTr7†r8j©jĆr9hj†r:j©j†r;jj»†r<jj¹†r=jj»†r>hj†r?jjæ†r@hX     rA†rBjj»†rCjX    rD†rEhXJPVTrF†rGj©jĆrHhj†rIj©j†rJjj»†rKjj¹†rLjj»†rMhj†rNjjæ†rOhX240  rP†rQjj»†rRjX  rS†rTj¼XCONTINUErU†rVjjæ†rWjLXC
rX†rYjLX4C--a little bit messy to avoid swapping columns and
rZ†r[jLXC--rows of work
r\†r]jLXC
r^†r_hX     r`†rajj»†rbjX  rc†rdj¼XDO re†rfjAX270rg†rhjj»†rihj†rjjj»†rkjj¹†rljj»†rmjAj;†rnj©jȆrojj»†rphjʆrqjjm	†rrjAj;†rsjjæ†rtjLXC
ru†rvjLX7C--find the minimum element of each lower right square
rw†rxjLX4C--submatrix of work, for submatrices of size n x n
ry†rzjLXC--through 2 x 2
r{†r|jLXC
r}†r~hX     r†r€jj»†rjX    r‚†rƒhXCURRr„†r…jj»†r†jj¹†r‡jj»†rˆhXWORKr‰†rŠj©jĆr‹hXIPVTrŒ†rj©jĆrŽhj†rj©j†rj©jȆr‘hXJPVTr’†r“j©jĆr”hj†r•j©j†r–j©j†r—jjæ†r˜hX     r™†ršjj»†r›jX    rœ†rhXIMAXrž†rŸjj»†r jj¹†r¡jj»†r¢hj†r£jjæ†r¤hX     r¥†r¦jj»†r§jX    r¨†r©hXJMAXrª†r«jj»†r¬jj¹†r­jj»†r®hj†r¯jjæ†r°hX     r±†r²jj»†r³jX    r´†rµhXTEMPr¶†r·jj»†r¸jj¹†r¹jj»†rºhXCURRr»†r¼jjæ†r½jLXC
r¾†r¿jLXC--find the minimum element
rÀ†rÁjLXC
r†rÃhX     rĆrÅjj»†rÆjX    rdžrÈj¼XDO rɆrÊjAX260rˆrÌjj»†rÍhXK1rΆrÏjj»†rÐjj¹†rÑjj»†rÒhj†rÓj©jȆrÔjj»†rÕhjʆrÖjjæ†r×hX     r؆rÙjj»†rÚjX      rÛ†rÜj¼XDO r݆rÞjAX250r߆ràjj»†ráhXK2râ†rãjj»†räjj¹†råjj»†ræhj†rçj©jȆrèjj»†réhjʆrêjjæ†rëhX     rì†ríjj»†rîjX        rï†rðj¼XIFrñ†ròjj»†rój©jĆrôhXWORKrõ†röj©jĆr÷hXIPVTrø†rùj©jĆrúhXK1rû†rüj©j†rýj©jȆrþhXJPVTrÿ†rj©jĆrhXK2r†rj©j†rj©j†rjj»†rj©jù†rhXLTr†r	j©jù†r
jj»†rhXTEMPr†r
j©j†rjj»†rj¼XTHENr†rjjæ†rhX     r†rjj»†rjX
          r†rhXTEMPr†rjj»†rjj¹†rjj»†rhXWORKr†rj©jĆrhXIPVTr †r!j©jĆr"hXK1r#†r$j©j†r%j©jȆr&hXJPVTr'†r(j©jĆr)hXK2r*†r+j©j†r,j©j†r-jjæ†r.hX     r/†r0jj»†r1jX
          r2†r3hXIMAXr4†r5jj»†r6jj¹†r7jj»†r8hXK1r9†r:jjæ†r;hX     r<†r=jj»†r>jX
          r?†r@hXJMAXrA†rBjj»†rCjj¹†rDjj»†rEhXK2rF†rGjjæ†rHhX     rI†rJjj»†rKjX        rL†rMj¼XEND rN†rOj¼XIFrP†rQjjæ†rRhX250  rS†rTjj»†rUjX      rV†rWj¼XCONTINUErX†rYjjæ†rZhX260  r[†r\jj»†r]jX    r^†r_j¼XCONTINUEr`†rajjæ†rbjLXC
rc†rdjLX@C--update row and column pivots for indirect addressing of work
re†rfjLXC
rg†rhhX     ri†rjjj»†rkjX    rl†rmhXITEMPrn†rojj»†rpjj¹†rqjj»†rrhXIPVTrs†rtj©jĆruhj†rvj©j†rwjjæ†rxhX     ry†rzjj»†r{jX    r|†r}hXIPVTr~†rj©jĆr€hj†rj©j†r‚jj»†rƒjj¹†r„jj»†r…hXIPVTr††r‡j©jĆrˆhXIMAXr‰†rŠj©j†r‹jjæ†rŒhX     r†rŽjj»†rjX    r†r‘hXIPVTr’†r“j©jĆr”hXIMAXr•†r–j©j†r—jj»†r˜jj¹†r™jj»†ršhXITEMPr›†rœjjæ†rjLXC
rž†rŸhX     r †r¡jj»†r¢jX    r£†r¤hXITEMPr¥†r¦jj»†r§jj¹†r¨jj»†r©hXJPVTrª†r«j©jĆr¬hj†r­j©j†r®jjæ†r¯hX     r°†r±jj»†r²jX    r³†r´hXJPVTrµ†r¶j©jĆr·hj†r¸j©j†r¹jj»†rºjj¹†r»jj»†r¼hXJPVTr½†r¾j©jĆr¿hXJMAXrÀ†rÁj©j†rÂjjæ†rÃhX     rÄ†rÅjj»†rÆjX    rÇ†rÈhXJPVTrÉ†rÊj©jĆrËhXJMAXrÌ†rÍj©j†rÎjj»†rÏjj¹†rÐjj»†rÑhXITEMPrÒ†rÓjjæ†rÔjLXC
rÕ†rÖjLXC--do next submatrix
r×†rØjLXC
rÙ†rÚhX270  rÛ†rÜjj»†rÝjX  rÞ†rßj¼XCONTINUErà†rájjæ†râjLXC
rã†räjLX9C--this threshold for determining when an eigenvalue has
rå†ræjLX<C--not moved, and is therefore uncontrollable, is critical,
rç†rèjLX8C--and may require future changes with more experience.
ré†rêjLXC
rë†rìhX     rí†rîjj»†rïjX  rð†rñhXEPS1rò†rójj»†rôjj¹†rõjj»†röhÃXSQRTr÷†røj©jĆrùhXEPSrú†rûj©j†rüjjæ†rýjLXC
rþ†rÿjLX:C--for each eigenvalue pair, decide if it is controllable
r
†r
jLXC
r
†r
hX     r
†r
jjȠr
jX  r
†r
j¼XDO r	
†r

jAX280r
†r
jjȠr

hj†r
jjȠr
jj¹†r
jjȠr
jAj;†r
j©jȆr
jjȠr
hjʆr
jjæ†r
jLXC
r
†r
jLX;C--note that we are working with the "pivoted" work matrix
r
†r
jLX,C--and are looking at its diagonal elements
r
†r
jLXC
r
†r
hX     r
†r 
jjȠr!
jX    r"
†r#
j¼XIFr$
†r%
jjȠr&
j©jĆr'
hXWORKr(
†r)
j©jĆr*
hXIPVTr+
†r,
j©jĆr-
hj†r.
j©j†r/
j©jȆr0
hXJPVTr1
†r2
j©jĆr3
hj†r4
j©j†r5
j©j†r6
jjÔ†r7
hXANORMr8
†r9
jjȠr:
j©jù†r;
hXLEr<
†r=
j©jù†r>
jjȠr?
hXEPS1r@
†rA
j©j†rB
jjȠrC
j¼XTHENrD
†rE
jjæ†rF
hX     rG
†rH
jjȠrI
jX      rJ
†rK
hXCONrL
†rM
j©jĆrN
hj†rO
j©j†rP
jjȠrQ
jj¹†rR
jjȠrS
j©jù†rT
hXFALSErU
†rV
j©jù†rW
jjæ†rX
hX     rY
†rZ
jjȠr[
jX    r\
†r]
j¼XELSEr^
†r_
jjæ†r`
hX     ra
†rb
jjȠrc
jX      rd
†re
hXCONrf
†rg
j©jĆrh
hj†ri
j©j†rj
jjȠrk
jj¹†rl
jjȠrm
j©jù†rn
hXTRUEro
†rp
j©jù†rq
jjæ†rr
hX     rs
†rt
jjȠru
jX    rv
†rw
j¼XEND rx
†ry
j¼XIFrz
†r{
jjæ†r|
hX280  r}
†r~
jjȠr
jX  r€
†r
j¼XCONTINUEr‚
†rƒ
jjæ†r„
jLXC
r…
†r†
jLXC--finally!
r‡
†rˆ
jLXC
r‰
†rŠ
hX     r‹
†rŒ
jj»†r
jX  rŽ
†r
j¼XRETURNr
†r‘
jjæ†r’
hX     r“
†r”
jj»†r•
jX  r–
†r—
j¼XENDr˜
†r™
jjæ†rš
e.