home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / sources / misc / 4254 < prev    next >
SHell self-extracting ARchive  |  1993-01-11  |  60.5 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 50 61 |.sources|.misc.Pa|
|00000020| 74 68 3a 20 73 70 61 72 | 6b 79 21 6b 65 6e 74 0a |th: spar|ky!kent.|
|00000030| 46 72 6f 6d 3a 20 72 6f | 62 65 72 74 64 40 6b 61 |From: ro|bertd@ka|
|00000040| 75 72 69 2e 76 75 77 2e | 61 63 2e 6e 7a 20 28 52 |uri.vuw.|ac.nz (R|
|00000050| 6f 62 65 72 74 20 44 61 | 76 69 65 73 29 0a 53 75 |obert Da|vies).Su|
|00000060| 62 6a 65 63 74 3a 20 76 | 33 34 69 31 31 32 3a 20 |bject: v|34i112: |
|00000070| 20 6e 65 77 6d 61 74 30 | 37 20 2d 20 41 20 6d 61 | newmat0|7 - A ma|
|00000080| 74 72 69 78 20 70 61 63 | 6b 61 67 65 20 69 6e 20 |trix pac|kage in |
|00000090| 43 2b 2b 2c 20 50 61 72 | 74 30 36 2f 30 38 0a 4d |C++, Par|t06/08.M|
|000000a0| 65 73 73 61 67 65 2d 49 | 44 3a 20 3c 31 39 39 33 |essage-I|D: <1993|
|000000b0| 4a 61 6e 31 31 2e 31 35 | 33 32 34 38 2e 32 35 33 |Jan11.15|3248.253|
|000000c0| 33 40 73 70 61 72 6b 79 | 2e 69 6d 64 2e 73 74 65 |3@sparky|.imd.ste|
|000000d0| 72 6c 69 6e 67 2e 63 6f | 6d 3e 0a 46 6f 6c 6c 6f |rling.co|m>.Follo|
|000000e0| 77 75 70 2d 54 6f 3a 20 | 63 6f 6d 70 2e 73 6f 75 |wup-To: |comp.sou|
|000000f0| 72 63 65 73 2e 64 0a 58 | 2d 4d 64 34 2d 53 69 67 |rces.d.X|-Md4-Sig|
|00000100| 6e 61 74 75 72 65 3a 20 | 33 66 32 31 65 64 30 35 |nature: |3f21ed05|
|00000110| 61 38 65 33 38 33 31 62 | 61 36 34 39 36 39 33 61 |a8e3831b|a649693a|
|00000120| 38 38 62 39 61 36 62 65 | 0a 53 65 6e 64 65 72 3a |88b9a6be|.Sender:|
|00000130| 20 6b 65 6e 74 40 73 70 | 61 72 6b 79 2e 69 6d 64 | kent@sp|arky.imd|
|00000140| 2e 73 74 65 72 6c 69 6e | 67 2e 63 6f 6d 20 28 4b |.sterlin|g.com (K|
|00000150| 65 6e 74 20 4c 61 6e 64 | 66 69 65 6c 64 29 0a 4f |ent Land|field).O|
|00000160| 72 67 61 6e 69 7a 61 74 | 69 6f 6e 3a 20 53 74 65 |rganizat|ion: Ste|
|00000170| 72 6c 69 6e 67 20 53 6f | 66 74 77 61 72 65 0a 52 |rling So|ftware.R|
|00000180| 65 66 65 72 65 6e 63 65 | 73 3a 20 3c 63 73 6d 2d |eference|s: <csm-|
|00000190| 76 33 34 69 31 30 37 3d | 6e 65 77 6d 61 74 30 37 |v34i107=|newmat07|
|000001a0| 2e 30 39 32 37 30 36 40 | 73 70 61 72 6b 79 2e 49 |.092706@|sparky.I|
|000001b0| 4d 44 2e 53 74 65 72 6c | 69 6e 67 2e 43 4f 4d 3e |MD.Sterl|ing.COM>|
|000001c0| 0a 44 61 74 65 3a 20 4d | 6f 6e 2c 20 31 31 20 4a |.Date: M|on, 11 J|
|000001d0| 61 6e 20 31 39 39 33 20 | 31 35 3a 33 32 3a 34 38 |an 1993 |15:32:48|
|000001e0| 20 47 4d 54 0a 41 70 70 | 72 6f 76 65 64 3a 20 6b | GMT.App|roved: k|
|000001f0| 65 6e 74 40 73 70 61 72 | 6b 79 2e 69 6d 64 2e 73 |ent@spar|ky.imd.s|
|00000200| 74 65 72 6c 69 6e 67 2e | 63 6f 6d 0a 4c 69 6e 65 |terling.|com.Line|
|00000210| 73 3a 20 32 30 39 38 0a | 0a 53 75 62 6d 69 74 74 |s: 2098.|.Submitt|
|00000220| 65 64 2d 62 79 3a 20 72 | 6f 62 65 72 74 64 40 6b |ed-by: r|obertd@k|
|00000230| 61 75 72 69 2e 76 75 77 | 2e 61 63 2e 6e 7a 20 28 |auri.vuw|.ac.nz (|
|00000240| 52 6f 62 65 72 74 20 44 | 61 76 69 65 73 29 0a 50 |Robert D|avies).P|
|00000250| 6f 73 74 69 6e 67 2d 6e | 75 6d 62 65 72 3a 20 56 |osting-n|umber: V|
|00000260| 6f 6c 75 6d 65 20 33 34 | 2c 20 49 73 73 75 65 20 |olume 34|, Issue |
|00000270| 31 31 32 0a 41 72 63 68 | 69 76 65 2d 6e 61 6d 65 |112.Arch|ive-name|
|00000280| 3a 20 6e 65 77 6d 61 74 | 30 37 2f 70 61 72 74 30 |: newmat|07/part0|
|00000290| 36 0a 45 6e 76 69 72 6f | 6e 6d 65 6e 74 3a 20 43 |6.Enviro|nment: C|
|000002a0| 2b 2b 0a 53 75 70 65 72 | 73 65 64 65 73 3a 20 6e |++.Super|sedes: n|
|000002b0| 65 77 6d 61 74 30 36 3a | 20 56 6f 6c 75 6d 65 20 |ewmat06:| Volume |
|000002c0| 33 34 2c 20 49 73 73 75 | 65 20 37 2d 31 33 0a 0a |34, Issu|e 7-13..|
|000002d0| 23 21 20 2f 62 69 6e 2f | 73 68 0a 23 20 54 68 69 |#! /bin/|sh.# Thi|
|000002e0| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|000002f0| 68 69 76 65 2e 20 20 52 | 65 6d 6f 76 65 20 61 6e |hive. R|emove an|
|00000300| 79 74 68 69 6e 67 20 62 | 65 66 6f 72 65 20 74 68 |ything b|efore th|
|00000310| 69 73 20 6c 69 6e 65 2c | 20 74 68 65 6e 20 75 6e |is line,| then un|
|00000320| 70 61 63 6b 0a 23 20 69 | 74 20 62 79 20 73 61 76 |pack.# i|t by sav|
|00000330| 69 6e 67 20 69 74 20 69 | 6e 74 6f 20 61 20 66 69 |ing it i|nto a fi|
|00000340| 6c 65 20 61 6e 64 20 74 | 79 70 69 6e 67 20 22 73 |le and t|yping "s|
|00000350| 68 20 66 69 6c 65 22 2e | 20 20 54 6f 20 6f 76 65 |h file".| To ove|
|00000360| 72 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 0a |rwrite e|xisting.|
|00000370| 23 20 66 69 6c 65 73 2c | 20 74 79 70 65 20 22 73 |# files,| type "s|
|00000380| 68 20 66 69 6c 65 20 2d | 63 22 2e 20 20 59 6f 75 |h file -|c". You|
|00000390| 20 63 61 6e 20 61 6c 73 | 6f 20 66 65 65 64 20 74 | can als|o feed t|
|000003a0| 68 69 73 20 61 73 20 73 | 74 61 6e 64 61 72 64 20 |his as s|tandard |
|000003b0| 69 6e 70 75 74 20 76 69 | 61 0a 23 20 75 6e 73 68 |input vi|a.# unsh|
|000003c0| 61 72 2c 20 6f 72 20 62 | 79 20 74 79 70 69 6e 67 |ar, or b|y typing|
|000003d0| 20 22 73 68 20 3c 66 69 | 6c 65 22 2c 20 65 2e 67 | "sh <fi|le", e.g|
|000003e0| 2e 2e 20 20 49 66 20 74 | 68 69 73 20 61 72 63 68 |.. If t|his arch|
|000003f0| 69 76 65 20 69 73 20 63 | 6f 6d 70 6c 65 74 65 2c |ive is c|omplete,|
|00000400| 20 79 6f 75 0a 23 20 77 | 69 6c 6c 20 73 65 65 20 | you.# w|ill see |
|00000410| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 6d 65 |the foll|owing me|
|00000420| 73 73 61 67 65 20 61 74 | 20 74 68 65 20 65 6e 64 |ssage at| the end|
|00000430| 3a 0a 23 09 09 22 45 6e | 64 20 6f 66 20 61 72 63 |:.#.."En|d of arc|
|00000440| 68 69 76 65 20 36 20 28 | 6f 66 20 38 29 2e 22 0a |hive 6 (|of 8).".|
|00000450| 23 20 43 6f 6e 74 65 6e | 74 73 3a 20 20 62 61 6e |# Conten|ts: ban|
|00000460| 64 6d 61 74 2e 63 78 78 | 20 63 68 6f 6c 65 73 6b |dmat.cxx| cholesk|
|00000470| 79 2e 63 78 78 20 65 76 | 61 6c 75 65 2e 63 78 78 |y.cxx ev|alue.cxx|
|00000480| 20 65 78 61 6d 70 6c 65 | 2e 74 78 74 20 65 78 63 | example|.txt exc|
|00000490| 65 70 74 2e 63 78 78 0a | 23 20 20 20 66 66 74 2e |ept.cxx.|# fft.|
|000004a0| 63 78 78 20 68 68 6f 6c | 64 65 72 2e 63 78 78 20 |cxx hhol|der.cxx |
|000004b0| 6a 61 63 6f 62 69 2e 63 | 78 78 20 73 6f 72 74 2e |jacobi.c|xx sort.|
|000004c0| 63 78 78 20 73 75 62 6d | 61 74 2e 63 78 78 20 73 |cxx subm|at.cxx s|
|000004d0| 76 64 2e 63 78 78 0a 23 | 20 57 72 61 70 70 65 64 |vd.cxx.#| Wrapped|
|000004e0| 20 62 79 20 72 6f 62 65 | 72 74 40 6b 65 61 20 6f | by robe|rt@kea o|
|000004f0| 6e 20 53 75 6e 20 4a 61 | 6e 20 31 30 20 32 33 3a |n Sun Ja|n 10 23:|
|00000500| 35 38 3a 31 39 20 31 39 | 39 33 0a 50 41 54 48 3d |58:19 19|93.PATH=|
|00000510| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|00000520| 73 72 2f 75 63 62 20 3b | 20 65 78 70 6f 72 74 20 |sr/ucb ;| export |
|00000530| 50 41 54 48 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |PATH.if |test -f |
|00000540| 27 62 61 6e 64 6d 61 74 | 2e 63 78 78 27 20 2d 61 |'bandmat|.cxx' -a|
|00000550| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|00000560| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|00000570| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 63 6c |har: Wil|l not cl|
|00000580| 6f 62 62 65 72 20 65 78 | 69 73 74 69 6e 67 20 66 |obber ex|isting f|
|00000590| 69 6c 65 20 5c 22 27 62 | 61 6e 64 6d 61 74 2e 63 |ile \"'b|andmat.c|
|000005a0| 78 78 27 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |xx'\".el|se.echo |
|000005b0| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|000005c0| 20 5c 22 27 62 61 6e 64 | 6d 61 74 2e 63 78 78 27 | \"'band|mat.cxx'|
|000005d0| 5c 22 20 5c 28 31 30 33 | 34 33 20 63 68 61 72 61 |\" \(103|43 chara|
|000005e0| 63 74 65 72 73 5c 29 0a | 73 65 64 20 22 73 2f 5e |cters\).|sed "s/^|
|000005f0| 58 2f 2f 22 20 3e 27 62 | 61 6e 64 6d 61 74 2e 63 |X//" >'b|andmat.c|
|00000600| 78 78 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |xx' <<'E|ND_OF_FI|
|00000610| 4c 45 27 0a 58 2f 2f 24 | 24 20 62 61 6e 64 6d 61 |LE'.X//$|$ bandma|
|00000620| 74 2e 63 78 78 20 20 20 | 20 20 20 20 20 20 20 20 |t.cxx | |
|00000630| 20 20 20 20 20 20 20 20 | 20 20 42 61 6e 64 20 6d | | Band m|
|00000640| 61 74 72 69 78 20 64 65 | 66 69 6e 69 74 69 6f 6e |atrix de|finition|
|00000650| 73 0a 58 0a 58 2f 2f 20 | 43 6f 70 79 72 69 67 68 |s.X.X// |Copyrigh|
|00000660| 74 20 28 43 29 20 31 39 | 39 31 2c 32 2c 33 3a 20 |t (C) 19|91,2,3: |
|00000670| 52 20 42 20 44 61 76 69 | 65 73 0a 58 0a 58 23 64 |R B Davi|es.X.X#d|
|00000680| 65 66 69 6e 65 20 57 41 | 4e 54 5f 4d 41 54 48 20 |efine WA|NT_MATH |
|00000690| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000006a0| 20 20 20 2f 2f 20 69 6e | 63 6c 75 64 65 2e 68 20 | // in|clude.h |
|000006b0| 77 69 6c 6c 20 67 65 74 | 20 6d 61 74 68 20 66 6e |will get| math fn|
|000006c0| 73 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 22 69 |s.X.X#in|clude "i|
|000006d0| 6e 63 6c 75 64 65 2e 68 | 22 0a 58 0a 58 23 69 6e |nclude.h|".X.X#in|
|000006e0| 63 6c 75 64 65 20 22 6e | 65 77 6d 61 74 2e 68 22 |clude "n|ewmat.h"|
|000006f0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 6e 65 77 6d |.X#inclu|de "newm|
|00000700| 61 74 72 63 2e 68 22 0a | 58 0a 58 2f 2f 23 64 65 |atrc.h".|X.X//#de|
|00000710| 66 69 6e 65 20 52 45 50 | 4f 52 54 20 7b 20 73 74 |fine REP|ORT { st|
|00000720| 61 74 69 63 20 45 78 65 | 43 6f 75 6e 74 65 72 20 |atic Exe|Counter |
|00000730| 45 78 65 43 6f 75 6e 74 | 28 5f 5f 4c 49 4e 45 5f |ExeCount|(__LINE_|
|00000740| 5f 2c 34 29 3b 20 2b 2b | 45 78 65 43 6f 75 6e 74 |_,4); ++|ExeCount|
|00000750| 3b 20 7d 0a 58 0a 58 23 | 64 65 66 69 6e 65 20 52 |; }.X.X#|define R|
|00000760| 45 50 4f 52 54 20 7b 7d | 0a 58 0a 58 2f 2f 23 64 |EPORT {}|.X.X//#d|
|00000770| 65 66 69 6e 65 20 52 45 | 50 4f 52 54 31 20 7b 20 |efine RE|PORT1 { |
|00000780| 73 74 61 74 69 63 20 45 | 78 65 43 6f 75 6e 74 65 |static E|xeCounte|
|00000790| 72 20 45 78 65 43 6f 75 | 6e 74 28 5f 5f 4c 49 4e |r ExeCou|nt(__LIN|
|000007a0| 45 5f 5f 2c 34 29 3b 20 | 45 78 65 43 6f 75 6e 74 |E__,4); |ExeCount|
|000007b0| 2b 2b 3b 20 7d 0a 58 0a | 58 2f 2f 20 52 45 50 4f |++; }.X.|X// REPO|
|000007c0| 52 54 31 20 63 6f 6e 73 | 74 72 75 63 74 6f 72 73 |RT1 cons|tructors|
|000007d0| 20 6f 6e 6c 79 20 2d 20 | 64 6f 65 73 6e 27 74 20 | only - |doesn't |
|000007e0| 77 6f 72 6b 20 69 6e 20 | 74 75 72 62 6f 20 61 6e |work in |turbo an|
|000007f0| 64 20 42 6f 72 6c 61 6e | 64 20 43 2b 2b 0a 58 0a |d Borlan|d C++.X.|
|00000800| 58 23 64 65 66 69 6e 65 | 20 52 45 50 4f 52 54 31 |X#define| REPORT1|
|00000810| 20 7b 7d 0a 58 0a 58 2f | 2f 23 64 65 66 69 6e 65 | {}.X.X/|/#define|
|00000820| 20 4d 4f 4e 49 54 4f 52 | 28 77 68 61 74 2c 73 74 | MONITOR|(what,st|
|00000830| 6f 72 61 67 65 2c 73 74 | 6f 72 65 29 20 5c 0a 58 |orage,st|ore) \.X|
|00000840| 2f 2f 20 20 20 7b 20 63 | 6f 75 74 20 3c 3c 20 77 |// { c|out << w|
|00000850| 68 61 74 20 3c 3c 20 22 | 20 22 20 3c 3c 20 73 74 |hat << "| " << st|
|00000860| 6f 72 61 67 65 20 3c 3c | 20 22 20 61 74 20 22 20 |orage <<| " at " |
|00000870| 3c 3c 20 28 6c 6f 6e 67 | 29 73 74 6f 72 65 20 3c |<< (long|)store <|
|00000880| 3c 20 22 5c 6e 22 3b 20 | 7d 0a 58 0a 58 23 64 65 |< "\n"; |}.X.X#de|
|00000890| 66 69 6e 65 20 4d 4f 4e | 49 54 4f 52 28 77 68 61 |fine MON|ITOR(wha|
|000008a0| 74 2c 73 74 6f 72 65 2c | 73 74 6f 72 61 67 65 29 |t,store,|storage)|
|000008b0| 20 7b 7d 0a 58 0a 58 42 | 61 6e 64 4d 61 74 72 69 | {}.X.XB|andMatri|
|000008c0| 78 3a 3a 42 61 6e 64 4d | 61 74 72 69 78 28 63 6f |x::BandM|atrix(co|
|000008d0| 6e 73 74 20 42 61 73 65 | 4d 61 74 72 69 78 26 20 |nst Base|Matrix& |
|000008e0| 4d 29 0a 58 7b 0a 58 20 | 20 20 52 45 50 4f 52 54 |M).X{.X | REPORT|
|000008f0| 31 20 2f 2f 20 43 68 65 | 63 6b 43 6f 6e 76 65 72 |1 // Che|ckConver|
|00000900| 73 69 6f 6e 28 4d 29 3b | 0a 58 20 20 20 4d 61 74 |sion(M);|.X Mat|
|00000910| 72 69 78 43 6f 6e 76 65 | 72 73 69 6f 6e 43 68 65 |rixConve|rsionChe|
|00000920| 63 6b 20 6d 63 63 3b 0a | 58 20 20 20 47 65 6e 65 |ck mcc;.|X Gene|
|00000930| 72 61 6c 4d 61 74 72 69 | 78 2a 20 67 6d 78 3d 28 |ralMatri|x* gmx=(|
|00000940| 28 42 61 73 65 4d 61 74 | 72 69 78 26 29 4d 29 2e |(BaseMat|rix&)M).|
|00000950| 45 76 61 6c 75 61 74 65 | 28 4d 61 74 72 69 78 54 |Evaluate|(MatrixT|
|00000960| 79 70 65 3a 3a 42 4d 29 | 3b 0a 58 20 20 20 47 65 |ype::BM)|;.X Ge|
|00000970| 74 4d 61 74 72 69 78 28 | 67 6d 78 29 3b 20 43 6f |tMatrix(|gmx); Co|
|00000980| 72 6e 65 72 43 6c 65 61 | 72 28 29 3b 0a 58 7d 0a |rnerClea|r();.X}.|
|00000990| 58 0a 58 76 6f 69 64 20 | 42 61 6e 64 4d 61 74 72 |X.Xvoid |BandMatr|
|000009a0| 69 78 3a 3a 53 65 74 50 | 61 72 61 6d 65 74 65 72 |ix::SetP|arameter|
|000009b0| 73 28 63 6f 6e 73 74 20 | 47 65 6e 65 72 61 6c 4d |s(const |GeneralM|
|000009c0| 61 74 72 69 78 2a 20 67 | 6d 78 29 0a 58 7b 0a 58 |atrix* g|mx).X{.X|
|000009d0| 20 20 20 4d 61 74 72 69 | 78 42 61 6e 64 57 69 64 | Matri|xBandWid|
|000009e0| 74 68 20 62 77 20 3d 20 | 67 6d 78 2d 3e 42 61 6e |th bw = |gmx->Ban|
|000009f0| 64 57 69 64 74 68 28 29 | 3b 0a 58 20 20 20 6c 6f |dWidth()|;.X lo|
|00000a00| 77 65 72 20 3d 20 62 77 | 2e 6c 6f 77 65 72 3b 20 |wer = bw|.lower; |
|00000a10| 75 70 70 65 72 20 3d 20 | 62 77 2e 75 70 70 65 72 |upper = |bw.upper|
|00000a20| 3b 0a 58 7d 0a 58 0a 58 | 76 6f 69 64 20 42 61 6e |;.X}.X.X|void Ban|
|00000a30| 64 4d 61 74 72 69 78 3a | 3a 52 65 44 69 6d 65 6e |dMatrix:|:ReDimen|
|00000a40| 73 69 6f 6e 28 69 6e 74 | 20 6e 2c 20 69 6e 74 20 |sion(int| n, int |
|00000a50| 6c 62 2c 20 69 6e 74 20 | 75 62 29 0a 58 7b 0a 58 |lb, int |ub).X{.X|
|00000a60| 20 20 20 52 45 50 4f 52 | 54 0a 58 20 20 20 54 72 | REPOR|T.X Tr|
|00000a70| 61 63 65 72 20 74 72 28 | 22 42 61 6e 64 4d 61 74 |acer tr(|"BandMat|
|00000a80| 72 69 78 3a 3a 52 65 44 | 69 6d 65 6e 73 69 6f 6e |rix::ReD|imension|
|00000a90| 22 29 3b 0a 58 20 20 20 | 69 66 20 28 6c 62 3c 30 |");.X |if (lb<0|
|00000aa0| 20 7c 7c 20 75 62 3c 30 | 29 20 54 68 72 6f 77 28 | || ub<0|) Throw(|
|00000ab0| 50 72 6f 67 72 61 6d 45 | 78 63 65 70 74 69 6f 6e |ProgramE|xception|
|00000ac0| 28 22 55 6e 64 65 66 69 | 6e 65 64 20 62 61 6e 64 |("Undefi|ned band|
|00000ad0| 77 69 64 74 68 22 29 29 | 3b 0a 58 20 20 20 6c 6f |width"))|;.X lo|
|00000ae0| 77 65 72 20 3d 20 28 6c | 62 3c 3d 6e 29 20 3f 20 |wer = (l|b<=n) ? |
|00000af0| 6c 62 20 3a 20 6e 2d 31 | 3b 20 75 70 70 65 72 20 |lb : n-1|; upper |
|00000b00| 3d 20 28 75 62 3c 3d 6e | 29 20 3f 20 75 62 20 3a |= (ub<=n|) ? ub :|
|00000b10| 20 6e 2d 31 3b 0a 58 20 | 20 20 47 65 6e 65 72 61 | n-1;.X | Genera|
|00000b20| 6c 4d 61 74 72 69 78 3a | 3a 52 65 44 69 6d 65 6e |lMatrix:|:ReDimen|
|00000b30| 73 69 6f 6e 28 6e 2c 6e | 2c 6e 2a 28 6c 6f 77 65 |sion(n,n|,n*(lowe|
|00000b40| 72 2b 31 2b 75 70 70 65 | 72 29 29 3b 20 43 6f 72 |r+1+uppe|r)); Cor|
|00000b50| 6e 65 72 43 6c 65 61 72 | 28 29 3b 0a 58 7d 0a 58 |nerClear|();.X}.X|
|00000b60| 0a 58 76 6f 69 64 20 42 | 61 6e 64 4d 61 74 72 69 |.Xvoid B|andMatri|
|00000b70| 78 3a 3a 6f 70 65 72 61 | 74 6f 72 3d 28 63 6f 6e |x::opera|tor=(con|
|00000b80| 73 74 20 42 61 73 65 4d | 61 74 72 69 78 26 20 58 |st BaseM|atrix& X|
|00000b90| 29 0a 58 7b 0a 58 20 20 | 20 52 45 50 4f 52 54 20 |).X{.X | REPORT |
|00000ba0| 2f 2f 20 43 68 65 63 6b | 43 6f 6e 76 65 72 73 69 |// Check|Conversi|
|00000bb0| 6f 6e 28 58 29 3b 0a 58 | 20 20 20 4d 61 74 72 69 |on(X);.X| Matri|
|00000bc0| 78 43 6f 6e 76 65 72 73 | 69 6f 6e 43 68 65 63 6b |xConvers|ionCheck|
|00000bd0| 20 6d 63 63 3b 0a 58 20 | 20 20 45 71 28 58 2c 4d | mcc;.X | Eq(X,M|
|00000be0| 61 74 72 69 78 54 79 70 | 65 3a 3a 42 4d 29 3b 20 |atrixTyp|e::BM); |
|00000bf0| 43 6f 72 6e 65 72 43 6c | 65 61 72 28 29 3b 0a 58 |CornerCl|ear();.X|
|00000c00| 7d 0a 58 0a 58 76 6f 69 | 64 20 42 61 6e 64 4d 61 |}.X.Xvoi|d BandMa|
|00000c10| 74 72 69 78 3a 3a 43 6f | 72 6e 65 72 43 6c 65 61 |trix::Co|rnerClea|
|00000c20| 72 28 29 20 63 6f 6e 73 | 74 0a 58 7b 0a 58 20 20 |r() cons|t.X{.X |
|00000c30| 20 2f 2f 20 73 65 74 20 | 75 6e 75 73 65 64 20 70 | // set |unused p|
|00000c40| 61 72 74 73 20 6f 66 20 | 42 61 6e 64 4d 61 74 72 |arts of |BandMatr|
|00000c50| 69 78 20 74 6f 20 7a 65 | 72 6f 0a 58 20 20 20 52 |ix to ze|ro.X R|
|00000c60| 45 50 4f 52 54 0a 58 20 | 20 20 69 6e 74 20 69 20 |EPORT.X | int i |
|00000c70| 3d 20 6c 6f 77 65 72 3b | 20 52 65 61 6c 2a 20 73 |= lower;| Real* s|
|00000c80| 20 3d 20 73 74 6f 72 65 | 3b 20 69 6e 74 20 62 77 | = store|; int bw|
|00000c90| 20 3d 20 6c 6f 77 65 72 | 20 2b 20 31 20 2b 20 75 | = lower| + 1 + u|
|00000ca0| 70 70 65 72 3b 0a 58 20 | 20 20 77 68 69 6c 65 20 |pper;.X | while |
|00000cb0| 28 69 29 0a 58 20 20 20 | 20 20 20 7b 20 69 6e 74 |(i).X | { int|
|00000cc0| 20 6a 20 3d 20 69 2d 2d | 3b 20 52 65 61 6c 2a 20 | j = i--|; Real* |
|00000cd0| 73 6a 20 3d 20 73 3b 20 | 73 20 2b 3d 20 62 77 3b |sj = s; |s += bw;|
|00000ce0| 20 77 68 69 6c 65 20 28 | 6a 2d 2d 29 20 2a 73 6a | while (|j--) *sj|
|00000cf0| 2b 2b 20 3d 20 30 2e 30 | 3b 20 7d 0a 58 20 20 20 |++ = 0.0|; }.X |
|00000d00| 69 20 3d 20 75 70 70 65 | 72 3b 20 73 20 3d 20 73 |i = uppe|r; s = s|
|00000d10| 74 6f 72 65 20 2b 20 73 | 74 6f 72 61 67 65 3b 0a |tore + s|torage;.|
|00000d20| 58 20 20 20 77 68 69 6c | 65 20 28 69 29 0a 58 20 |X whil|e (i).X |
|00000d30| 20 20 20 20 20 7b 20 69 | 6e 74 20 6a 20 3d 20 69 | { i|nt j = i|
|00000d40| 2d 2d 3b 20 52 65 61 6c | 2a 20 73 6a 20 3d 20 73 |--; Real|* sj = s|
|00000d50| 3b 20 73 20 2d 3d 20 62 | 77 3b 20 77 68 69 6c 65 |; s -= b|w; while|
|00000d60| 20 28 6a 2d 2d 29 20 2a | 28 2d 2d 73 6a 29 20 3d | (j--) *|(--sj) =|
|00000d70| 20 30 2e 30 3b 20 7d 0a | 58 7d 0a 58 0a 58 4d 61 | 0.0; }.|X}.X.XMa|
|00000d80| 74 72 69 78 42 61 6e 64 | 57 69 64 74 68 20 4d 61 |trixBand|Width Ma|
|00000d90| 74 72 69 78 42 61 6e 64 | 57 69 64 74 68 3a 3a 6f |trixBand|Width::o|
|00000da0| 70 65 72 61 74 6f 72 2b | 28 63 6f 6e 73 74 20 4d |perator+|(const M|
|00000db0| 61 74 72 69 78 42 61 6e | 64 57 69 64 74 68 26 20 |atrixBan|dWidth& |
|00000dc0| 62 77 29 20 63 6f 6e 73 | 74 0a 58 7b 0a 58 20 20 |bw) cons|t.X{.X |
|00000dd0| 20 69 6e 74 20 6c 20 3d | 20 62 77 2e 6c 6f 77 65 | int l =| bw.lowe|
|00000de0| 72 3b 20 69 6e 74 20 75 | 20 3d 20 62 77 2e 75 70 |r; int u| = bw.up|
|00000df0| 70 65 72 3b 0a 58 20 20 | 20 6c 20 3d 20 28 6c 6f |per;.X | l = (lo|
|00000e00| 77 65 72 20 3c 20 30 20 | 7c 7c 20 6c 20 3c 20 30 |wer < 0 ||| l < 0|
|00000e10| 29 20 3f 20 2d 31 20 3a | 20 28 6c 6f 77 65 72 20 |) ? -1 :| (lower |
|00000e20| 3e 20 6c 29 20 3f 20 6c | 6f 77 65 72 20 3a 20 6c |> l) ? l|ower : l|
|00000e30| 3b 0a 58 20 20 20 75 20 | 3d 20 28 75 70 70 65 72 |;.X u |= (upper|
|00000e40| 20 3c 20 30 20 7c 7c 20 | 75 20 3c 20 30 29 20 3f | < 0 || |u < 0) ?|
|00000e50| 20 2d 31 20 3a 20 28 75 | 70 70 65 72 20 3e 20 75 | -1 : (u|pper > u|
|00000e60| 29 20 3f 20 75 70 70 65 | 72 20 3a 20 75 3b 0a 58 |) ? uppe|r : u;.X|
|00000e70| 20 20 20 72 65 74 75 72 | 6e 20 4d 61 74 72 69 78 | retur|n Matrix|
|00000e80| 42 61 6e 64 57 69 64 74 | 68 28 6c 2c 75 29 3b 0a |BandWidt|h(l,u);.|
|00000e90| 58 7d 0a 58 0a 58 4d 61 | 74 72 69 78 42 61 6e 64 |X}.X.XMa|trixBand|
|00000ea0| 57 69 64 74 68 20 4d 61 | 74 72 69 78 42 61 6e 64 |Width Ma|trixBand|
|00000eb0| 57 69 64 74 68 3a 3a 6f | 70 65 72 61 74 6f 72 2a |Width::o|perator*|
|00000ec0| 28 63 6f 6e 73 74 20 4d | 61 74 72 69 78 42 61 6e |(const M|atrixBan|
|00000ed0| 64 57 69 64 74 68 26 20 | 62 77 29 20 63 6f 6e 73 |dWidth& |bw) cons|
|00000ee0| 74 0a 58 7b 0a 58 20 20 | 20 69 6e 74 20 6c 20 3d |t.X{.X | int l =|
|00000ef0| 20 62 77 2e 6c 6f 77 65 | 72 3b 20 69 6e 74 20 75 | bw.lowe|r; int u|
|00000f00| 20 3d 20 62 77 2e 75 70 | 70 65 72 3b 0a 58 20 20 | = bw.up|per;.X |
|00000f10| 20 6c 20 3d 20 28 6c 6f | 77 65 72 20 3c 20 30 20 | l = (lo|wer < 0 |
|00000f20| 7c 7c 20 6c 20 3c 20 30 | 29 20 3f 20 2d 31 20 3a ||| l < 0|) ? -1 :|
|00000f30| 20 6c 6f 77 65 72 2b 6c | 3b 0a 58 20 20 20 75 20 | lower+l|;.X u |
|00000f40| 3d 20 28 75 70 70 65 72 | 20 3c 20 30 20 7c 7c 20 |= (upper| < 0 || |
|00000f50| 75 20 3c 20 30 29 20 3f | 20 2d 31 20 3a 20 75 70 |u < 0) ?| -1 : up|
|00000f60| 70 65 72 2b 75 3b 0a 58 | 20 20 20 72 65 74 75 72 |per+u;.X| retur|
|00000f70| 6e 20 4d 61 74 72 69 78 | 42 61 6e 64 57 69 64 74 |n Matrix|BandWidt|
|00000f80| 68 28 6c 2c 75 29 3b 0a | 58 7d 0a 58 0a 58 55 70 |h(l,u);.|X}.X.XUp|
|00000f90| 70 65 72 42 61 6e 64 4d | 61 74 72 69 78 3a 3a 55 |perBandM|atrix::U|
|00000fa0| 70 70 65 72 42 61 6e 64 | 4d 61 74 72 69 78 28 63 |pperBand|Matrix(c|
|00000fb0| 6f 6e 73 74 20 42 61 73 | 65 4d 61 74 72 69 78 26 |onst Bas|eMatrix&|
|00000fc0| 20 4d 29 0a 58 7b 0a 58 | 20 20 20 52 45 50 4f 52 | M).X{.X| REPOR|
|00000fd0| 54 31 20 2f 2f 20 43 68 | 65 63 6b 43 6f 6e 76 65 |T1 // Ch|eckConve|
|00000fe0| 72 73 69 6f 6e 28 4d 29 | 3b 0a 58 20 20 20 4d 61 |rsion(M)|;.X Ma|
|00000ff0| 74 72 69 78 43 6f 6e 76 | 65 72 73 69 6f 6e 43 68 |trixConv|ersionCh|
|00001000| 65 63 6b 20 6d 63 63 3b | 0a 58 20 20 20 47 65 6e |eck mcc;|.X Gen|
|00001010| 65 72 61 6c 4d 61 74 72 | 69 78 2a 20 67 6d 78 3d |eralMatr|ix* gmx=|
|00001020| 28 28 42 61 73 65 4d 61 | 74 72 69 78 26 29 4d 29 |((BaseMa|trix&)M)|
|00001030| 2e 45 76 61 6c 75 61 74 | 65 28 4d 61 74 72 69 78 |.Evaluat|e(Matrix|
|00001040| 54 79 70 65 3a 3a 55 42 | 29 3b 0a 58 20 20 20 47 |Type::UB|);.X G|
|00001050| 65 74 4d 61 74 72 69 78 | 28 67 6d 78 29 3b 20 43 |etMatrix|(gmx); C|
|00001060| 6f 72 6e 65 72 43 6c 65 | 61 72 28 29 3b 0a 58 7d |ornerCle|ar();.X}|
|00001070| 0a 58 0a 58 76 6f 69 64 | 20 55 70 70 65 72 42 61 |.X.Xvoid| UpperBa|
|00001080| 6e 64 4d 61 74 72 69 78 | 3a 3a 6f 70 65 72 61 74 |ndMatrix|::operat|
|00001090| 6f 72 3d 28 63 6f 6e 73 | 74 20 42 61 73 65 4d 61 |or=(cons|t BaseMa|
|000010a0| 74 72 69 78 26 20 58 29 | 0a 58 7b 0a 58 20 20 20 |trix& X)|.X{.X |
|000010b0| 52 45 50 4f 52 54 20 2f | 2f 20 43 68 65 63 6b 43 |REPORT /|/ CheckC|
|000010c0| 6f 6e 76 65 72 73 69 6f | 6e 28 58 29 3b 0a 58 20 |onversio|n(X);.X |
|000010d0| 20 20 4d 61 74 72 69 78 | 43 6f 6e 76 65 72 73 69 | Matrix|Conversi|
|000010e0| 6f 6e 43 68 65 63 6b 20 | 6d 63 63 3b 0a 58 20 20 |onCheck |mcc;.X |
|000010f0| 20 45 71 28 58 2c 4d 61 | 74 72 69 78 54 79 70 65 | Eq(X,Ma|trixType|
|00001100| 3a 3a 55 42 29 3b 20 43 | 6f 72 6e 65 72 43 6c 65 |::UB); C|ornerCle|
|00001110| 61 72 28 29 3b 0a 58 7d | 0a 58 0a 58 4c 6f 77 65 |ar();.X}|.X.XLowe|
|00001120| 72 42 61 6e 64 4d 61 74 | 72 69 78 3a 3a 4c 6f 77 |rBandMat|rix::Low|
|00001130| 65 72 42 61 6e 64 4d 61 | 74 72 69 78 28 63 6f 6e |erBandMa|trix(con|
|00001140| 73 74 20 42 61 73 65 4d | 61 74 72 69 78 26 20 4d |st BaseM|atrix& M|
|00001150| 29 0a 58 7b 0a 58 20 20 | 20 52 45 50 4f 52 54 31 |).X{.X | REPORT1|
|00001160| 20 2f 2f 20 43 68 65 63 | 6b 43 6f 6e 76 65 72 73 | // Chec|kConvers|
|00001170| 69 6f 6e 28 4d 29 3b 0a | 58 20 20 20 4d 61 74 72 |ion(M);.|X Matr|
|00001180| 69 78 43 6f 6e 76 65 72 | 73 69 6f 6e 43 68 65 63 |ixConver|sionChec|
|00001190| 6b 20 6d 63 63 3b 0a 58 | 20 20 20 47 65 6e 65 72 |k mcc;.X| Gener|
|000011a0| 61 6c 4d 61 74 72 69 78 | 2a 20 67 6d 78 3d 28 28 |alMatrix|* gmx=((|
|000011b0| 42 61 73 65 4d 61 74 72 | 69 78 26 29 4d 29 2e 45 |BaseMatr|ix&)M).E|
|000011c0| 76 61 6c 75 61 74 65 28 | 4d 61 74 72 69 78 54 79 |valuate(|MatrixTy|
|000011d0| 70 65 3a 3a 4c 42 29 3b | 0a 58 20 20 20 47 65 74 |pe::LB);|.X Get|
|000011e0| 4d 61 74 72 69 78 28 67 | 6d 78 29 3b 20 43 6f 72 |Matrix(g|mx); Cor|
|000011f0| 6e 65 72 43 6c 65 61 72 | 28 29 3b 0a 58 7d 0a 58 |nerClear|();.X}.X|
|00001200| 0a 58 76 6f 69 64 20 4c | 6f 77 65 72 42 61 6e 64 |.Xvoid L|owerBand|
|00001210| 4d 61 74 72 69 78 3a 3a | 6f 70 65 72 61 74 6f 72 |Matrix::|operator|
|00001220| 3d 28 63 6f 6e 73 74 20 | 42 61 73 65 4d 61 74 72 |=(const |BaseMatr|
|00001230| 69 78 26 20 58 29 0a 58 | 7b 0a 58 20 20 20 52 45 |ix& X).X|{.X RE|
|00001240| 50 4f 52 54 20 2f 2f 20 | 43 68 65 63 6b 43 6f 6e |PORT // |CheckCon|
|00001250| 76 65 72 73 69 6f 6e 28 | 58 29 3b 0a 58 20 20 20 |version(|X);.X |
|00001260| 4d 61 74 72 69 78 43 6f | 6e 76 65 72 73 69 6f 6e |MatrixCo|nversion|
|00001270| 43 68 65 63 6b 20 6d 63 | 63 3b 0a 58 20 20 20 45 |Check mc|c;.X E|
|00001280| 71 28 58 2c 4d 61 74 72 | 69 78 54 79 70 65 3a 3a |q(X,Matr|ixType::|
|00001290| 4c 42 29 3b 20 43 6f 72 | 6e 65 72 43 6c 65 61 72 |LB); Cor|nerClear|
|000012a0| 28 29 3b 0a 58 7d 0a 58 | 0a 58 42 61 6e 64 4c 55 |();.X}.X|.XBandLU|
|000012b0| 4d 61 74 72 69 78 3a 3a | 42 61 6e 64 4c 55 4d 61 |Matrix::|BandLUMa|
|000012c0| 74 72 69 78 28 63 6f 6e | 73 74 20 42 61 73 65 4d |trix(con|st BaseM|
|000012d0| 61 74 72 69 78 26 20 6d | 29 0a 58 7b 0a 58 20 20 |atrix& m|).X{.X |
|000012e0| 20 52 45 50 4f 52 54 31 | 0a 58 20 20 20 54 72 61 | REPORT1|.X Tra|
|000012f0| 63 65 72 20 74 72 28 22 | 42 61 6e 64 4c 55 4d 61 |cer tr("|BandLUMa|
|00001300| 74 72 69 78 22 29 3b 0a | 58 20 20 20 47 65 6e 65 |trix");.|X Gene|
|00001310| 72 61 6c 4d 61 74 72 69 | 78 2a 20 67 6d 20 3d 20 |ralMatri|x* gm = |
|00001320| 28 28 42 61 73 65 4d 61 | 74 72 69 78 26 29 6d 29 |((BaseMa|trix&)m)|
|00001330| 2e 45 76 61 6c 75 61 74 | 65 28 4d 61 74 72 69 78 |.Evaluat|e(Matrix|
|00001340| 54 79 70 65 3a 3a 42 4d | 29 3b 0a 58 20 20 20 47 |Type::BM|);.X G|
|00001350| 65 74 4d 61 74 72 69 78 | 28 67 6d 29 3b 0a 58 20 |etMatrix|(gm);.X |
|00001360| 20 20 6d 31 20 3d 20 28 | 28 42 61 6e 64 4d 61 74 | m1 = (|(BandMat|
|00001370| 72 69 78 2a 29 67 6d 29 | 2d 3e 6c 6f 77 65 72 3b |rix*)gm)|->lower;|
|00001380| 20 6d 32 20 3d 20 28 28 | 42 61 6e 64 4d 61 74 72 | m2 = ((|BandMatr|
|00001390| 69 78 2a 29 67 6d 29 2d | 3e 75 70 70 65 72 3b 0a |ix*)gm)-|>upper;.|
|000013a0| 58 20 20 20 69 66 20 28 | 6e 72 6f 77 73 21 3d 6e |X if (|nrows!=n|
|000013b0| 63 6f 6c 73 29 20 54 68 | 72 6f 77 28 4e 6f 74 53 |cols) Th|row(NotS|
|000013c0| 71 75 61 72 65 45 78 63 | 65 70 74 69 6f 6e 28 2a |quareExc|eption(*|
|000013d0| 74 68 69 73 29 29 3b 0a | 58 20 20 20 64 20 3d 20 |this));.|X d = |
|000013e0| 54 52 55 45 3b 20 73 69 | 6e 67 20 3d 20 46 41 4c |TRUE; si|ng = FAL|
|000013f0| 53 45 3b 0a 58 20 20 20 | 69 6e 64 78 20 3d 20 6e |SE;.X |indx = n|
|00001400| 65 77 20 69 6e 74 20 5b | 6e 72 6f 77 73 5d 3b 20 |ew int [|nrows]; |
|00001410| 4d 61 74 72 69 78 45 72 | 72 6f 72 4e 6f 53 70 61 |MatrixEr|rorNoSpa|
|00001420| 63 65 28 69 6e 64 78 29 | 3b 0a 58 20 20 20 4d 4f |ce(indx)|;.X MO|
|00001430| 4e 49 54 4f 52 5f 49 4e | 54 5f 4e 45 57 28 22 49 |NITOR_IN|T_NEW("I|
|00001440| 6e 64 65 78 20 28 42 6e | 64 4c 55 4d 61 74 29 22 |ndex (Bn|dLUMat)"|
|00001450| 2c 6e 72 6f 77 73 2c 69 | 6e 64 78 29 0a 58 20 20 |,nrows,i|ndx).X |
|00001460| 20 73 74 6f 72 61 67 65 | 32 20 3d 20 6e 72 6f 77 | storage|2 = nrow|
|00001470| 73 20 2a 20 6d 31 3b 0a | 58 20 20 20 73 74 6f 72 |s * m1;.|X stor|
|00001480| 65 32 20 3d 20 6e 65 77 | 20 52 65 61 6c 20 5b 73 |e2 = new| Real [s|
|00001490| 74 6f 72 61 67 65 32 5d | 3b 20 4d 61 74 72 69 78 |torage2]|; Matrix|
|000014a0| 45 72 72 6f 72 4e 6f 53 | 70 61 63 65 28 73 74 6f |ErrorNoS|pace(sto|
|000014b0| 72 65 32 29 3b 0a 58 20 | 20 20 4d 4f 4e 49 54 4f |re2);.X | MONITO|
|000014c0| 52 5f 52 45 41 4c 5f 4e | 45 57 28 22 4d 61 6b 65 |R_REAL_N|EW("Make|
|000014d0| 20 28 42 61 6e 64 4c 55 | 4d 61 74 29 22 2c 73 74 | (BandLU|Mat)",st|
|000014e0| 6f 72 61 67 65 32 2c 73 | 74 6f 72 65 32 29 0a 58 |orage2,s|tore2).X|
|000014f0| 20 20 20 6c 75 64 63 6d | 70 28 29 3b 0a 58 7d 0a | ludcm|p();.X}.|
|00001500| 58 0a 58 42 61 6e 64 4c | 55 4d 61 74 72 69 78 3a |X.XBandL|UMatrix:|
|00001510| 3a 7e 42 61 6e 64 4c 55 | 4d 61 74 72 69 78 28 29 |:~BandLU|Matrix()|
|00001520| 0a 58 7b 0a 58 20 20 20 | 4d 4f 4e 49 54 4f 52 5f |.X{.X |MONITOR_|
|00001530| 49 4e 54 5f 44 45 4c 45 | 54 45 28 22 49 6e 64 65 |INT_DELE|TE("Inde|
|00001540| 78 20 28 42 6e 64 4c 55 | 4d 61 74 29 22 2c 6e 72 |x (BndLU|Mat)",nr|
|00001550| 6f 77 73 2c 69 6e 64 78 | 29 0a 58 20 20 20 4d 4f |ows,indx|).X MO|
|00001560| 4e 49 54 4f 52 5f 52 45 | 41 4c 5f 44 45 4c 45 54 |NITOR_RE|AL_DELET|
|00001570| 45 28 22 44 65 6c 65 74 | 65 20 28 42 6e 64 4c 55 |E("Delet|e (BndLU|
|00001580| 4d 74 29 22 2c 73 74 6f | 72 61 67 65 32 2c 73 74 |Mt)",sto|rage2,st|
|00001590| 6f 72 65 32 29 0a 58 23 | 69 66 64 65 66 20 56 65 |ore2).X#|ifdef Ve|
|000015a0| 72 73 69 6f 6e 32 31 0a | 58 20 20 20 64 65 6c 65 |rsion21.|X dele|
|000015b0| 74 65 20 5b 5d 20 69 6e | 64 78 3b 20 64 65 6c 65 |te [] in|dx; dele|
|000015c0| 74 65 20 5b 5d 20 73 74 | 6f 72 65 32 3b 0a 58 23 |te [] st|ore2;.X#|
|000015d0| 65 6c 73 65 0a 58 20 20 | 20 64 65 6c 65 74 65 20 |else.X | delete |
|000015e0| 5b 6e 72 6f 77 73 5d 20 | 69 6e 64 78 3b 20 64 65 |[nrows] |indx; de|
|000015f0| 6c 65 74 65 20 5b 73 74 | 6f 72 61 67 65 32 5d 20 |lete [st|orage2] |
|00001600| 73 74 6f 72 65 32 3b 0a | 58 23 65 6e 64 69 66 0a |store2;.|X#endif.|
|00001610| 58 7d 0a 58 0a 58 4d 61 | 74 72 69 78 54 79 70 65 |X}.X.XMa|trixType|
|00001620| 20 42 61 6e 64 4c 55 4d | 61 74 72 69 78 3a 3a 54 | BandLUM|atrix::T|
|00001630| 79 70 65 28 29 20 63 6f | 6e 73 74 20 7b 20 72 65 |ype() co|nst { re|
|00001640| 74 75 72 6e 20 4d 61 74 | 72 69 78 54 79 70 65 3a |turn Mat|rixType:|
|00001650| 3a 42 43 3b 20 7d 0a 58 | 0a 58 0a 58 4c 6f 67 41 |:BC; }.X|.X.XLogA|
|00001660| 6e 64 53 69 67 6e 20 42 | 61 6e 64 4c 55 4d 61 74 |ndSign B|andLUMat|
|00001670| 72 69 78 3a 3a 4c 6f 67 | 44 65 74 65 72 6d 69 6e |rix::Log|Determin|
|00001680| 61 6e 74 28 29 20 63 6f | 6e 73 74 0a 58 7b 0a 58 |ant() co|nst.X{.X|
|00001690| 20 20 20 69 66 20 28 73 | 69 6e 67 29 20 72 65 74 | if (s|ing) ret|
|000016a0| 75 72 6e 20 30 2e 30 3b | 0a 58 20 20 20 52 65 61 |urn 0.0;|.X Rea|
|000016b0| 6c 2a 20 61 20 3d 20 73 | 74 6f 72 65 3b 20 69 6e |l* a = s|tore; in|
|000016c0| 74 20 77 20 3d 20 6d 31 | 2b 31 2b 6d 32 3b 20 4c |t w = m1|+1+m2; L|
|000016d0| 6f 67 41 6e 64 53 69 67 | 6e 20 73 75 6d 3b 20 69 |ogAndSig|n sum; i|
|000016e0| 6e 74 20 69 20 3d 20 6e | 72 6f 77 73 3b 0a 58 20 |nt i = n|rows;.X |
|000016f0| 20 20 77 68 69 6c 65 20 | 28 69 2d 2d 29 20 7b 20 | while |(i--) { |
|00001700| 73 75 6d 20 2a 3d 20 2a | 61 3b 20 61 20 2b 3d 20 |sum *= *|a; a += |
|00001710| 77 3b 20 7d 0a 58 20 20 | 20 69 66 20 28 21 64 29 |w; }.X | if (!d)|
|00001720| 20 73 75 6d 2e 43 68 61 | 6e 67 65 53 69 67 6e 28 | sum.Cha|ngeSign(|
|00001730| 29 3b 20 72 65 74 75 72 | 6e 20 73 75 6d 3b 0a 58 |); retur|n sum;.X|
|00001740| 7d 0a 58 0a 58 47 65 6e | 65 72 61 6c 4d 61 74 72 |}.X.XGen|eralMatr|
|00001750| 69 78 2a 20 42 61 6e 64 | 4d 61 74 72 69 78 3a 3a |ix* Band|Matrix::|
|00001760| 4d 61 6b 65 53 6f 6c 76 | 65 72 28 29 0a 58 7b 0a |MakeSolv|er().X{.|
|00001770| 58 20 20 20 52 45 50 4f | 52 54 0a 58 20 20 20 47 |X REPO|RT.X G|
|00001780| 65 6e 65 72 61 6c 4d 61 | 74 72 69 78 2a 20 67 6d |eneralMa|trix* gm|
|00001790| 20 3d 20 6e 65 77 20 42 | 61 6e 64 4c 55 4d 61 74 | = new B|andLUMat|
|000017a0| 72 69 78 28 2a 74 68 69 | 73 29 3b 0a 58 20 20 20 |rix(*thi|s);.X |
|000017b0| 4d 61 74 72 69 78 45 72 | 72 6f 72 4e 6f 53 70 61 |MatrixEr|rorNoSpa|
|000017c0| 63 65 28 67 6d 29 3b 20 | 67 6d 2d 3e 52 65 6c 65 |ce(gm); |gm->Rele|
|000017d0| 61 73 65 41 6e 64 44 65 | 6c 65 74 65 28 29 3b 20 |aseAndDe|lete(); |
|000017e0| 72 65 74 75 72 6e 20 67 | 6d 3b 0a 58 7d 0a 58 0a |return g|m;.X}.X.|
|000017f0| 58 0a 58 76 6f 69 64 20 | 42 61 6e 64 4c 55 4d 61 |X.Xvoid |BandLUMa|
|00001800| 74 72 69 78 3a 3a 6c 75 | 64 63 6d 70 28 29 0a 58 |trix::lu|dcmp().X|
|00001810| 7b 0a 58 20 20 20 52 45 | 50 4f 52 54 0a 58 20 20 |{.X RE|PORT.X |
|00001820| 20 52 65 61 6c 2a 20 61 | 20 3d 20 73 74 6f 72 65 | Real* a| = store|
|00001830| 3b 0a 58 20 20 20 69 6e | 74 20 69 20 3d 20 6d 31 |;.X in|t i = m1|
|00001840| 3b 20 69 6e 74 20 6a 20 | 3d 20 6d 32 3b 20 69 6e |; int j |= m2; in|
|00001850| 74 20 6b 3b 20 69 6e 74 | 20 6e 20 3d 20 6e 72 6f |t k; int| n = nro|
|00001860| 77 73 3b 20 69 6e 74 20 | 77 20 3d 20 6d 31 20 2b |ws; int |w = m1 +|
|00001870| 20 31 20 2b 20 6d 32 3b | 0a 58 20 20 20 77 68 69 | 1 + m2;|.X whi|
|00001880| 6c 65 20 28 69 29 0a 58 | 20 20 20 7b 0a 58 20 20 |le (i).X| {.X |
|00001890| 20 20 20 20 52 65 61 6c | 2a 20 61 69 20 3d 20 61 | Real|* ai = a|
|000018a0| 20 2b 20 69 3b 0a 58 20 | 20 20 20 20 20 6b 20 3d | + i;.X | k =|
|000018b0| 20 2b 2b 6a 3b 20 77 68 | 69 6c 65 20 28 6b 2d 2d | ++j; wh|ile (k--|
|000018c0| 29 20 2a 61 2b 2b 20 3d | 20 2a 61 69 2b 2b 3b 0a |) *a++ =| *ai++;.|
|000018d0| 58 20 20 20 20 20 20 6b | 20 3d 20 69 2d 2d 3b 20 |X k| = i--; |
|000018e0| 77 68 69 6c 65 20 28 6b | 2d 2d 29 20 2a 61 2b 2b |while (k|--) *a++|
|000018f0| 20 3d 20 30 2e 30 3b 0a | 58 20 20 20 7d 0a 58 0a | = 0.0;.|X }.X.|
|00001900| 58 20 20 20 61 20 3d 20 | 73 74 6f 72 65 3b 20 69 |X a = |store; i|
|00001910| 6e 74 20 6c 20 3d 20 6d | 31 3b 0a 58 20 20 20 66 |nt l = m|1;.X f|
|00001920| 6f 72 20 28 6b 3d 30 3b | 20 6b 3c 6e 3b 20 6b 2b |or (k=0;| k<n; k+|
|00001930| 2b 29 0a 58 20 20 20 7b | 0a 58 20 20 20 20 20 20 |+).X {|.X |
|00001940| 52 65 61 6c 20 78 20 3d | 20 2a 61 3b 20 69 20 3d |Real x =| *a; i =|
|00001950| 20 6b 3b 20 52 65 61 6c | 2a 20 61 6a 20 3d 20 61 | k; Real|* aj = a|
|00001960| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 6c 20 3c |;.X | if (l <|
|00001970| 20 6e 29 20 6c 2b 2b 3b | 0a 58 20 20 20 20 20 20 | n) l++;|.X |
|00001980| 66 6f 72 20 28 6a 3d 6b | 2b 31 3b 20 6a 3c 6c 3b |for (j=k|+1; j<l;|
|00001990| 20 6a 2b 2b 29 0a 58 20 | 20 20 20 20 20 20 20 20 | j++).X | |
|000019a0| 7b 20 61 6a 20 2b 3d 20 | 77 3b 20 69 66 20 28 66 |{ aj += |w; if (f|
|000019b0| 61 62 73 28 78 29 20 3c | 20 66 61 62 73 28 2a 61 |abs(x) <| fabs(*a|
|000019c0| 6a 29 29 20 7b 20 78 20 | 3d 20 2a 61 6a 3b 20 69 |j)) { x |= *aj; i|
|000019d0| 20 3d 20 6a 3b 20 7d 20 | 7d 0a 58 20 20 20 20 20 | = j; } |}.X |
|000019e0| 20 69 6e 64 78 5b 6b 5d | 20 3d 20 69 3b 0a 58 20 | indx[k]| = i;.X |
|000019f0| 20 20 20 20 20 69 66 20 | 28 78 3d 3d 30 29 20 7b | if |(x==0) {|
|00001a00| 20 73 69 6e 67 20 3d 20 | 54 52 55 45 3b 20 72 65 | sing = |TRUE; re|
|00001a10| 74 75 72 6e 3b 20 7d 0a | 58 20 20 20 20 20 20 69 |turn; }.|X i|
|00001a20| 66 20 28 69 21 3d 6b 29 | 0a 58 20 20 20 20 20 20 |f (i!=k)|.X |
|00001a30| 7b 0a 58 20 20 20 20 20 | 20 20 20 20 64 20 3d 20 |{.X | d = |
|00001a40| 21 64 3b 20 52 65 61 6c | 2a 20 61 6b 20 3d 20 61 |!d; Real|* ak = a|
|00001a50| 3b 20 52 65 61 6c 2a 20 | 61 69 20 3d 20 73 74 6f |; Real* |ai = sto|
|00001a60| 72 65 20 2b 20 69 20 2a | 20 77 3b 20 6a 20 3d 20 |re + i *| w; j = |
|00001a70| 77 3b 0a 58 20 20 20 20 | 20 20 20 20 20 77 68 69 |w;.X | whi|
|00001a80| 6c 65 20 28 6a 2d 2d 29 | 20 7b 20 78 20 3d 20 2a |le (j--)| { x = *|
|00001a90| 61 6b 3b 20 2a 61 6b 2b | 2b 20 3d 20 2a 61 69 3b |ak; *ak+|+ = *ai;|
|00001aa0| 20 2a 61 69 2b 2b 20 3d | 20 78 3b 20 7d 0a 58 20 | *ai++ =| x; }.X |
|00001ab0| 20 20 20 20 20 7d 0a 58 | 20 20 20 20 20 20 61 6a | }.X| aj|
|00001ac0| 20 3d 20 61 20 2b 20 77 | 3b 20 52 65 61 6c 2a 20 | = a + w|; Real* |
|00001ad0| 6d 20 3d 20 73 74 6f 72 | 65 32 20 2b 20 6d 31 20 |m = stor|e2 + m1 |
|00001ae0| 2a 20 6b 3b 0a 58 20 20 | 20 20 20 20 66 6f 72 20 |* k;.X | for |
|00001af0| 28 6a 3d 6b 2b 31 3b 20 | 6a 3c 6c 3b 20 6a 2b 2b |(j=k+1; |j<l; j++|
|00001b00| 29 0a 58 20 20 20 20 20 | 20 7b 0a 58 20 20 20 20 |).X | {.X |
|00001b10| 20 20 20 20 20 2a 6d 2b | 2b 20 3d 20 78 20 3d 20 | *m+|+ = x = |
|00001b20| 2a 61 6a 20 2f 20 2a 61 | 3b 20 69 20 3d 20 77 3b |*aj / *a|; i = w;|
|00001b30| 20 52 65 61 6c 2a 20 61 | 6b 20 3d 20 61 3b 0a 58 | Real* a|k = a;.X|
|00001b40| 09 20 77 68 69 6c 65 20 | 28 2d 2d 69 29 20 7b 20 |. while |(--i) { |
|00001b50| 52 65 61 6c 2a 20 61 6a | 31 20 3d 20 61 6a 2b 2b |Real* aj|1 = aj++|
|00001b60| 3b 20 2a 61 6a 31 20 3d | 20 2a 61 6a 20 2d 20 78 |; *aj1 =| *aj - x|
|00001b70| 20 2a 20 2a 28 2b 2b 61 | 6b 29 3b 20 7d 0a 58 20 | * *(++a|k); }.X |
|00001b80| 20 20 20 20 20 20 20 20 | 2a 61 6a 2b 2b 20 3d 20 | |*aj++ = |
|00001b90| 30 2e 30 3b 0a 58 20 20 | 20 20 20 20 7d 0a 58 20 |0.0;.X | }.X |
|00001ba0| 20 20 20 20 20 61 20 2b | 3d 20 77 3b 0a 58 20 20 | a +|= w;.X |
|00001bb0| 20 7d 0a 58 7d 0a 58 0a | 58 76 6f 69 64 20 42 61 | }.X}.X.|Xvoid Ba|
|00001bc0| 6e 64 4c 55 4d 61 74 72 | 69 78 3a 3a 6c 75 62 6b |ndLUMatr|ix::lubk|
|00001bd0| 73 62 28 52 65 61 6c 2a | 20 42 2c 20 69 6e 74 20 |sb(Real*| B, int |
|00001be0| 6d 69 6e 69 29 0a 58 7b | 0a 58 20 20 20 52 45 50 |mini).X{|.X REP|
|00001bf0| 4f 52 54 0a 58 20 20 20 | 54 72 61 63 65 72 20 74 |ORT.X |Tracer t|
|00001c00| 72 28 22 42 61 6e 64 4c | 55 4d 61 74 72 69 78 3a |r("BandL|UMatrix:|
|00001c10| 3a 6c 75 62 6b 73 62 22 | 29 3b 0a 58 20 20 20 69 |:lubksb"|);.X i|
|00001c20| 66 20 28 73 69 6e 67 29 | 20 54 68 72 6f 77 28 53 |f (sing)| Throw(S|
|00001c30| 69 6e 67 75 6c 61 72 45 | 78 63 65 70 74 69 6f 6e |ingularE|xception|
|00001c40| 28 2a 74 68 69 73 29 29 | 3b 0a 58 20 20 20 69 6e |(*this))|;.X in|
|00001c50| 74 20 6e 20 3d 20 6e 72 | 6f 77 73 3b 20 69 6e 74 |t n = nr|ows; int|
|00001c60| 20 6c 20 3d 20 6d 31 3b | 20 69 6e 74 20 77 20 3d | l = m1;| int w =|
|00001c70| 20 6d 31 20 2b 20 31 20 | 2b 20 6d 32 3b 0a 58 0a | m1 + 1 |+ m2;.X.|
|00001c80| 58 20 20 20 66 6f 72 20 | 28 69 6e 74 20 6b 3d 30 |X for |(int k=0|
|00001c90| 3b 20 6b 3c 6e 3b 20 6b | 2b 2b 29 0a 58 20 20 20 |; k<n; k|++).X |
|00001ca0| 7b 0a 58 20 20 20 20 20 | 20 69 6e 74 20 69 20 3d |{.X | int i =|
|00001cb0| 20 69 6e 64 78 5b 6b 5d | 3b 0a 58 20 20 20 20 20 | indx[k]|;.X |
|00001cc0| 20 69 66 20 28 69 21 3d | 6b 29 20 7b 20 52 65 61 | if (i!=|k) { Rea|
|00001cd0| 6c 20 78 3d 42 5b 6b 5d | 3b 20 42 5b 6b 5d 3d 42 |l x=B[k]|; B[k]=B|
|00001ce0| 5b 69 5d 3b 20 42 5b 69 | 5d 3d 78 3b 20 7d 0a 58 |[i]; B[i|]=x; }.X|
|00001cf0| 20 20 20 20 20 20 69 66 | 20 28 6c 3c 6e 29 20 6c | if| (l<n) l|
|00001d00| 2b 2b 3b 0a 58 20 20 20 | 20 20 20 52 65 61 6c 2a |++;.X | Real*|
|00001d10| 20 6d 20 3d 20 73 74 6f | 72 65 32 20 2b 20 6b 2a | m = sto|re2 + k*|
|00001d20| 6d 31 3b 20 52 65 61 6c | 2a 20 62 20 3d 20 42 2b |m1; Real|* b = B+|
|00001d30| 6b 3b 20 52 65 61 6c 2a | 20 62 69 20 3d 20 62 3b |k; Real*| bi = b;|
|00001d40| 0a 58 20 20 20 20 20 20 | 66 6f 72 20 28 69 3d 6b |.X |for (i=k|
|00001d50| 2b 31 3b 20 69 3c 6c 3b | 20 69 2b 2b 29 20 20 2a |+1; i<l;| i++) *|
|00001d60| 28 2b 2b 62 69 29 20 2d | 3d 20 2a 6d 2b 2b 20 2a |(++bi) -|= *m++ *|
|00001d70| 20 2a 62 3b 0a 58 20 20 | 20 7d 0a 58 0a 58 20 20 | *b;.X | }.X.X |
|00001d80| 20 6c 20 3d 20 2d 6d 31 | 3b 0a 58 20 20 20 66 6f | l = -m1|;.X fo|
|00001d90| 72 20 28 69 6e 74 20 69 | 20 3d 20 6e 2d 31 3b 20 |r (int i| = n-1; |
|00001da0| 69 3e 3d 6d 69 6e 69 3b | 20 69 2d 2d 29 0a 58 20 |i>=mini;| i--).X |
|00001db0| 20 20 7b 0a 58 20 20 20 | 20 20 20 52 65 61 6c 2a | {.X | Real*|
|00001dc0| 20 62 20 3d 20 42 20 2b | 20 69 3b 20 52 65 61 6c | b = B +| i; Real|
|00001dd0| 2a 20 62 6b 20 3d 20 62 | 3b 20 52 65 61 6c 20 78 |* bk = b|; Real x|
|00001de0| 20 3d 20 2a 62 6b 3b 0a | 58 20 20 20 20 20 20 52 | = *bk;.|X R|
|00001df0| 65 61 6c 2a 20 61 20 3d | 20 73 74 6f 72 65 20 2b |eal* a =| store +|
|00001e00| 20 77 2a 69 3b 20 52 65 | 61 6c 20 79 20 3d 20 2a | w*i; Re|al y = *|
|00001e10| 61 3b 0a 58 20 20 20 20 | 20 20 69 6e 74 20 6b 20 |a;.X | int k |
|00001e20| 3d 20 6c 2b 6d 31 3b 20 | 77 68 69 6c 65 20 28 6b |= l+m1; |while (k|
|00001e30| 2d 2d 29 20 78 20 2d 3d | 20 20 2a 28 2b 2b 61 29 |--) x -=| *(++a)|
|00001e40| 20 2a 20 2a 28 2b 2b 62 | 6b 29 3b 0a 58 20 20 20 | * *(++b|k);.X |
|00001e50| 20 20 20 2a 62 20 3d 20 | 78 20 2f 20 79 3b 0a 58 | *b = |x / y;.X|
|00001e60| 20 20 20 20 20 20 69 66 | 20 28 6c 20 3c 20 6d 32 | if| (l < m2|
|00001e70| 29 20 6c 2b 2b 3b 0a 58 | 20 20 20 7d 0a 58 7d 0a |) l++;.X| }.X}.|
|00001e80| 58 0a 58 76 6f 69 64 20 | 42 61 6e 64 4c 55 4d 61 |X.Xvoid |BandLUMa|
|00001e90| 74 72 69 78 3a 3a 53 6f | 6c 76 65 72 28 4d 61 74 |trix::So|lver(Mat|
|00001ea0| 72 69 78 52 6f 77 43 6f | 6c 26 20 6d 63 6f 75 74 |rixRowCo|l& mcout|
|00001eb0| 2c 20 63 6f 6e 73 74 20 | 4d 61 74 72 69 78 52 6f |, const |MatrixRo|
|00001ec0| 77 43 6f 6c 26 20 6d 63 | 69 6e 29 0a 58 7b 0a 58 |wCol& mc|in).X{.X|
|00001ed0| 20 20 20 52 45 50 4f 52 | 54 0a 58 20 20 20 52 65 | REPOR|T.X Re|
|00001ee0| 61 6c 2a 20 65 6c 20 3d | 20 6d 63 69 6e 2e 73 74 |al* el =| mcin.st|
|00001ef0| 6f 72 65 3b 20 69 6e 74 | 20 69 20 3d 20 6d 63 69 |ore; int| i = mci|
|00001f00| 6e 2e 73 6b 69 70 3b 0a | 58 20 20 20 77 68 69 6c |n.skip;.|X whil|
|00001f10| 65 20 28 69 2d 2d 29 20 | 2a 65 6c 2b 2b 20 3d 20 |e (i--) |*el++ = |
|00001f20| 30 2e 30 3b 0a 58 20 20 | 20 65 6c 20 2b 3d 20 6d |0.0;.X | el += m|
|00001f30| 63 69 6e 2e 73 74 6f 72 | 61 67 65 3b 20 69 20 3d |cin.stor|age; i =|
|00001f40| 20 6e 72 6f 77 73 20 2d | 20 6d 63 69 6e 2e 73 6b | nrows -| mcin.sk|
|00001f50| 69 70 20 2d 20 6d 63 69 | 6e 2e 73 74 6f 72 61 67 |ip - mci|n.storag|
|00001f60| 65 3b 0a 58 20 20 20 77 | 68 69 6c 65 20 28 69 2d |e;.X w|hile (i-|
|00001f70| 2d 29 20 2a 65 6c 2b 2b | 20 3d 20 30 2e 30 3b 0a |-) *el++| = 0.0;.|
|00001f80| 58 20 20 20 6c 75 62 6b | 73 62 28 6d 63 69 6e 2e |X lubk|sb(mcin.|
|00001f90| 73 74 6f 72 65 2c 20 6d | 63 6f 75 74 2e 73 6b 69 |store, m|cout.ski|
|00001fa0| 70 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2f 20 44 6f 20 |p);.X}.X|.X// Do |
|00001fb0| 77 65 20 6e 65 65 64 20 | 63 68 65 63 6b 20 66 6f |we need |check fo|
|00001fc0| 72 20 65 6e 74 69 72 65 | 6c 79 20 7a 65 72 6f 20 |r entire|ly zero |
|00001fd0| 6f 75 74 70 75 74 3f 0a | 58 0a 58 0a 58 76 6f 69 |output?.|X.X.Xvoi|
|00001fe0| 64 20 55 70 70 65 72 42 | 61 6e 64 4d 61 74 72 69 |d UpperB|andMatri|
|00001ff0| 78 3a 3a 53 6f 6c 76 65 | 72 28 4d 61 74 72 69 78 |x::Solve|r(Matrix|
|00002000| 52 6f 77 43 6f 6c 26 20 | 6d 63 6f 75 74 2c 0a 58 |RowCol& |mcout,.X|
|00002010| 20 20 20 63 6f 6e 73 74 | 20 4d 61 74 72 69 78 52 | const| MatrixR|
|00002020| 6f 77 43 6f 6c 26 20 6d | 63 69 6e 29 0a 58 7b 0a |owCol& m|cin).X{.|
|00002030| 58 20 20 20 52 45 50 4f | 52 54 0a 58 20 20 20 52 |X REPO|RT.X R|
|00002040| 65 61 6c 2a 20 65 6c 78 | 20 3d 20 6d 63 69 6e 2e |eal* elx| = mcin.|
|00002050| 73 74 6f 72 65 2b 6d 63 | 6f 75 74 2e 73 6b 69 70 |store+mc|out.skip|
|00002060| 3b 20 69 6e 74 20 69 20 | 3d 20 6d 63 69 6e 2e 73 |; int i |= mcin.s|
|00002070| 6b 69 70 2d 6d 63 6f 75 | 74 2e 73 6b 69 70 3b 0a |kip-mcou|t.skip;.|
|00002080| 58 20 20 20 77 68 69 6c | 65 20 28 69 2d 2d 20 3e |X whil|e (i-- >|
|00002090| 20 30 29 20 2a 65 6c 78 | 2b 2b 20 3d 20 30 2e 30 | 0) *elx|++ = 0.0|
|000020a0| 3b 0a 58 20 20 20 69 6e | 74 20 6e 72 20 3d 20 6d |;.X in|t nr = m|
|000020b0| 63 69 6e 2e 73 6b 69 70 | 2b 6d 63 69 6e 2e 73 74 |cin.skip|+mcin.st|
|000020c0| 6f 72 61 67 65 3b 20 65 | 6c 78 20 3d 20 6d 63 69 |orage; e|lx = mci|
|000020d0| 6e 2e 73 74 6f 72 65 2b | 6e 72 3b 20 52 65 61 6c |n.store+|nr; Real|
|000020e0| 2a 20 65 6c 20 3d 20 65 | 6c 78 3b 0a 58 20 20 20 |* el = e|lx;.X |
|000020f0| 69 6e 74 20 6a 20 3d 20 | 6d 63 6f 75 74 2e 73 6b |int j = |mcout.sk|
|00002100| 69 70 2b 6d 63 6f 75 74 | 2e 73 74 6f 72 61 67 65 |ip+mcout|.storage|
|00002110| 2d 6e 72 3b 20 69 20 3d | 20 6e 72 2d 6d 63 6f 75 |-nr; i =| nr-mcou|
|00002120| 74 2e 73 6b 69 70 3b 0a | 58 20 20 20 77 68 69 6c |t.skip;.|X whil|
|00002130| 65 20 28 6a 2d 2d 20 3e | 20 30 29 20 2a 65 6c 78 |e (j-- >| 0) *elx|
|00002140| 2b 2b 20 3d 20 30 2e 30 | 3b 0a 58 0a 58 20 20 20 |++ = 0.0|;.X.X |
|00002150| 52 65 61 6c 2a 20 41 65 | 6c 20 3d 20 73 74 6f 72 |Real* Ae|l = stor|
|00002160| 65 20 2b 20 28 75 70 70 | 65 72 2b 31 29 2a 28 69 |e + (upp|er+1)*(i|
|00002170| 2d 31 29 2b 31 3b 20 6a | 20 3d 20 30 3b 0a 58 20 |-1)+1; j| = 0;.X |
|00002180| 20 20 77 68 69 6c 65 20 | 28 69 2d 2d 20 3e 20 30 | while |(i-- > 0|
|00002190| 29 0a 58 20 20 20 7b 0a | 58 20 20 20 20 20 20 65 |).X {.|X e|
|000021a0| 6c 78 20 3d 20 65 6c 3b | 20 52 65 61 6c 20 73 75 |lx = el;| Real su|
|000021b0| 6d 20 3d 20 30 2e 30 3b | 20 69 6e 74 20 6a 78 20 |m = 0.0;| int jx |
|000021c0| 3d 20 6a 3b 0a 58 20 20 | 20 20 20 20 77 68 69 6c |= j;.X | whil|
|000021d0| 65 20 28 6a 78 2d 2d 29 | 20 73 75 6d 20 2b 3d 20 |e (jx--)| sum += |
|000021e0| 2a 28 2d 2d 41 65 6c 29 | 20 2a 20 2a 28 2d 2d 65 |*(--Ael)| * *(--e|
|000021f0| 6c 78 29 3b 0a 58 20 20 | 20 20 20 20 65 6c 78 2d |lx);.X | elx-|
|00002200| 2d 3b 20 2a 65 6c 78 20 | 3d 20 28 2a 65 6c 78 20 |-; *elx |= (*elx |
|00002210| 2d 20 73 75 6d 29 20 2f | 20 2a 28 2d 2d 41 65 6c |- sum) /| *(--Ael|
|00002220| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 6a 3c |);.X | if (j<|
|00002230| 75 70 70 65 72 29 20 41 | 65 6c 20 2d 3d 20 75 70 |upper) A|el -= up|
|00002240| 70 65 72 20 2d 20 28 2b | 2b 6a 29 3b 20 65 6c 73 |per - (+|+j); els|
|00002250| 65 20 65 6c 2d 2d 3b 0a | 58 20 20 20 7d 0a 58 7d |e el--;.|X }.X}|
|00002260| 0a 58 0a 58 76 6f 69 64 | 20 4c 6f 77 65 72 42 61 |.X.Xvoid| LowerBa|
|00002270| 6e 64 4d 61 74 72 69 78 | 3a 3a 53 6f 6c 76 65 72 |ndMatrix|::Solver|
|00002280| 28 4d 61 74 72 69 78 52 | 6f 77 43 6f 6c 26 20 6d |(MatrixR|owCol& m|
|00002290| 63 6f 75 74 2c 0a 58 20 | 20 20 63 6f 6e 73 74 20 |cout,.X | const |
|000022a0| 4d 61 74 72 69 78 52 6f | 77 43 6f 6c 26 20 6d 63 |MatrixRo|wCol& mc|
|000022b0| 69 6e 29 0a 58 7b 0a 58 | 20 20 20 52 45 50 4f 52 |in).X{.X| REPOR|
|000022c0| 54 0a 58 20 20 20 52 65 | 61 6c 2a 20 65 6c 78 20 |T.X Re|al* elx |
|000022d0| 3d 20 6d 63 69 6e 2e 73 | 74 6f 72 65 2b 6d 63 6f |= mcin.s|tore+mco|
|000022e0| 75 74 2e 73 6b 69 70 3b | 20 69 6e 74 20 69 20 3d |ut.skip;| int i =|
|000022f0| 20 6d 63 69 6e 2e 73 6b | 69 70 2d 6d 63 6f 75 74 | mcin.sk|ip-mcout|
|00002300| 2e 73 6b 69 70 3b 0a 58 | 20 20 20 77 68 69 6c 65 |.skip;.X| while|
|00002310| 20 28 69 2d 2d 20 3e 20 | 30 29 20 2a 65 6c 78 2b | (i-- > |0) *elx+|
|00002320| 2b 20 3d 20 30 2e 30 3b | 0a 58 20 20 20 69 6e 74 |+ = 0.0;|.X int|
|00002330| 20 6e 63 20 3d 20 6d 63 | 69 6e 2e 73 6b 69 70 3b | nc = mc|in.skip;|
|00002340| 20 69 20 3d 20 6e 63 2b | 6d 63 69 6e 2e 73 74 6f | i = nc+|mcin.sto|
|00002350| 72 61 67 65 3b 20 65 6c | 78 20 3d 20 6d 63 69 6e |rage; el|x = mcin|
|00002360| 2e 73 74 6f 72 65 2b 69 | 3b 0a 58 20 20 20 69 6e |.store+i|;.X in|
|00002370| 74 20 6e 72 20 3d 20 6d | 63 6f 75 74 2e 73 6b 69 |t nr = m|cout.ski|
|00002380| 70 2b 6d 63 6f 75 74 2e | 73 74 6f 72 61 67 65 3b |p+mcout.|storage;|
|00002390| 20 69 6e 74 20 6a 20 3d | 20 6e 72 2d 69 3b 20 69 | int j =| nr-i; i|
|000023a0| 20 3d 20 6e 72 2d 6e 63 | 3b 0a 58 20 20 20 77 68 | = nr-nc|;.X wh|
|000023b0| 69 6c 65 20 28 6a 2d 2d | 20 3e 20 30 29 20 2a 65 |ile (j--| > 0) *e|
|000023c0| 6c 78 2b 2b 20 3d 20 30 | 2e 30 3b 0a 58 0a 58 20 |lx++ = 0|.0;.X.X |
|000023d0| 20 20 52 65 61 6c 2a 20 | 65 6c 20 3d 20 6d 63 69 | Real* |el = mci|
|000023e0| 6e 2e 73 74 6f 72 65 2b | 6e 63 3b 20 52 65 61 6c |n.store+|nc; Real|
|000023f0| 2a 20 41 65 6c 20 3d 20 | 73 74 6f 72 65 20 2b 20 |* Ael = |store + |
|00002400| 28 6c 6f 77 65 72 2b 31 | 29 2a 6e 63 20 2b 20 6c |(lower+1|)*nc + l|
|00002410| 6f 77 65 72 3b 20 6a 20 | 3d 20 30 3b 0a 58 20 20 |ower; j |= 0;.X |
|00002420| 20 77 68 69 6c 65 20 28 | 69 2d 2d 20 3e 20 30 29 | while (|i-- > 0)|
|00002430| 0a 58 20 20 20 7b 0a 58 | 20 20 20 20 20 20 65 6c |.X {.X| el|
|00002440| 78 20 3d 20 65 6c 3b 20 | 52 65 61 6c 20 73 75 6d |x = el; |Real sum|
|00002450| 20 3d 20 30 2e 30 3b 20 | 69 6e 74 20 6a 78 20 3d | = 0.0; |int jx =|
|00002460| 20 6a 3b 0a 58 20 20 20 | 20 20 20 77 68 69 6c 65 | j;.X | while|
|00002470| 20 28 6a 78 2d 2d 29 20 | 73 75 6d 20 2b 3d 20 2a | (jx--) |sum += *|
|00002480| 41 65 6c 2b 2b 20 2a 20 | 2a 65 6c 78 2b 2b 3b 0a |Ael++ * |*elx++;.|
|00002490| 58 20 20 20 20 20 20 2a | 65 6c 78 20 3d 20 28 2a |X *|elx = (*|
|000024a0| 65 6c 78 20 2d 20 73 75 | 6d 29 20 2f 20 2a 41 65 |elx - su|m) / *Ae|
|000024b0| 6c 2b 2b 3b 0a 58 20 20 | 20 20 20 20 69 66 20 28 |l++;.X | if (|
|000024c0| 6a 3c 6c 6f 77 65 72 29 | 20 41 65 6c 20 2b 3d 20 |j<lower)| Ael += |
|000024d0| 6c 6f 77 65 72 20 2d 20 | 28 2b 2b 6a 29 3b 20 65 |lower - |(++j); e|
|000024e0| 6c 73 65 20 65 6c 2b 2b | 3b 0a 58 20 20 20 7d 0a |lse el++|;.X }.|
|000024f0| 58 7d 0a 58 0a 58 0a 58 | 4c 6f 67 41 6e 64 53 69 |X}.X.X.X|LogAndSi|
|00002500| 67 6e 20 42 61 6e 64 4d | 61 74 72 69 78 3a 3a 4c |gn BandM|atrix::L|
|00002510| 6f 67 44 65 74 65 72 6d | 69 6e 61 6e 74 28 29 20 |ogDeterm|inant() |
|00002520| 63 6f 6e 73 74 0a 58 7b | 0a 58 20 20 20 52 45 50 |const.X{|.X REP|
|00002530| 4f 52 54 0a 58 20 20 20 | 42 61 6e 64 4c 55 4d 61 |ORT.X |BandLUMa|
|00002540| 74 72 69 78 20 43 28 2a | 74 68 69 73 29 3b 20 72 |trix C(*|this); r|
|00002550| 65 74 75 72 6e 20 43 2e | 4c 6f 67 44 65 74 65 72 |eturn C.|LogDeter|
|00002560| 6d 69 6e 61 6e 74 28 29 | 3b 0a 58 7d 0a 58 0a 58 |minant()|;.X}.X.X|
|00002570| 4c 6f 67 41 6e 64 53 69 | 67 6e 20 4c 6f 77 65 72 |LogAndSi|gn Lower|
|00002580| 42 61 6e 64 4d 61 74 72 | 69 78 3a 3a 4c 6f 67 44 |BandMatr|ix::LogD|
|00002590| 65 74 65 72 6d 69 6e 61 | 6e 74 28 29 20 63 6f 6e |etermina|nt() con|
|000025a0| 73 74 0a 58 7b 0a 58 20 | 20 20 52 45 50 4f 52 54 |st.X{.X | REPORT|
|000025b0| 0a 58 20 20 20 69 6e 74 | 20 69 20 3d 20 6e 72 6f |.X int| i = nro|
|000025c0| 77 73 3b 20 4c 6f 67 41 | 6e 64 53 69 67 6e 20 73 |ws; LogA|ndSign s|
|000025d0| 75 6d 3b 20 52 65 61 6c | 2a 20 73 20 3d 20 73 74 |um; Real|* s = st|
|000025e0| 6f 72 65 20 2b 20 6c 6f | 77 65 72 3b 20 69 6e 74 |ore + lo|wer; int|
|000025f0| 20 6a 20 3d 20 6c 6f 77 | 65 72 20 2b 20 31 3b 0a | j = low|er + 1;.|
|00002600| 58 20 20 20 77 68 69 6c | 65 20 28 69 2d 2d 29 20 |X whil|e (i--) |
|00002610| 7b 20 73 75 6d 20 2a 3d | 20 2a 73 3b 20 73 20 2b |{ sum *=| *s; s +|
|00002620| 3d 20 6a 3b 20 7d 0a 58 | 20 20 20 28 28 47 65 6e |= j; }.X| ((Gen|
|00002630| 65 72 61 6c 4d 61 74 72 | 69 78 26 29 2a 74 68 69 |eralMatr|ix&)*thi|
|00002640| 73 29 2e 74 44 65 6c 65 | 74 65 28 29 3b 20 72 65 |s).tDele|te(); re|
|00002650| 74 75 72 6e 20 73 75 6d | 3b 0a 58 7d 0a 58 0a 58 |turn sum|;.X}.X.X|
|00002660| 4c 6f 67 41 6e 64 53 69 | 67 6e 20 55 70 70 65 72 |LogAndSi|gn Upper|
|00002670| 42 61 6e 64 4d 61 74 72 | 69 78 3a 3a 4c 6f 67 44 |BandMatr|ix::LogD|
|00002680| 65 74 65 72 6d 69 6e 61 | 6e 74 28 29 20 63 6f 6e |etermina|nt() con|
|00002690| 73 74 0a 58 7b 0a 58 20 | 20 20 52 45 50 4f 52 54 |st.X{.X | REPORT|
|000026a0| 0a 58 20 20 20 69 6e 74 | 20 69 20 3d 20 6e 72 6f |.X int| i = nro|
|000026b0| 77 73 3b 20 4c 6f 67 41 | 6e 64 53 69 67 6e 20 73 |ws; LogA|ndSign s|
|000026c0| 75 6d 3b 20 52 65 61 6c | 2a 20 73 20 3d 20 73 74 |um; Real|* s = st|
|000026d0| 6f 72 65 3b 20 69 6e 74 | 20 6a 20 3d 20 75 70 70 |ore; int| j = upp|
|000026e0| 65 72 20 2b 20 31 3b 0a | 58 20 20 20 77 68 69 6c |er + 1;.|X whil|
|000026f0| 65 20 28 69 2d 2d 29 20 | 7b 20 73 75 6d 20 2a 3d |e (i--) |{ sum *=|
|00002700| 20 2a 73 3b 20 73 20 2b | 3d 20 6a 3b 20 7d 0a 58 | *s; s +|= j; }.X|
|00002710| 20 20 20 28 28 47 65 6e | 65 72 61 6c 4d 61 74 72 | ((Gen|eralMatr|
|00002720| 69 78 26 29 2a 74 68 69 | 73 29 2e 74 44 65 6c 65 |ix&)*thi|s).tDele|
|00002730| 74 65 28 29 3b 20 72 65 | 74 75 72 6e 20 73 75 6d |te(); re|turn sum|
|00002740| 3b 0a 58 7d 0a 58 0a 58 | 47 65 6e 65 72 61 6c 4d |;.X}.X.X|GeneralM|
|00002750| 61 74 72 69 78 2a 20 53 | 79 6d 6d 65 74 72 69 63 |atrix* S|ymmetric|
|00002760| 42 61 6e 64 4d 61 74 72 | 69 78 3a 3a 4d 61 6b 65 |BandMatr|ix::Make|
|00002770| 53 6f 6c 76 65 72 28 29 | 0a 58 7b 0a 58 20 20 20 |Solver()|.X{.X |
|00002780| 52 45 50 4f 52 54 0a 58 | 20 20 20 47 65 6e 65 72 |REPORT.X| Gener|
|00002790| 61 6c 4d 61 74 72 69 78 | 2a 20 67 6d 20 3d 20 6e |alMatrix|* gm = n|
|000027a0| 65 77 20 42 61 6e 64 4c | 55 4d 61 74 72 69 78 28 |ew BandL|UMatrix(|
|000027b0| 2a 74 68 69 73 29 3b 0a | 58 20 20 20 4d 61 74 72 |*this);.|X Matr|
|000027c0| 69 78 45 72 72 6f 72 4e | 6f 53 70 61 63 65 28 67 |ixErrorN|oSpace(g|
|000027d0| 6d 29 3b 20 67 6d 2d 3e | 52 65 6c 65 61 73 65 41 |m); gm->|ReleaseA|
|000027e0| 6e 64 44 65 6c 65 74 65 | 28 29 3b 20 72 65 74 75 |ndDelete|(); retu|
|000027f0| 72 6e 20 67 6d 3b 0a 58 | 7d 0a 58 0a 58 53 79 6d |rn gm;.X|}.X.XSym|
|00002800| 6d 65 74 72 69 63 42 61 | 6e 64 4d 61 74 72 69 78 |metricBa|ndMatrix|
|00002810| 3a 3a 53 79 6d 6d 65 74 | 72 69 63 42 61 6e 64 4d |::Symmet|ricBandM|
|00002820| 61 74 72 69 78 28 63 6f | 6e 73 74 20 42 61 73 65 |atrix(co|nst Base|
|00002830| 4d 61 74 72 69 78 26 20 | 4d 29 0a 58 7b 0a 58 20 |Matrix& |M).X{.X |
|00002840| 20 20 52 45 50 4f 52 54 | 31 20 20 2f 2f 20 43 68 | REPORT|1 // Ch|
|00002850| 65 63 6b 43 6f 6e 76 65 | 72 73 69 6f 6e 28 4d 29 |eckConve|rsion(M)|
|00002860| 3b 0a 58 20 20 20 4d 61 | 74 72 69 78 43 6f 6e 76 |;.X Ma|trixConv|
|00002870| 65 72 73 69 6f 6e 43 68 | 65 63 6b 20 6d 63 63 3b |ersionCh|eck mcc;|
|00002880| 0a 58 20 20 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |.X Gen|eralMatr|
|00002890| 69 78 2a 20 67 6d 78 3d | 28 28 42 61 73 65 4d 61 |ix* gmx=|((BaseMa|
|000028a0| 74 72 69 78 26 29 4d 29 | 2e 45 76 61 6c 75 61 74 |trix&)M)|.Evaluat|
|000028b0| 65 28 4d 61 74 72 69 78 | 54 79 70 65 3a 3a 53 42 |e(Matrix|Type::SB|
|000028c0| 29 3b 0a 58 20 20 20 47 | 65 74 4d 61 74 72 69 78 |);.X G|etMatrix|
|000028d0| 28 67 6d 78 29 3b 0a 58 | 7d 0a 58 0a 58 47 65 6e |(gmx);.X|}.X.XGen|
|000028e0| 65 72 61 6c 4d 61 74 72 | 69 78 2a 20 53 79 6d 6d |eralMatr|ix* Symm|
|000028f0| 65 74 72 69 63 42 61 6e | 64 4d 61 74 72 69 78 3a |etricBan|dMatrix:|
|00002900| 3a 54 72 61 6e 73 70 6f | 73 65 28 54 72 61 6e 73 |:Transpo|se(Trans|
|00002910| 70 6f 73 65 64 4d 61 74 | 72 69 78 2a 2c 20 4d 61 |posedMat|rix*, Ma|
|00002920| 74 72 69 78 54 79 70 65 | 20 6d 74 29 0a 58 7b 20 |trixType| mt).X{ |
|00002930| 52 45 50 4f 52 54 20 20 | 72 65 74 75 72 6e 20 45 |REPORT |return E|
|00002940| 76 61 6c 75 61 74 65 28 | 6d 74 29 3b 20 7d 0a 58 |valuate(|mt); }.X|
|00002950| 0a 58 4c 6f 67 41 6e 64 | 53 69 67 6e 20 53 79 6d |.XLogAnd|Sign Sym|
|00002960| 6d 65 74 72 69 63 42 61 | 6e 64 4d 61 74 72 69 78 |metricBa|ndMatrix|
|00002970| 3a 3a 4c 6f 67 44 65 74 | 65 72 6d 69 6e 61 6e 74 |::LogDet|erminant|
|00002980| 28 29 20 63 6f 6e 73 74 | 0a 58 7b 0a 58 20 20 20 |() const|.X{.X |
|00002990| 52 45 50 4f 52 54 0a 58 | 20 20 20 42 61 6e 64 4c |REPORT.X| BandL|
|000029a0| 55 4d 61 74 72 69 78 20 | 43 28 2a 74 68 69 73 29 |UMatrix |C(*this)|
|000029b0| 3b 20 72 65 74 75 72 6e | 20 43 2e 4c 6f 67 44 65 |; return| C.LogDe|
|000029c0| 74 65 72 6d 69 6e 61 6e | 74 28 29 3b 0a 58 7d 0a |terminan|t();.X}.|
|000029d0| 58 0a 58 76 6f 69 64 20 | 53 79 6d 6d 65 74 72 69 |X.Xvoid |Symmetri|
|000029e0| 63 42 61 6e 64 4d 61 74 | 72 69 78 3a 3a 53 65 74 |cBandMat|rix::Set|
|000029f0| 50 61 72 61 6d 65 74 65 | 72 73 28 63 6f 6e 73 74 |Paramete|rs(const|
|00002a00| 20 47 65 6e 65 72 61 6c | 4d 61 74 72 69 78 2a 20 | General|Matrix* |
|00002a10| 67 6d 78 29 0a 58 7b 20 | 6c 6f 77 65 72 20 3d 20 |gmx).X{ |lower = |
|00002a20| 67 6d 78 2d 3e 42 61 6e | 64 57 69 64 74 68 28 29 |gmx->Ban|dWidth()|
|00002a30| 2e 6c 6f 77 65 72 3b 20 | 7d 0a 58 0a 58 76 6f 69 |.lower; |}.X.Xvoi|
|00002a40| 64 20 53 79 6d 6d 65 74 | 72 69 63 42 61 6e 64 4d |d Symmet|ricBandM|
|00002a50| 61 74 72 69 78 3a 3a 52 | 65 44 69 6d 65 6e 73 69 |atrix::R|eDimensi|
|00002a60| 6f 6e 28 69 6e 74 20 6e | 2c 20 69 6e 74 20 6c 62 |on(int n|, int lb|
|00002a70| 29 0a 58 7b 0a 58 20 20 | 20 52 45 50 4f 52 54 0a |).X{.X | REPORT.|
|00002a80| 58 20 20 20 54 72 61 63 | 65 72 20 74 72 28 22 53 |X Trac|er tr("S|
|00002a90| 79 6d 6d 65 74 72 69 63 | 42 61 6e 64 4d 61 74 72 |ymmetric|BandMatr|
|00002aa0| 69 78 3a 3a 52 65 44 69 | 6d 65 6e 73 69 6f 6e 22 |ix::ReDi|mension"|
|00002ab0| 29 3b 0a 58 20 20 20 69 | 66 20 28 6c 62 3c 30 29 |);.X i|f (lb<0)|
|00002ac0| 20 54 68 72 6f 77 28 50 | 72 6f 67 72 61 6d 45 78 | Throw(P|rogramEx|
|00002ad0| 63 65 70 74 69 6f 6e 28 | 22 55 6e 64 65 66 69 6e |ception(|"Undefin|
|00002ae0| 65 64 20 62 61 6e 64 77 | 69 64 74 68 22 29 29 3b |ed bandw|idth"));|
|00002af0| 0a 58 20 20 20 6c 6f 77 | 65 72 20 3d 20 28 6c 62 |.X low|er = (lb|
|00002b00| 3c 3d 6e 29 20 3f 20 6c | 62 20 3a 20 6e 2d 31 3b |<=n) ? l|b : n-1;|
|00002b10| 0a 58 20 20 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |.X Gen|eralMatr|
|00002b20| 69 78 3a 3a 52 65 44 69 | 6d 65 6e 73 69 6f 6e 28 |ix::ReDi|mension(|
|00002b30| 6e 2c 6e 2c 6e 2a 28 6c | 6f 77 65 72 2b 31 29 29 |n,n,n*(l|ower+1))|
|00002b40| 3b 0a 58 7d 0a 58 0a 58 | 76 6f 69 64 20 53 79 6d |;.X}.X.X|void Sym|
|00002b50| 6d 65 74 72 69 63 42 61 | 6e 64 4d 61 74 72 69 78 |metricBa|ndMatrix|
|00002b60| 3a 3a 6f 70 65 72 61 74 | 6f 72 3d 28 63 6f 6e 73 |::operat|or=(cons|
|00002b70| 74 20 42 61 73 65 4d 61 | 74 72 69 78 26 20 58 29 |t BaseMa|trix& X)|
|00002b80| 0a 58 7b 0a 58 20 20 20 | 52 45 50 4f 52 54 20 2f |.X{.X |REPORT /|
|00002b90| 2f 20 43 68 65 63 6b 43 | 6f 6e 76 65 72 73 69 6f |/ CheckC|onversio|
|00002ba0| 6e 28 58 29 3b 0a 58 20 | 20 20 4d 61 74 72 69 78 |n(X);.X | Matrix|
|00002bb0| 43 6f 6e 76 65 72 73 69 | 6f 6e 43 68 65 63 6b 20 |Conversi|onCheck |
|00002bc0| 6d 63 63 3b 0a 58 20 20 | 20 45 71 28 58 2c 4d 61 |mcc;.X | Eq(X,Ma|
|00002bd0| 74 72 69 78 54 79 70 65 | 3a 3a 53 42 29 3b 0a 58 |trixType|::SB);.X|
|00002be0| 7d 0a 58 0a 58 76 6f 69 | 64 20 53 79 6d 6d 65 74 |}.X.Xvoi|d Symmet|
|00002bf0| 72 69 63 42 61 6e 64 4d | 61 74 72 69 78 3a 3a 43 |ricBandM|atrix::C|
|00002c00| 6f 72 6e 65 72 43 6c 65 | 61 72 28 29 20 63 6f 6e |ornerCle|ar() con|
|00002c10| 73 74 0a 58 7b 0a 58 20 | 20 20 2f 2f 20 73 65 74 |st.X{.X | // set|
|00002c20| 20 75 6e 75 73 65 64 20 | 70 61 72 74 73 20 6f 66 | unused |parts of|
|00002c30| 20 42 61 6e 64 4d 61 74 | 72 69 78 20 74 6f 20 7a | BandMat|rix to z|
|00002c40| 65 72 6f 0a 58 20 20 20 | 52 45 50 4f 52 54 0a 58 |ero.X |REPORT.X|
|00002c50| 20 20 20 69 6e 74 20 69 | 20 3d 20 6c 6f 77 65 72 | int i| = lower|
|00002c60| 3b 20 52 65 61 6c 2a 20 | 73 20 3d 20 73 74 6f 72 |; Real* |s = stor|
|00002c70| 65 3b 20 69 6e 74 20 62 | 77 20 3d 20 6c 6f 77 65 |e; int b|w = lowe|
|00002c80| 72 20 2b 20 31 3b 0a 58 | 20 20 20 77 68 69 6c 65 |r + 1;.X| while|
|00002c90| 20 28 69 29 0a 58 20 20 | 20 20 20 20 7b 20 69 6e | (i).X | { in|
|00002ca0| 74 20 6a 20 3d 20 69 2d | 2d 3b 20 52 65 61 6c 2a |t j = i-|-; Real*|
|00002cb0| 20 73 6a 20 3d 20 73 3b | 20 73 20 2b 3d 20 62 77 | sj = s;| s += bw|
|00002cc0| 3b 20 77 68 69 6c 65 20 | 28 6a 2d 2d 29 20 2a 73 |; while |(j--) *s|
|00002cd0| 6a 2b 2b 20 3d 20 30 2e | 30 3b 20 7d 0a 58 7d 0a |j++ = 0.|0; }.X}.|
|00002ce0| 58 0a 58 4d 61 74 72 69 | 78 42 61 6e 64 57 69 64 |X.XMatri|xBandWid|
|00002cf0| 74 68 20 53 79 6d 6d 65 | 74 72 69 63 42 61 6e 64 |th Symme|tricBand|
|00002d00| 4d 61 74 72 69 78 3a 3a | 42 61 6e 64 57 69 64 74 |Matrix::|BandWidt|
|00002d10| 68 28 29 20 63 6f 6e 73 | 74 0a 58 20 20 20 7b 20 |h() cons|t.X { |
|00002d20| 72 65 74 75 72 6e 20 4d | 61 74 72 69 78 42 61 6e |return M|atrixBan|
|00002d30| 64 57 69 64 74 68 28 6c | 6f 77 65 72 2c 6c 6f 77 |dWidth(l|ower,low|
|00002d40| 65 72 29 3b 20 7d 0a 58 | 0a 58 69 6e 6c 69 6e 65 |er); }.X|.Xinline|
|00002d50| 20 52 65 61 6c 20 73 71 | 75 61 72 65 28 52 65 61 | Real sq|uare(Rea|
|00002d60| 6c 20 78 29 20 7b 20 72 | 65 74 75 72 6e 20 78 2a |l x) { r|eturn x*|
|00002d70| 78 3b 20 7d 0a 58 0a 58 | 0a 58 52 65 61 6c 20 53 |x; }.X.X|.XReal S|
|00002d80| 79 6d 6d 65 74 72 69 63 | 42 61 6e 64 4d 61 74 72 |ymmetric|BandMatr|
|00002d90| 69 78 3a 3a 53 75 6d 53 | 71 75 61 72 65 28 29 20 |ix::SumS|quare() |
|00002da0| 63 6f 6e 73 74 0a 58 7b | 0a 58 20 20 20 52 45 50 |const.X{|.X REP|
|00002db0| 4f 52 54 0a 58 20 20 20 | 43 6f 72 6e 65 72 43 6c |ORT.X |CornerCl|
|00002dc0| 65 61 72 28 29 3b 0a 58 | 20 20 20 52 65 61 6c 20 |ear();.X| Real |
|00002dd0| 73 75 6d 31 3d 30 2e 30 | 3b 20 52 65 61 6c 20 73 |sum1=0.0|; Real s|
|00002de0| 75 6d 32 3d 30 2e 30 3b | 20 52 65 61 6c 2a 20 73 |um2=0.0;| Real* s|
|00002df0| 3d 73 74 6f 72 65 3b 20 | 69 6e 74 20 69 3d 6e 72 |=store; |int i=nr|
|00002e00| 6f 77 73 3b 20 69 6e 74 | 20 6c 3d 6c 6f 77 65 72 |ows; int| l=lower|
|00002e10| 3b 0a 58 20 20 20 77 68 | 69 6c 65 20 28 69 2d 2d |;.X wh|ile (i--|
|00002e20| 29 0a 58 20 20 20 20 20 | 20 7b 20 69 6e 74 20 6a |).X | { int j|
|00002e30| 20 3d 20 6c 3b 20 77 68 | 69 6c 65 20 28 6a 2d 2d | = l; wh|ile (j--|
|00002e40| 29 20 73 75 6d 32 20 2b | 3d 20 73 71 75 61 72 65 |) sum2 +|= square|
|00002e50| 28 2a 73 2b 2b 29 3b 20 | 73 75 6d 31 20 2b 3d 20 |(*s++); |sum1 += |
|00002e60| 73 71 75 61 72 65 28 2a | 73 2b 2b 29 3b 20 7d 0a |square(*|s++); }.|
|00002e70| 58 20 20 20 28 28 47 65 | 6e 65 72 61 6c 4d 61 74 |X ((Ge|neralMat|
|00002e80| 72 69 78 26 29 2a 74 68 | 69 73 29 2e 74 44 65 6c |rix&)*th|is).tDel|
|00002e90| 65 74 65 28 29 3b 20 72 | 65 74 75 72 6e 20 73 75 |ete(); r|eturn su|
|00002ea0| 6d 31 20 2b 20 32 2e 30 | 20 2a 20 73 75 6d 32 3b |m1 + 2.0| * sum2;|
|00002eb0| 0a 58 7d 0a 58 0a 58 52 | 65 61 6c 20 53 79 6d 6d |.X}.X.XR|eal Symm|
|00002ec0| 65 74 72 69 63 42 61 6e | 64 4d 61 74 72 69 78 3a |etricBan|dMatrix:|
|00002ed0| 3a 53 75 6d 41 62 73 6f | 6c 75 74 65 56 61 6c 75 |:SumAbso|luteValu|
|00002ee0| 65 28 29 20 63 6f 6e 73 | 74 0a 58 7b 0a 58 20 20 |e() cons|t.X{.X |
|00002ef0| 20 52 45 50 4f 52 54 0a | 58 20 20 20 43 6f 72 6e | REPORT.|X Corn|
|00002f00| 65 72 43 6c 65 61 72 28 | 29 3b 0a 58 20 20 20 52 |erClear(|);.X R|
|00002f10| 65 61 6c 20 73 75 6d 31 | 3d 30 2e 30 3b 20 52 65 |eal sum1|=0.0; Re|
|00002f20| 61 6c 20 73 75 6d 32 3d | 30 2e 30 3b 20 52 65 61 |al sum2=|0.0; Rea|
|00002f30| 6c 2a 20 73 3d 73 74 6f | 72 65 3b 20 69 6e 74 20 |l* s=sto|re; int |
|00002f40| 69 3d 6e 72 6f 77 73 3b | 20 69 6e 74 20 6c 3d 6c |i=nrows;| int l=l|
|00002f50| 6f 77 65 72 3b 0a 58 20 | 20 20 77 68 69 6c 65 20 |ower;.X | while |
|00002f60| 28 69 2d 2d 29 0a 58 20 | 20 20 20 20 20 7b 20 69 |(i--).X | { i|
|00002f70| 6e 74 20 6a 20 3d 20 6c | 3b 20 77 68 69 6c 65 20 |nt j = l|; while |
|00002f80| 28 6a 2d 2d 29 20 73 75 | 6d 32 20 2b 3d 20 66 61 |(j--) su|m2 += fa|
|00002f90| 62 73 28 2a 73 2b 2b 29 | 3b 20 73 75 6d 31 20 2b |bs(*s++)|; sum1 +|
|00002fa0| 3d 20 66 61 62 73 28 2a | 73 2b 2b 29 3b 20 7d 0a |= fabs(*|s++); }.|
|00002fb0| 58 20 20 20 28 28 47 65 | 6e 65 72 61 6c 4d 61 74 |X ((Ge|neralMat|
|00002fc0| 72 69 78 26 29 2a 74 68 | 69 73 29 2e 74 44 65 6c |rix&)*th|is).tDel|
|00002fd0| 65 74 65 28 29 3b 20 72 | 65 74 75 72 6e 20 73 75 |ete(); r|eturn su|
|00002fe0| 6d 31 20 2b 20 32 2e 30 | 20 2a 20 73 75 6d 32 3b |m1 + 2.0| * sum2;|
|00002ff0| 0a 58 7d 0a 58 0a 45 4e | 44 5f 4f 46 5f 46 49 4c |.X}.X.EN|D_OF_FIL|
|00003000| 45 0a 69 66 20 74 65 73 | 74 20 31 30 33 34 33 20 |E.if tes|t 10343 |
|00003010| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 62 61 6e |-ne `wc |-c <'ban|
|00003020| 64 6d 61 74 2e 63 78 78 | 27 60 3b 20 74 68 65 6e |dmat.cxx|'`; then|
|00003030| 0a 20 20 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |. ech|o shar: |
|00003040| 5c 22 27 62 61 6e 64 6d | 61 74 2e 63 78 78 27 5c |\"'bandm|at.cxx'\|
|00003050| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00003060| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00003070| 20 65 6e 64 20 6f 66 20 | 27 62 61 6e 64 6d 61 74 | end of |'bandmat|
|00003080| 2e 63 78 78 27 0a 66 69 | 0a 69 66 20 74 65 73 74 |.cxx'.fi|.if test|
|00003090| 20 2d 66 20 27 63 68 6f | 6c 65 73 6b 79 2e 63 78 | -f 'cho|lesky.cx|
|000030a0| 78 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |x' -a "$|{1}" != |
|000030b0| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|000030c0| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|000030d0| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|000030e0| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 63 68 6f 6c |ing file| \"'chol|
|000030f0| 65 73 6b 79 2e 63 78 78 | 27 5c 22 0a 65 6c 73 65 |esky.cxx|'\".else|
|00003100| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00003110| 61 63 74 69 6e 67 20 5c | 22 27 63 68 6f 6c 65 73 |acting \|"'choles|
|00003120| 6b 79 2e 63 78 78 27 5c | 22 20 5c 28 31 37 38 33 |ky.cxx'\|" \(1783|
|00003130| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 73 65 | charact|ers\).se|
|00003140| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 27 63 68 6f |d "s/^X/|/" >'cho|
|00003150| 6c 65 73 6b 79 2e 63 78 | 78 27 20 3c 3c 27 45 4e |lesky.cx|x' <<'EN|
|00003160| 44 5f 4f 46 5f 46 49 4c | 45 27 0a 58 2f 2f 24 24 |D_OF_FIL|E'.X//$$|
|00003170| 20 63 68 6f 6c 65 73 6b | 79 2e 63 78 78 20 20 20 | cholesk|y.cxx |
|00003180| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003190| 20 20 63 68 6f 6c 65 73 | 6b 79 20 64 65 63 6f 6d | choles|ky decom|
|000031a0| 70 6f 73 69 74 69 6f 6e | 0a 58 0a 58 2f 2f 20 43 |position|.X.X// C|
|000031b0| 6f 70 79 72 69 67 68 74 | 20 28 43 29 20 31 39 39 |opyright| (C) 199|
|000031c0| 31 2c 32 2c 33 3a 20 52 | 20 42 20 44 61 76 69 65 |1,2,3: R| B Davie|
|000031d0| 73 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 57 41 4e |s.X.X#de|fine WAN|
|000031e0| 54 5f 4d 41 54 48 0a 58 | 0a 58 23 69 6e 63 6c 75 |T_MATH.X|.X#inclu|
|000031f0| 64 65 20 22 69 6e 63 6c | 75 64 65 2e 68 22 0a 58 |de "incl|ude.h".X|
|00003200| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 6e 65 77 6d |.X#inclu|de "newm|
|00003210| 61 74 2e 68 22 0a 58 0a | 58 0a 58 2f 2a 2a 2a 2a |at.h".X.|X.X/****|
|00003220| 2a 2a 2a 2a 2a 20 43 68 | 6f 6c 65 73 6b 79 20 64 |***** Ch|olesky d|
|00003230| 65 63 6f 6d 70 6f 73 69 | 74 69 6f 6e 20 6f 66 20 |ecomposi|tion of |
|00003240| 61 20 70 6f 73 69 74 69 | 76 65 20 64 65 66 69 6e |a positi|ve defin|
|00003250| 69 74 65 20 6d 61 74 72 | 69 78 20 2a 2a 2a 2a 2a |ite matr|ix *****|
|00003260| 2a 2a 2a 2a 2a 2a 2a 2a | 2f 0a 58 0a 58 2f 2f 20 |********|/.X.X// |
|00003270| 53 75 70 70 6f 73 65 20 | 53 20 69 73 20 73 79 6d |Suppose |S is sym|
|00003280| 6d 65 74 72 69 78 20 61 | 6e 64 20 70 6f 73 69 74 |metrix a|nd posit|
|00003290| 69 76 65 20 64 65 66 69 | 6e 69 74 65 2e 20 54 68 |ive defi|nite. Th|
|000032a0| 65 6e 20 74 68 65 72 65 | 20 65 78 69 73 74 73 20 |en there| exists |
|000032b0| 61 20 75 6e 69 71 75 65 | 0a 58 2f 2f 20 6c 6f 77 |a unique|.X// low|
|000032c0| 65 72 20 74 72 69 61 6e | 67 75 6c 61 72 20 6d 61 |er trian|gular ma|
|000032d0| 74 72 69 78 20 4c 20 73 | 75 63 68 20 74 68 61 74 |trix L s|uch that|
|000032e0| 20 4c 20 4c 2e 74 28 29 | 20 3d 20 53 3b 0a 58 0a | L L.t()| = S;.X.|
|000032f0| 58 73 74 61 74 69 63 20 | 52 65 61 6c 20 73 71 75 |Xstatic |Real squ|
|00003300| 61 72 65 28 52 65 61 6c | 20 78 29 20 7b 20 72 65 |are(Real| x) { re|
|00003310| 74 75 72 6e 20 78 2a 78 | 3b 20 7d 0a 58 0a 58 52 |turn x*x|; }.X.XR|
|00003320| 65 74 75 72 6e 4d 61 74 | 72 69 78 20 43 68 6f 6c |eturnMat|rix Chol|
|00003330| 65 73 6b 79 28 63 6f 6e | 73 74 20 53 79 6d 6d 65 |esky(con|st Symme|
|00003340| 74 72 69 63 4d 61 74 72 | 69 78 26 20 53 29 0a 58 |tricMatr|ix& S).X|
|00003350| 7b 0a 58 20 20 20 54 72 | 61 63 65 72 20 74 72 61 |{.X Tr|acer tra|
|00003360| 63 65 28 22 43 68 6f 6c | 65 73 6b 79 22 29 3b 0a |ce("Chol|esky");.|
|00003370| 58 20 20 20 69 6e 74 20 | 6e 72 20 3d 20 53 2e 4e |X int |nr = S.N|
|00003380| 72 6f 77 73 28 29 3b 0a | 58 20 20 20 4c 6f 77 65 |rows();.|X Lowe|
|00003390| 72 54 72 69 61 6e 67 75 | 6c 61 72 4d 61 74 72 69 |rTriangu|larMatri|
|000033a0| 78 20 54 28 6e 72 29 3b | 0a 58 20 20 20 52 65 61 |x T(nr);|.X Rea|
|000033b0| 6c 2a 20 73 20 3d 20 53 | 2e 53 74 6f 72 65 28 29 |l* s = S|.Store()|
|000033c0| 3b 20 52 65 61 6c 2a 20 | 74 20 3d 20 54 2e 53 74 |; Real* |t = T.St|
|000033d0| 6f 72 65 28 29 3b 20 52 | 65 61 6c 2a 20 74 69 20 |ore(); R|eal* ti |
|000033e0| 3d 20 74 3b 0a 58 20 20 | 20 66 6f 72 20 28 69 6e |= t;.X | for (in|
|000033f0| 74 20 69 3d 30 3b 20 69 | 3c 6e 72 3b 20 69 2b 2b |t i=0; i|<nr; i++|
|00003400| 29 0a 58 20 20 20 7b 0a | 58 20 20 20 20 20 20 52 |).X {.|X R|
|00003410| 65 61 6c 2a 20 74 6a 20 | 3d 20 74 3b 20 52 65 61 |eal* tj |= t; Rea|
|00003420| 6c 20 73 75 6d 3b 20 69 | 6e 74 20 6b 3b 0a 58 20 |l sum; i|nt k;.X |
|00003430| 20 20 20 20 20 66 6f 72 | 20 28 69 6e 74 20 6a 3d | for| (int j=|
|00003440| 30 3b 20 6a 3c 69 3b 20 | 6a 2b 2b 29 0a 58 20 20 |0; j<i; |j++).X |
|00003450| 20 20 20 20 7b 0a 58 09 | 20 52 65 61 6c 2a 20 74 | {.X.| Real* t|
|00003460| 6b 20 3d 20 74 69 3b 20 | 73 75 6d 20 3d 20 30 2e |k = ti; |sum = 0.|
|00003470| 30 3b 20 6b 20 3d 20 6a | 3b 0a 58 09 20 77 68 69 |0; k = j|;.X. whi|
|00003480| 6c 65 20 28 6b 2d 2d 29 | 20 7b 20 73 75 6d 20 2b |le (k--)| { sum +|
|00003490| 3d 20 2a 74 6a 2b 2b 20 | 2a 20 2a 74 6b 2b 2b 3b |= *tj++ |* *tk++;|
|000034a0| 20 7d 0a 58 09 20 2a 74 | 6b 20 3d 20 28 2a 73 2b | }.X. *t|k = (*s+|
|000034b0| 2b 20 2d 20 73 75 6d 29 | 20 2f 20 2a 74 6a 2b 2b |+ - sum)| / *tj++|
|000034c0| 3b 0a 58 20 20 20 20 20 | 20 7d 0a 58 20 20 20 20 |;.X | }.X |
|000034d0| 20 20 73 75 6d 20 3d 20 | 30 2e 30 3b 20 6b 20 3d | sum = |0.0; k =|
|000034e0| 20 69 3b 0a 58 20 20 20 | 20 20 20 77 68 69 6c 65 | i;.X | while|
|000034f0| 20 28 6b 2d 2d 29 20 7b | 20 73 75 6d 20 2b 3d 20 | (k--) {| sum += |
|00003500| 73 71 75 61 72 65 28 2a | 74 69 2b 2b 29 3b 20 7d |square(*|ti++); }|
|00003510| 0a 58 20 20 20 20 20 20 | 52 65 61 6c 20 64 20 3d |.X |Real d =|
|00003520| 20 2a 73 2b 2b 20 2d 20 | 73 75 6d 3b 0a 58 20 20 | *s++ - |sum;.X |
|00003530| 20 20 20 20 69 66 20 28 | 64 3c 3d 30 2e 30 29 20 | if (|d<=0.0) |
|00003540| 54 68 72 6f 77 28 4e 50 | 44 45 78 63 65 70 74 69 |Throw(NP|DExcepti|
|00003550| 6f 6e 28 53 29 29 3b 0a | 58 20 20 20 20 20 20 2a |on(S));.|X *|
|00003560| 74 69 2b 2b 20 3d 20 73 | 71 72 74 28 64 29 3b 0a |ti++ = s|qrt(d);.|
|00003570| 58 20 20 20 7d 0a 58 20 | 20 20 54 2e 52 65 6c 65 |X }.X | T.Rele|
|00003580| 61 73 65 28 29 3b 20 72 | 65 74 75 72 6e 20 28 52 |ase(); r|eturn (R|
|00003590| 65 74 75 72 6e 4d 61 74 | 72 69 78 29 54 3b 0a 58 |eturnMat|rix)T;.X|
|000035a0| 7d 0a 58 0a 58 52 65 74 | 75 72 6e 4d 61 74 72 69 |}.X.XRet|urnMatri|
|000035b0| 78 20 43 68 6f 6c 65 73 | 6b 79 28 63 6f 6e 73 74 |x Choles|ky(const|
|000035c0| 20 53 79 6d 6d 65 74 72 | 69 63 42 61 6e 64 4d 61 | Symmetr|icBandMa|
|000035d0| 74 72 69 78 26 20 53 29 | 0a 58 7b 0a 58 20 20 20 |trix& S)|.X{.X |
|000035e0| 54 72 61 63 65 72 20 74 | 72 61 63 65 28 22 42 61 |Tracer t|race("Ba|
|000035f0| 6e 64 2d 43 68 6f 6c 65 | 73 6b 79 22 29 3b 0a 58 |nd-Chole|sky");.X|
|00003600| 20 20 20 69 6e 74 20 6e | 72 20 3d 20 53 2e 4e 72 | int n|r = S.Nr|
|00003610| 6f 77 73 28 29 3b 20 69 | 6e 74 20 6d 20 3d 20 53 |ows(); i|nt m = S|
|00003620| 2e 6c 6f 77 65 72 3b 0a | 58 20 20 20 4c 6f 77 65 |.lower;.|X Lowe|
|00003630| 72 42 61 6e 64 4d 61 74 | 72 69 78 20 54 28 6e 72 |rBandMat|rix T(nr|
|00003640| 2c 6d 29 3b 0a 58 20 20 | 20 52 65 61 6c 2a 20 73 |,m);.X | Real* s|
|00003650| 20 3d 20 53 2e 53 74 6f | 72 65 28 29 3b 20 52 65 | = S.Sto|re(); Re|
|00003660| 61 6c 2a 20 74 20 3d 20 | 54 2e 53 74 6f 72 65 28 |al* t = |T.Store(|
|00003670| 29 3b 20 52 65 61 6c 2a | 20 74 69 20 3d 20 74 3b |); Real*| ti = t;|
|00003680| 0a 58 0a 58 20 20 20 66 | 6f 72 20 28 69 6e 74 20 |.X.X f|or (int |
|00003690| 69 3d 30 3b 20 69 3c 6e | 72 3b 20 69 2b 2b 29 0a |i=0; i<n|r; i++).|
|000036a0| 58 20 20 20 7b 0a 58 20 | 20 20 20 20 20 52 65 61 |X {.X | Rea|
|000036b0| 6c 2a 20 74 6a 20 3d 20 | 74 3b 20 52 65 61 6c 20 |l* tj = |t; Real |
|000036c0| 73 75 6d 3b 20 69 6e 74 | 20 6c 3b 0a 58 20 20 20 |sum; int| l;.X |
|000036d0| 20 20 20 69 66 20 28 69 | 3c 6d 29 20 7b 20 6c 20 | if (i|<m) { l |
|000036e0| 3d 20 6d 2d 69 3b 20 73 | 20 2b 3d 20 6c 3b 20 74 |= m-i; s| += l; t|
|000036f0| 69 20 2b 3d 20 6c 3b 20 | 6c 20 3d 20 69 3b 20 7d |i += l; |l = i; }|
|00003700| 0a 58 20 20 20 20 20 20 | 65 6c 73 65 20 7b 20 74 |.X |else { t|
|00003710| 20 2b 3d 20 28 6d 2b 31 | 29 3b 20 6c 20 3d 20 6d | += (m+1|); l = m|
|00003720| 3b 20 7d 0a 58 0a 58 20 | 20 20 20 20 20 66 6f 72 |; }.X.X | for|
|00003730| 20 28 69 6e 74 20 6a 3d | 30 3b 20 6a 3c 6c 3b 20 | (int j=|0; j<l; |
|00003740| 6a 2b 2b 29 0a 58 20 20 | 20 20 20 20 7b 0a 58 09 |j++).X | {.X.|
|00003750| 20 52 65 61 6c 2a 20 74 | 6b 20 3d 20 74 69 3b 20 | Real* t|k = ti; |
|00003760| 73 75 6d 20 3d 20 30 2e | 30 3b 20 69 6e 74 20 6b |sum = 0.|0; int k|
|00003770| 20 3d 20 6a 3b 20 74 6a | 20 2b 3d 20 28 6d 2d 6a | = j; tj| += (m-j|
|00003780| 29 3b 0a 58 09 20 77 68 | 69 6c 65 20 28 6b 2d 2d |);.X. wh|ile (k--|
|00003790| 29 20 7b 20 73 75 6d 20 | 2b 3d 20 2a 74 6a 2b 2b |) { sum |+= *tj++|
|000037a0| 20 2a 20 2a 74 6b 2b 2b | 3b 20 7d 0a 58 09 20 2a | * *tk++|; }.X. *|
|000037b0| 74 6b 20 3d 20 28 2a 73 | 2b 2b 20 2d 20 73 75 6d |tk = (*s|++ - sum|
|000037c0| 29 20 2f 20 2a 74 6a 2b | 2b 3b 0a 58 20 20 20 20 |) / *tj+|+;.X |
|000037d0| 20 20 7d 0a 58 20 20 20 | 20 20 20 73 75 6d 20 3d | }.X | sum =|
|000037e0| 20 30 2e 30 3b 0a 58 20 | 20 20 20 20 20 77 68 69 | 0.0;.X | whi|
|000037f0| 6c 65 20 28 6c 2d 2d 29 | 20 7b 20 73 75 6d 20 2b |le (l--)| { sum +|
|00003800| 3d 20 73 71 75 61 72 65 | 28 2a 74 69 2b 2b 29 3b |= square|(*ti++);|
|00003810| 20 7d 0a 58 20 20 20 20 | 20 20 52 65 61 6c 20 64 | }.X | Real d|
|00003820| 20 3d 20 2a 73 2b 2b 20 | 2d 20 73 75 6d 3b 0a 58 | = *s++ |- sum;.X|
|00003830| 20 20 20 20 20 20 69 66 | 20 28 64 3c 3d 30 2e 30 | if| (d<=0.0|
|00003840| 29 20 20 54 68 72 6f 77 | 28 4e 50 44 45 78 63 65 |) Throw|(NPDExce|
|00003850| 70 74 69 6f 6e 28 53 29 | 29 3b 0a 58 20 20 20 20 |ption(S)|);.X |
|00003860| 20 20 2a 74 69 2b 2b 20 | 3d 20 73 71 72 74 28 64 | *ti++ |= sqrt(d|
|00003870| 29 3b 0a 58 20 20 20 7d | 0a 58 0a 58 20 20 20 54 |);.X }|.X.X T|
|00003880| 2e 52 65 6c 65 61 73 65 | 28 29 3b 20 72 65 74 75 |.Release|(); retu|
|00003890| 72 6e 20 28 52 65 74 75 | 72 6e 4d 61 74 72 69 78 |rn (Retu|rnMatrix|
|000038a0| 29 54 3b 0a 58 7d 0a 58 | 0a 45 4e 44 5f 4f 46 5f |)T;.X}.X|.END_OF_|
|000038b0| 46 49 4c 45 0a 69 66 20 | 74 65 73 74 20 31 37 38 |FILE.if |test 178|
|000038c0| 33 20 2d 6e 65 20 60 77 | 63 20 2d 63 20 3c 27 63 |3 -ne `w|c -c <'c|
|000038d0| 68 6f 6c 65 73 6b 79 2e | 63 78 78 27 60 3b 20 74 |holesky.|cxx'`; t|
|000038e0| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|000038f0| 72 3a 20 5c 22 27 63 68 | 6f 6c 65 73 6b 79 2e 63 |r: \"'ch|olesky.c|
|00003900| 78 78 27 5c 22 20 75 6e | 70 61 63 6b 65 64 20 77 |xx'\" un|packed w|
|00003910| 69 74 68 20 77 72 6f 6e | 67 20 73 69 7a 65 21 0a |ith wron|g size!.|
|00003920| 66 69 0a 23 20 65 6e 64 | 20 6f 66 20 27 63 68 6f |fi.# end| of 'cho|
|00003930| 6c 65 73 6b 79 2e 63 78 | 78 27 0a 66 69 0a 69 66 |lesky.cx|x'.fi.if|
|00003940| 20 74 65 73 74 20 2d 66 | 20 27 65 76 61 6c 75 65 | test -f| 'evalue|
|00003950| 2e 63 78 78 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |.cxx' -a| "${1}" |
|00003960| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|00003970| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|00003980| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|00003990| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 65 |isting f|ile \"'e|
|000039a0| 76 61 6c 75 65 2e 63 78 | 78 27 5c 22 0a 65 6c 73 |value.cx|x'\".els|
|000039b0| 65 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 |e.echo s|har: Ext|
|000039c0| 72 61 63 74 69 6e 67 20 | 5c 22 27 65 76 61 6c 75 |racting |\"'evalu|
|000039d0| 65 2e 63 78 78 27 5c 22 | 20 5c 28 37 38 31 33 20 |e.cxx'\"| \(7813 |
|000039e0| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|000039f0| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 65 76 61 6c | "s/^X//|" >'eval|
|00003a00| 75 65 2e 63 78 78 27 20 | 3c 3c 27 45 4e 44 5f 4f |ue.cxx' |<<'END_O|
|00003a10| 46 5f 46 49 4c 45 27 0a | 58 2f 2f 24 24 65 76 61 |F_FILE'.|X//$$eva|
|00003a20| 6c 75 65 2e 63 78 78 20 | 20 20 20 20 20 20 20 20 |lue.cxx | |
|00003a30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a40| 20 20 65 69 67 65 6e 2d | 76 61 6c 75 65 20 64 65 | eigen-|value de|
|00003a50| 63 6f 6d 70 6f 73 69 74 | 69 6f 6e 0a 58 0a 58 2f |composit|ion.X.X/|
|00003a60| 2f 20 43 6f 70 79 72 69 | 67 68 74 20 28 43 29 20 |/ Copyri|ght (C) |
|00003a70| 31 39 39 31 2c 32 2c 33 | 3a 20 52 20 42 20 44 61 |1991,2,3|: R B Da|
|00003a80| 76 69 65 73 0a 58 0a 58 | 23 64 65 66 69 6e 65 20 |vies.X.X|#define |
|00003a90| 57 41 4e 54 5f 4d 41 54 | 48 0a 58 0a 58 23 69 6e |WANT_MAT|H.X.X#in|
|00003aa0| 63 6c 75 64 65 20 22 69 | 6e 63 6c 75 64 65 2e 68 |clude "i|nclude.h|
|00003ab0| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 22 6e 65 77 |".X#incl|ude "new|
|00003ac0| 6d 61 74 2e 68 22 0a 58 | 23 69 6e 63 6c 75 64 65 |mat.h".X|#include|
|00003ad0| 20 22 6e 65 77 6d 61 74 | 72 6d 2e 68 22 0a 58 23 | "newmat|rm.h".X#|
|00003ae0| 69 6e 63 6c 75 64 65 20 | 22 70 72 65 63 69 73 69 |include |"precisi|
|00003af0| 6f 2e 68 22 0a 58 0a 58 | 0a 58 73 74 61 74 69 63 |o.h".X.X|.Xstatic|
|00003b00| 20 76 6f 69 64 20 74 72 | 65 64 32 28 63 6f 6e 73 | void tr|ed2(cons|
|00003b10| 74 20 53 79 6d 6d 65 74 | 72 69 63 4d 61 74 72 69 |t Symmet|ricMatri|
|00003b20| 78 26 20 41 2c 20 44 69 | 61 67 6f 6e 61 6c 4d 61 |x& A, Di|agonalMa|
|00003b30| 74 72 69 78 26 20 44 2c | 0a 58 20 20 20 44 69 61 |trix& D,|.X Dia|
|00003b40| 67 6f 6e 61 6c 4d 61 74 | 72 69 78 26 20 45 2c 20 |gonalMat|rix& E, |
|00003b50| 4d 61 74 72 69 78 26 20 | 5a 29 0a 58 7b 0a 58 20 |Matrix& |Z).X{.X |
|00003b60| 20 20 54 72 61 63 65 72 | 20 65 74 28 22 45 76 61 | Tracer| et("Eva|
|00003b70| 6c 75 65 28 74 72 65 64 | 32 29 22 29 3b 0a 58 20 |lue(tred|2)");.X |
|00003b80| 20 20 52 65 61 6c 20 74 | 6f 6c 20 3d 0a 58 20 20 | Real t|ol =.X |
|00003b90| 20 20 20 20 46 6c 6f 61 | 74 69 6e 67 50 6f 69 6e | Floa|tingPoin|
|00003ba0| 74 50 72 65 63 69 73 69 | 6f 6e 3a 3a 4d 69 6e 69 |tPrecisi|on::Mini|
|00003bb0| 6d 75 6d 28 29 2f 46 6c | 6f 61 74 69 6e 67 50 6f |mum()/Fl|oatingPo|
|00003bc0| 69 6e 74 50 72 65 63 69 | 73 69 6f 6e 3a 3a 45 70 |intPreci|sion::Ep|
|00003bd0| 73 69 6c 6f 6e 28 29 3b | 0a 58 20 20 20 69 6e 74 |silon();|.X int|
|00003be0| 20 6e 20 3d 20 41 2e 4e | 72 6f 77 73 28 29 3b 20 | n = A.N|rows(); |
|00003bf0| 5a 2e 52 65 44 69 6d 65 | 6e 73 69 6f 6e 28 6e 2c |Z.ReDime|nsion(n,|
|00003c00| 6e 29 3b 20 5a 2e 49 6e | 6a 65 63 74 28 41 29 3b |n); Z.In|ject(A);|
|00003c10| 0a 58 20 20 20 44 2e 52 | 65 44 69 6d 65 6e 73 69 |.X D.R|eDimensi|
|00003c20| 6f 6e 28 6e 29 3b 20 45 | 2e 52 65 44 69 6d 65 6e |on(n); E|.ReDimen|
|00003c30| 73 69 6f 6e 28 6e 29 3b | 0a 58 20 20 20 52 65 61 |sion(n);|.X Rea|
|00003c40| 6c 2a 20 7a 20 3d 20 5a | 2e 53 74 6f 72 65 28 29 |l* z = Z|.Store()|
|00003c50| 3b 0a 58 0a 58 20 20 20 | 66 6f 72 20 28 69 6e 74 |;.X.X |for (int|
|00003c60| 20 69 3d 6e 2d 31 3b 20 | 69 20 3e 20 30 3b 20 69 | i=n-1; |i > 0; i|
|00003c70| 2d 2d 29 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |--) | |
|00003c80| 20 20 20 20 20 20 2f 2f | 20 69 3d 30 20 69 73 20 | //| i=0 is |
|00003c90| 65 78 63 6c 75 64 65 64 | 0a 58 20 20 20 7b 0a 58 |excluded|.X {.X|
|00003ca0| 20 20 20 20 20 20 52 65 | 61 6c 20 66 20 3d 20 5a | Re|al f = Z|
|00003cb0| 2e 65 6c 65 6d 65 6e 74 | 28 69 2c 69 2d 31 29 3b |.element|(i,i-1);|
|00003cc0| 20 52 65 61 6c 20 67 20 | 3d 20 30 2e 30 3b 0a 58 | Real g |= 0.0;.X|
|00003cd0| 20 20 20 20 20 20 69 6e | 74 20 6b 20 3d 20 69 2d | in|t k = i-|
|00003ce0| 31 3b 20 52 65 61 6c 2a | 20 7a 69 6b 20 3d 20 7a |1; Real*| zik = z|
|00003cf0| 20 2b 20 69 2a 6e 3b 0a | 58 20 20 20 20 20 20 77 | + i*n;.|X w|
|00003d00| 68 69 6c 65 20 28 6b 2d | 2d 29 20 67 20 2b 3d 20 |hile (k-|-) g += |
|00003d10| 73 71 75 61 72 65 28 2a | 7a 69 6b 2b 2b 29 3b 0a |square(*|zik++);.|
|00003d20| 58 20 20 20 20 20 20 52 | 65 61 6c 20 68 20 3d 20 |X R|eal h = |
|00003d30| 67 20 2b 20 73 71 75 61 | 72 65 28 66 29 3b 0a 58 |g + squa|re(f);.X|
|00003d40| 20 20 20 20 20 20 69 66 | 20 28 67 20 3c 3d 20 74 | if| (g <= t|
|00003d50| 6f 6c 29 20 7b 20 45 2e | 65 6c 65 6d 65 6e 74 28 |ol) { E.|element(|
|00003d60| 69 29 20 3d 20 66 3b 20 | 68 20 3d 20 30 2e 30 3b |i) = f; |h = 0.0;|
|00003d70| 20 7d 0a 58 20 20 20 20 | 20 20 65 6c 73 65 0a 58 | }.X | else.X|
|00003d80| 20 20 20 20 20 20 7b 0a | 58 09 20 67 20 3d 20 73 | {.|X. g = s|
|00003d90| 69 67 6e 28 2d 73 71 72 | 74 28 68 29 2c 20 66 29 |ign(-sqr|t(h), f)|
|00003da0| 3b 20 45 2e 65 6c 65 6d | 65 6e 74 28 69 29 20 3d |; E.elem|ent(i) =|
|00003db0| 20 67 3b 20 68 20 2d 3d | 20 66 2a 67 3b 0a 58 09 | g; h -=| f*g;.X.|
|00003dc0| 20 5a 2e 65 6c 65 6d 65 | 6e 74 28 69 2c 69 2d 31 | Z.eleme|nt(i,i-1|
|00003dd0| 29 20 3d 20 66 2d 67 3b | 20 66 20 3d 20 30 2e 30 |) = f-g;| f = 0.0|
|00003de0| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 52 65 61 6c |;.X | Real|
|00003df0| 2a 20 7a 6a 69 20 3d 20 | 7a 20 2b 20 69 3b 20 52 |* zji = |z + i; R|
|00003e00| 65 61 6c 2a 20 7a 69 6a | 20 3d 20 7a 20 2b 20 69 |eal* zij| = z + i|
|00003e10| 2a 6e 3b 20 52 65 61 6c | 2a 20 65 6a 20 3d 20 45 |*n; Real|* ej = E|
|00003e20| 2e 53 74 6f 72 65 28 29 | 3b 0a 58 09 20 66 6f 72 |.Store()|;.X. for|
|00003e30| 20 28 69 6e 74 20 6a 3d | 30 3b 20 6a 3c 69 3b 20 | (int j=|0; j<i; |
|00003e40| 6a 2b 2b 29 0a 58 09 20 | 7b 0a 58 09 20 20 20 20 |j++).X. |{.X. |
|00003e50| 2a 7a 6a 69 20 3d 20 28 | 2a 7a 69 6a 2b 2b 29 2f |*zji = (|*zij++)/|
|00003e60| 68 3b 20 67 20 3d 20 30 | 2e 30 3b 0a 58 20 20 20 |h; g = 0|.0;.X |
|00003e70| 20 20 20 20 20 20 20 20 | 20 52 65 61 6c 2a 20 7a | | Real* z|
|00003e80| 6a 6b 20 3d 20 7a 20 2b | 20 6a 2a 6e 3b 20 7a 69 |jk = z +| j*n; zi|
|00003e90| 6b 20 3d 20 7a 20 2b 20 | 69 2a 6e 3b 0a 58 20 20 |k = z + |i*n;.X |
|00003ea0| 20 20 20 20 20 20 20 20 | 20 20 6b 20 3d 20 6a 3b | | k = j;|
|00003eb0| 20 77 68 69 6c 65 20 28 | 6b 2d 2d 29 20 67 20 2b | while (|k--) g +|
|00003ec0| 3d 20 2a 7a 6a 6b 2b 2b | 20 2a 20 28 2a 7a 69 6b |= *zjk++| * (*zik|
|00003ed0| 2b 2b 29 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |++);.X | |
|00003ee0| 20 20 6b 20 3d 20 69 2d | 6a 3b 20 77 68 69 6c 65 | k = i-|j; while|
|00003ef0| 20 28 6b 2d 2d 29 20 7b | 20 67 20 2b 3d 20 2a 7a | (k--) {| g += *z|
|00003f00| 6a 6b 20 2a 20 28 2a 7a | 69 6b 2b 2b 29 3b 20 7a |jk * (*z|ik++); z|
|00003f10| 6a 6b 20 2b 3d 20 6e 3b | 20 7d 0a 58 09 20 20 20 |jk += n;| }.X. |
|00003f20| 20 2a 65 6a 2b 2b 20 3d | 20 67 2f 68 3b 20 66 20 | *ej++ =| g/h; f |
|00003f30| 2b 3d 20 67 20 2a 20 28 | 2a 7a 6a 69 29 3b 20 7a |+= g * (|*zji); z|
|00003f40| 6a 69 20 2b 3d 20 6e 3b | 0a 58 09 20 7d 0a 58 09 |ji += n;|.X. }.X.|
|00003f50| 20 52 65 61 6c 20 68 68 | 20 3d 20 66 20 2f 20 28 | Real hh| = f / (|
|00003f60| 68 20 2b 20 68 29 3b 20 | 7a 69 6a 20 3d 20 7a 20 |h + h); |zij = z |
|00003f70| 2b 20 69 2a 6e 3b 20 65 | 6a 20 3d 20 45 2e 53 74 |+ i*n; e|j = E.St|
|00003f80| 6f 72 65 28 29 3b 0a 58 | 09 20 66 6f 72 20 28 6a |ore();.X|. for (j|
|00003f90| 3d 30 3b 20 6a 3c 69 3b | 20 6a 2b 2b 29 0a 58 09 |=0; j<i;| j++).X.|
|00003fa0| 20 7b 0a 58 09 20 20 20 | 20 66 20 3d 20 2a 7a 69 | {.X. | f = *zi|
|00003fb0| 6a 2b 2b 3b 20 67 20 3d | 20 2a 65 6a 20 2d 20 68 |j++; g =| *ej - h|
|00003fc0| 68 20 2a 20 66 3b 20 2a | 65 6a 2b 2b 20 3d 20 67 |h * f; *|ej++ = g|
|00003fd0| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 52 |;.X | R|
|00003fe0| 65 61 6c 2a 20 7a 6a 6b | 20 3d 20 7a 20 2b 20 6a |eal* zjk| = z + j|
|00003ff0| 2a 6e 3b 20 52 65 61 6c | 2a 20 7a 69 6b 20 3d 20 |*n; Real|* zik = |
|00004000| 7a 20 2b 20 69 2a 6e 3b | 0a 58 20 20 20 20 20 20 |z + i*n;|.X |
|00004010| 20 20 20 20 20 20 52 65 | 61 6c 2a 20 65 6b 20 3d | Re|al* ek =|
|00004020| 20 45 2e 53 74 6f 72 65 | 28 29 3b 20 6b 20 3d 20 | E.Store|(); k = |
|00004030| 6a 2b 31 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |j+1;.X | |
|00004040| 20 20 77 68 69 6c 65 20 | 28 6b 2d 2d 29 20 20 2a | while |(k--) *|
|00004050| 7a 6a 6b 2b 2b 20 2d 3d | 20 28 20 66 2a 28 2a 65 |zjk++ -=| ( f*(*e|
|00004060| 6b 2b 2b 29 20 2b 20 67 | 2a 28 2a 7a 69 6b 2b 2b |k++) + g|*(*zik++|
|00004070| 29 20 29 3b 20 0a 58 09 | 20 7d 0a 58 20 20 20 20 |) ); .X.| }.X |
|00004080| 20 20 7d 0a 58 20 20 20 | 20 20 20 44 2e 65 6c 65 | }.X | D.ele|
|00004090| 6d 65 6e 74 28 69 29 20 | 3d 20 68 3b 0a 58 20 20 |ment(i) |= h;.X |
|000040a0| 20 7d 0a 58 0a 58 20 20 | 20 44 2e 65 6c 65 6d 65 | }.X.X | D.eleme|
|000040b0| 6e 74 28 30 29 20 3d 20 | 30 2e 30 3b 20 45 2e 65 |nt(0) = |0.0; E.e|
|000040c0| 6c 65 6d 65 6e 74 28 30 | 29 20 3d 20 30 2e 30 3b |lement(0|) = 0.0;|
|000040d0| 0a 58 20 20 20 66 6f 72 | 20 28 69 3d 30 3b 20 69 |.X for| (i=0; i|
|000040e0| 3c 6e 3b 20 69 2b 2b 29 | 0a 58 20 20 20 7b 0a 58 |<n; i++)|.X {.X|
|000040f0| 20 20 20 20 20 20 69 66 | 20 28 44 2e 65 6c 65 6d | if| (D.elem|
|00004100| 65 6e 74 28 69 29 20 21 | 3d 20 30 2e 30 29 0a 58 |ent(i) !|= 0.0).X|
|00004110| 20 20 20 20 20 20 7b 0a | 58 09 20 66 6f 72 20 28 | {.|X. for (|
|00004120| 69 6e 74 20 6a 3d 30 3b | 20 6a 3c 69 3b 20 6a 2b |int j=0;| j<i; j+|
|00004130| 2b 29 0a 58 09 20 7b 0a | 58 09 20 20 20 20 52 65 |+).X. {.|X. Re|
|00004140| 61 6c 20 67 20 3d 20 30 | 2e 30 3b 0a 58 20 20 20 |al g = 0|.0;.X |
|00004150| 20 20 20 20 20 20 20 20 | 20 52 65 61 6c 2a 20 7a | | Real* z|
|00004160| 69 6b 20 3d 20 7a 20 2b | 20 69 2a 6e 3b 20 52 65 |ik = z +| i*n; Re|
|00004170| 61 6c 2a 20 7a 6b 6a 20 | 3d 20 7a 20 2b 20 6a 3b |al* zkj |= z + j;|
|00004180| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 69 6e |.X | in|
|00004190| 74 20 6b 20 3d 20 69 3b | 20 77 68 69 6c 65 20 28 |t k = i;| while (|
|000041a0| 6b 2d 2d 29 20 7b 20 67 | 20 2b 3d 20 2a 7a 69 6b |k--) { g| += *zik|
|000041b0| 2b 2b 20 2a 20 28 2a 7a | 6b 6a 29 3b 20 7a 6b 6a |++ * (*z|kj); zkj|
|000041c0| 20 2b 3d 20 6e 3b 20 7d | 0a 58 20 20 20 20 20 20 | += n; }|.X |
|000041d0| 20 20 20 20 20 20 52 65 | 61 6c 2a 20 7a 6b 69 20 | Re|al* zki |
|000041e0| 3d 20 7a 20 2b 20 69 3b | 20 7a 6b 6a 20 3d 20 7a |= z + i;| zkj = z|
|000041f0| 20 2b 20 6a 3b 0a 58 20 | 20 20 20 20 20 20 20 20 | + j;.X | |
|00004200| 20 20 20 6b 20 3d 20 69 | 3b 20 77 68 69 6c 65 20 | k = i|; while |
|00004210| 28 6b 2d 2d 29 20 7b 20 | 2a 7a 6b 6a 20 2d 3d 20 |(k--) { |*zkj -= |
|00004220| 67 20 2a 20 28 2a 7a 6b | 69 29 3b 20 7a 6b 6a 20 |g * (*zk|i); zkj |
|00004230| 2b 3d 20 6e 3b 20 7a 6b | 69 20 2b 3d 20 6e 3b 20 |+= n; zk|i += n; |
|00004240| 7d 0a 58 09 20 7d 0a 58 | 20 20 20 20 20 20 7d 0a |}.X. }.X| }.|
|00004250| 58 20 20 20 20 20 20 52 | 65 61 6c 2a 20 7a 69 6a |X R|eal* zij|
|00004260| 20 3d 20 7a 20 2b 20 69 | 2a 6e 3b 20 52 65 61 6c | = z + i|*n; Real|
|00004270| 2a 20 7a 6a 69 20 3d 20 | 7a 20 2b 20 69 3b 0a 58 |* zji = |z + i;.X|
|00004280| 20 20 20 20 20 20 69 6e | 74 20 6a 20 3d 20 69 3b | in|t j = i;|
|00004290| 20 77 68 69 6c 65 20 28 | 6a 2d 2d 29 20 20 7b 20 | while (|j--) { |
|000042a0| 2a 7a 69 6a 2b 2b 20 3d | 20 30 2e 30 3b 20 2a 7a |*zij++ =| 0.0; *z|
|000042b0| 6a 69 20 3d 20 30 2e 30 | 3b 20 7a 6a 69 20 2b 3d |ji = 0.0|; zji +=|
|000042c0| 20 6e 3b 20 7d 0a 58 20 | 20 20 20 20 20 44 2e 65 | n; }.X | D.e|
|000042d0| 6c 65 6d 65 6e 74 28 69 | 29 20 3d 20 2a 7a 69 6a |lement(i|) = *zij|
|000042e0| 3b 20 2a 7a 69 6a 20 3d | 20 31 2e 30 3b 0a 58 20 |; *zij =| 1.0;.X |
|000042f0| 20 20 7d 0a 58 7d 0a 58 | 0a 58 73 74 61 74 69 63 | }.X}.X|.Xstatic|
|00004300| 20 76 6f 69 64 20 74 71 | 6c 32 28 44 69 61 67 6f | void tq|l2(Diago|
|00004310| 6e 61 6c 4d 61 74 72 69 | 78 26 20 44 2c 20 44 69 |nalMatri|x& D, Di|
|00004320| 61 67 6f 6e 61 6c 4d 61 | 74 72 69 78 26 20 45 2c |agonalMa|trix& E,|
|00004330| 20 4d 61 74 72 69 78 26 | 20 5a 29 0a 58 7b 0a 58 | Matrix&| Z).X{.X|
|00004340| 20 20 20 54 72 61 63 65 | 72 20 65 74 28 22 45 76 | Trace|r et("Ev|
|00004350| 61 6c 75 65 28 74 71 6c | 32 29 22 29 3b 0a 58 20 |alue(tql|2)");.X |
|00004360| 20 20 52 65 61 6c 20 65 | 70 73 20 3d 20 46 6c 6f | Real e|ps = Flo|
|00004370| 61 74 69 6e 67 50 6f 69 | 6e 74 50 72 65 63 69 73 |atingPoi|ntPrecis|
|00004380| 69 6f 6e 3a 3a 45 70 73 | 69 6c 6f 6e 28 29 3b 0a |ion::Eps|ilon();.|
|00004390| 58 20 20 20 69 6e 74 20 | 6e 20 3d 20 44 2e 4e 72 |X int |n = D.Nr|
|000043a0| 6f 77 73 28 29 3b 20 52 | 65 61 6c 2a 20 7a 20 3d |ows(); R|eal* z =|
|000043b0| 20 5a 2e 53 74 6f 72 65 | 28 29 3b 0a 58 20 20 20 | Z.Store|();.X |
|000043c0| 66 6f 72 20 28 69 6e 74 | 20 6c 3d 31 3b 20 6c 3c |for (int| l=1; l<|
|000043d0| 6e 3b 20 6c 2b 2b 29 20 | 45 2e 65 6c 65 6d 65 6e |n; l++) |E.elemen|
|000043e0| 74 28 6c 2d 31 29 20 3d | 20 45 2e 65 6c 65 6d 65 |t(l-1) =| E.eleme|
|000043f0| 6e 74 28 6c 29 3b 0a 58 | 20 20 20 52 65 61 6c 20 |nt(l);.X| Real |
|00004400| 62 20 3d 20 30 2e 30 3b | 20 52 65 61 6c 20 66 20 |b = 0.0;| Real f |
|00004410| 3d 20 30 2e 30 3b 20 45 | 2e 65 6c 65 6d 65 6e 74 |= 0.0; E|.element|
|00004420| 28 6e 2d 31 29 20 3d 20 | 30 2e 30 3b 0a 58 20 20 |(n-1) = |0.0;.X |
|00004430| 20 66 6f 72 20 28 6c 3d | 30 3b 20 6c 3c 6e 3b 20 | for (l=|0; l<n; |
|00004440| 6c 2b 2b 29 0a 58 20 20 | 20 7b 0a 58 20 20 20 20 |l++).X | {.X |
|00004450| 20 20 69 6e 74 20 69 2c | 6a 3b 0a 58 20 20 20 20 | int i,|j;.X |
|00004460| 20 20 52 65 61 6c 26 20 | 64 6c 20 3d 20 44 2e 65 | Real& |dl = D.e|
|00004470| 6c 65 6d 65 6e 74 28 6c | 29 3b 20 52 65 61 6c 26 |lement(l|); Real&|
|00004480| 20 65 6c 20 3d 20 45 2e | 65 6c 65 6d 65 6e 74 28 | el = E.|element(|
|00004490| 6c 29 3b 0a 58 20 20 20 | 20 20 20 52 65 61 6c 20 |l);.X | Real |
|000044a0| 68 20 3d 20 65 70 73 20 | 2a 20 28 20 66 61 62 73 |h = eps |* ( fabs|
|000044b0| 28 64 6c 29 20 2b 20 66 | 61 62 73 28 65 6c 29 20 |(dl) + f|abs(el) |
|000044c0| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 62 20 |);.X | if (b |
|000044d0| 3c 20 68 29 20 62 20 3d | 20 68 3b 0a 58 20 20 20 |< h) b =| h;.X |
|000044e0| 20 20 20 66 6f 72 20 28 | 69 6e 74 20 6d 3d 6c 3b | for (|int m=l;|
|000044f0| 20 6d 3c 6e 3b 20 6d 2b | 2b 29 20 69 66 20 28 66 | m<n; m+|+) if (f|
|00004500| 61 62 73 28 45 2e 65 6c | 65 6d 65 6e 74 28 6d 29 |abs(E.el|ement(m)|
|00004510| 29 20 3c 3d 20 62 29 20 | 62 72 65 61 6b 3b 0a 58 |) <= b) |break;.X|
|00004520| 20 20 20 20 20 20 42 6f | 6f 6c 65 61 6e 20 74 65 | Bo|olean te|
|00004530| 73 74 20 3d 20 46 41 4c | 53 45 3b 0a 58 20 20 20 |st = FAL|SE;.X |
|00004540| 20 20 20 66 6f 72 20 28 | 6a 3d 30 3b 20 6a 3c 33 | for (|j=0; j<3|
|00004550| 30 3b 20 6a 2b 2b 29 0a | 58 20 20 20 20 20 20 7b |0; j++).|X {|
|00004560| 0a 58 09 20 69 66 20 28 | 6d 3d 3d 6c 29 20 7b 20 |.X. if (|m==l) { |
|00004570| 74 65 73 74 20 3d 20 54 | 52 55 45 3b 20 62 72 65 |test = T|RUE; bre|
|00004580| 61 6b 3b 20 7d 0a 58 09 | 20 52 65 61 6c 26 20 64 |ak; }.X.| Real& d|
|00004590| 6c 31 20 3d 20 44 2e 65 | 6c 65 6d 65 6e 74 28 6c |l1 = D.e|lement(l|
|000045a0| 2b 31 29 3b 0a 58 09 20 | 52 65 61 6c 20 67 20 3d |+1);.X. |Real g =|
|000045b0| 20 64 6c 3b 20 52 65 61 | 6c 20 70 20 3d 20 28 64 | dl; Rea|l p = (d|
|000045c0| 6c 31 2d 67 29 20 2f 20 | 28 32 2e 30 2a 65 6c 29 |l1-g) / |(2.0*el)|
|000045d0| 3b 20 52 65 61 6c 20 72 | 20 3d 20 73 71 72 74 28 |; Real r| = sqrt(|
|000045e0| 70 2a 70 20 2b 20 31 2e | 30 29 3b 0a 58 09 20 64 |p*p + 1.|0);.X. d|
|000045f0| 6c 20 3d 20 65 6c 20 2f | 20 28 70 20 3c 20 30 2e |l = el /| (p < 0.|
|00004600| 30 20 3f 20 70 2d 72 20 | 3a 20 70 2b 72 29 3b 20 |0 ? p-r |: p+r); |
|00004610| 52 65 61 6c 20 68 20 3d | 20 67 20 2d 20 64 6c 3b |Real h =| g - dl;|
|00004620| 20 66 20 2b 3d 20 68 3b | 0a 58 09 20 52 65 61 6c | f += h;|.X. Real|
|00004630| 2a 20 64 6c 78 20 3d 20 | 26 64 6c 31 3b 20 69 20 |* dlx = |&dl1; i |
|00004640| 3d 20 6e 2d 6c 2d 31 3b | 20 77 68 69 6c 65 20 28 |= n-l-1;| while (|
|00004650| 69 2d 2d 29 20 2a 64 6c | 78 2b 2b 20 2d 3d 20 68 |i--) *dl|x++ -= h|
|00004660| 3b 0a 58 0a 58 09 20 70 | 20 3d 20 44 2e 65 6c 65 |;.X.X. p| = D.ele|
|00004670| 6d 65 6e 74 28 6d 29 3b | 20 52 65 61 6c 20 63 20 |ment(m);| Real c |
|00004680| 3d 20 31 2e 30 3b 20 52 | 65 61 6c 20 73 20 3d 20 |= 1.0; R|eal s = |
|00004690| 30 2e 30 3b 0a 58 09 20 | 66 6f 72 20 28 69 3d 6d |0.0;.X. |for (i=m|
|000046a0| 2d 31 3b 20 69 3e 3d 6c | 3b 20 69 2d 2d 29 0a 58 |-1; i>=l|; i--).X|
|000046b0| 09 20 7b 0a 58 09 20 20 | 20 20 52 65 61 6c 20 65 |. {.X. | Real e|
|000046c0| 69 20 3d 20 45 2e 65 6c | 65 6d 65 6e 74 28 69 29 |i = E.el|ement(i)|
|000046d0| 3b 20 52 65 61 6c 20 64 | 69 20 3d 20 44 2e 65 6c |; Real d|i = D.el|
|000046e0| 65 6d 65 6e 74 28 69 29 | 3b 0a 58 09 20 20 20 20 |ement(i)|;.X. |
|000046f0| 52 65 61 6c 26 20 65 69 | 31 20 3d 20 45 2e 65 6c |Real& ei|1 = E.el|
|00004700| 65 6d 65 6e 74 28 69 2b | 31 29 3b 0a 58 09 20 20 |ement(i+|1);.X. |
|00004710| 20 20 67 20 3d 20 63 20 | 2a 20 65 69 3b 20 68 20 | g = c |* ei; h |
|00004720| 3d 20 63 20 2a 20 70 3b | 0a 58 09 20 20 20 20 69 |= c * p;|.X. i|
|00004730| 66 20 28 20 66 61 62 73 | 28 70 29 20 3e 3d 20 66 |f ( fabs|(p) >= f|
|00004740| 61 62 73 28 65 69 29 29 | 0a 58 09 20 20 20 20 7b |abs(ei))|.X. {|
|00004750| 0a 58 09 20 20 20 20 20 | 20 20 63 20 3d 20 65 69 |.X. | c = ei|
|00004760| 20 2f 20 70 3b 20 72 20 | 3d 20 73 71 72 74 28 63 | / p; r |= sqrt(c|
|00004770| 2a 63 20 2b 20 31 2e 30 | 29 3b 0a 58 09 20 20 20 |*c + 1.0|);.X. |
|00004780| 20 20 20 20 65 69 31 20 | 3d 20 73 2a 70 2a 72 3b | ei1 |= s*p*r;|
|00004790| 20 73 20 3d 20 63 2f 72 | 3b 20 63 20 3d 20 31 2e | s = c/r|; c = 1.|
|000047a0| 30 2f 72 3b 0a 58 09 20 | 20 20 20 7d 0a 58 09 20 |0/r;.X. | }.X. |
|000047b0| 20 20 20 65 6c 73 65 0a | 58 09 20 20 20 20 7b 0a | else.|X. {.|
|000047c0| 58 09 20 20 20 20 20 20 | 20 63 20 3d 20 70 20 2f |X. | c = p /|
|000047d0| 20 65 69 3b 20 72 20 3d | 20 73 71 72 74 28 63 2a | ei; r =| sqrt(c*|
|000047e0| 63 20 2b 20 31 2e 30 29 | 3b 0a 58 09 20 20 20 20 |c + 1.0)|;.X. |
|000047f0| 20 20 20 65 69 31 20 3d | 20 73 20 2a 20 65 69 20 | ei1 =| s * ei |
|00004800| 2a 20 72 3b 20 73 20 3d | 20 31 2e 30 2f 72 3b 20 |* r; s =| 1.0/r; |
|00004810| 63 20 2f 3d 20 72 3b 0a | 58 09 20 20 20 20 7d 0a |c /= r;.|X. }.|
|00004820| 58 09 20 20 20 20 70 20 | 3d 20 63 20 2a 20 64 69 |X. p |= c * di|
|00004830| 20 2d 20 73 2a 67 3b 20 | 44 2e 65 6c 65 6d 65 6e | - s*g; |D.elemen|
|00004840| 74 28 69 2b 31 29 20 3d | 20 68 20 2b 20 73 20 2a |t(i+1) =| h + s *|
|00004850| 20 28 63 2a 67 20 2b 20 | 73 2a 64 69 29 3b 0a 58 | (c*g + |s*di);.X|
|00004860| 0a 58 09 20 20 20 20 52 | 65 61 6c 2a 20 7a 6b 69 |.X. R|eal* zki|
|00004870| 20 3d 20 7a 20 2b 20 69 | 3b 20 52 65 61 6c 2a 20 | = z + i|; Real* |
|00004880| 7a 6b 69 31 20 3d 20 7a | 6b 69 20 2b 20 31 3b 20 |zki1 = z|ki + 1; |
|00004890| 69 6e 74 20 6b 20 3d 20 | 6e 3b 0a 58 09 20 20 20 |int k = |n;.X. |
|000048a0| 20 77 68 69 6c 65 20 28 | 6b 2d 2d 29 0a 58 09 20 | while (|k--).X. |
|000048b0| 20 20 20 7b 0a 58 09 20 | 20 20 20 20 20 20 68 20 | {.X. | h |
|000048c0| 3d 20 2a 7a 6b 69 31 3b | 20 2a 7a 6b 69 31 20 3d |= *zki1;| *zki1 =|
|000048d0| 20 73 2a 28 2a 7a 6b 69 | 29 20 2b 20 63 2a 68 3b | s*(*zki|) + c*h;|
|000048e0| 20 2a 7a 6b 69 20 3d 20 | 63 2a 28 2a 7a 6b 69 29 | *zki = |c*(*zki)|
|000048f0| 20 2d 20 73 2a 68 3b 0a | 58 09 20 20 20 20 20 20 | - s*h;.|X. |
|00004900| 20 7a 6b 69 20 2b 3d 20 | 6e 3b 20 7a 6b 69 31 20 | zki += |n; zki1 |
|00004910| 2b 3d 20 6e 3b 0a 58 09 | 20 20 20 20 7d 0a 58 09 |+= n;.X.| }.X.|
|00004920| 20 7d 0a 58 09 20 65 6c | 20 3d 20 73 2a 70 3b 20 | }.X. el| = s*p; |
|00004930| 64 6c 20 3d 20 63 2a 70 | 3b 0a 58 09 20 69 66 20 |dl = c*p|;.X. if |
|00004940| 28 66 61 62 73 28 65 6c | 29 20 3c 3d 20 62 29 20 |(fabs(el|) <= b) |
|00004950| 7b 20 74 65 73 74 20 3d | 20 54 52 55 45 3b 20 62 |{ test =| TRUE; b|
|00004960| 72 65 61 6b 3b 20 7d 0a | 58 20 20 20 20 20 20 7d |reak; }.|X }|
|00004970| 0a 58 20 20 20 20 20 20 | 69 66 20 28 21 74 65 73 |.X |if (!tes|
|00004980| 74 29 20 54 68 72 6f 77 | 20 28 20 43 6f 6e 76 65 |t) Throw| ( Conve|
|00004990| 72 67 65 6e 63 65 45 78 | 63 65 70 74 69 6f 6e 28 |rgenceEx|ception(|
|000049a0| 44 29 20 29 3b 0a 58 20 | 20 20 20 20 20 64 6c 20 |D) );.X | dl |
|000049b0| 2b 3d 20 66 3b 0a 58 20 | 20 20 7d 0a 58 0a 58 20 |+= f;.X | }.X.X |
|000049c0| 20 20 66 6f 72 20 28 69 | 6e 74 20 69 3d 30 3b 20 | for (i|nt i=0; |
|000049d0| 69 3c 6e 3b 20 69 2b 2b | 29 0a 58 20 20 20 7b 0a |i<n; i++|).X {.|
|000049e0| 58 20 20 20 20 20 20 69 | 6e 74 20 6b 20 3d 20 69 |X i|nt k = i|
|000049f0| 3b 20 52 65 61 6c 20 70 | 20 3d 20 44 2e 65 6c 65 |; Real p| = D.ele|
|00004a00| 6d 65 6e 74 28 69 29 3b | 0a 58 20 20 20 20 20 20 |ment(i);|.X |
|00004a10| 66 6f 72 20 28 69 6e 74 | 20 6a 3d 69 2b 31 3b 20 |for (int| j=i+1; |
|00004a20| 6a 3c 6e 3b 20 6a 2b 2b | 29 0a 58 20 20 20 20 20 |j<n; j++|).X |
|00004a30| 20 20 20 20 7b 20 69 66 | 20 28 44 2e 65 6c 65 6d | { if| (D.elem|
|00004a40| 65 6e 74 28 6a 29 20 3c | 20 70 29 20 7b 20 6b 20 |ent(j) <| p) { k |
|00004a50| 3d 20 6a 3b 20 70 20 3d | 20 44 2e 65 6c 65 6d 65 |= j; p =| D.eleme|
|00004a60| 6e 74 28 6a 29 3b 20 7d | 20 7d 0a 58 20 20 20 20 |nt(j); }| }.X |
|00004a70| 20 20 69 66 20 28 6b 20 | 21 3d 20 69 29 0a 58 20 | if (k |!= i).X |
|00004a80| 20 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 20 20 | {.X| |
|00004a90| 20 44 2e 65 6c 65 6d 65 | 6e 74 28 6b 29 20 3d 20 | D.eleme|nt(k) = |
|00004aa0| 44 2e 65 6c 65 6d 65 6e | 74 28 69 29 3b 20 44 2e |D.elemen|t(i); D.|
|00004ab0| 65 6c 65 6d 65 6e 74 28 | 69 29 20 3d 20 70 3b 20 |element(|i) = p; |
|00004ac0| 69 6e 74 20 6a 20 3d 20 | 6e 3b 0a 58 09 20 52 65 |int j = |n;.X. Re|
|00004ad0| 61 6c 2a 20 7a 6a 69 20 | 3d 20 7a 20 2b 20 69 3b |al* zji |= z + i;|
|00004ae0| 20 52 65 61 6c 2a 20 7a | 6a 6b 20 3d 20 7a 20 2b | Real* z|jk = z +|
|00004af0| 20 6b 3b 0a 58 20 20 20 | 20 20 20 20 20 20 77 68 | k;.X | wh|
|00004b00| 69 6c 65 20 28 6a 2d 2d | 29 20 7b 20 70 20 3d 20 |ile (j--|) { p = |
|00004b10| 2a 7a 6a 69 3b 20 2a 7a | 6a 69 20 3d 20 2a 7a 6a |*zji; *z|ji = *zj|
|00004b20| 6b 3b 20 2a 7a 6a 6b 20 | 3d 20 70 3b 20 7a 6a 69 |k; *zjk |= p; zji|
|00004b30| 20 2b 3d 20 6e 3b 20 7a | 6a 6b 20 2b 3d 20 6e 3b | += n; z|jk += n;|
|00004b40| 20 7d 0a 58 20 20 20 20 | 20 20 7d 0a 58 20 20 20 | }.X | }.X |
|00004b50| 7d 0a 58 0a 58 7d 0a 58 | 0a 58 73 74 61 74 69 63 |}.X.X}.X|.Xstatic|
|00004b60| 20 76 6f 69 64 20 74 72 | 65 64 33 28 63 6f 6e 73 | void tr|ed3(cons|
|00004b70| 74 20 53 79 6d 6d 65 74 | 72 69 63 4d 61 74 72 69 |t Symmet|ricMatri|
|00004b80| 78 26 20 58 2c 20 44 69 | 61 67 6f 6e 61 6c 4d 61 |x& X, Di|agonalMa|
|00004b90| 74 72 69 78 26 20 44 2c | 0a 58 20 20 20 44 69 61 |trix& D,|.X Dia|
|00004ba0| 67 6f 6e 61 6c 4d 61 74 | 72 69 78 26 20 45 2c 20 |gonalMat|rix& E, |
|00004bb0| 53 79 6d 6d 65 74 72 69 | 63 4d 61 74 72 69 78 26 |Symmetri|cMatrix&|
|00004bc0| 20 41 29 0a 58 7b 0a 58 | 20 20 20 54 72 61 63 65 | A).X{.X| Trace|
|00004bd0| 72 20 65 74 28 22 45 76 | 61 6c 75 65 28 74 72 65 |r et("Ev|alue(tre|
|00004be0| 64 33 29 22 29 3b 0a 58 | 20 20 20 52 65 61 6c 20 |d3)");.X| Real |
|00004bf0| 74 6f 6c 20 3d 0a 58 20 | 20 20 20 20 20 46 6c 6f |tol =.X | Flo|
|00004c00| 61 74 69 6e 67 50 6f 69 | 6e 74 50 72 65 63 69 73 |atingPoi|ntPrecis|
|00004c10| 69 6f 6e 3a 3a 4d 69 6e | 69 6d 75 6d 28 29 2f 46 |ion::Min|imum()/F|
|00004c20| 6c 6f 61 74 69 6e 67 50 | 6f 69 6e 74 50 72 65 63 |loatingP|ointPrec|
|00004c30| 69 73 69 6f 6e 3a 3a 45 | 70 73 69 6c 6f 6e 28 29 |ision::E|psilon()|
|00004c40| 3b 0a 58 20 20 20 69 6e | 74 20 6e 20 3d 20 58 2e |;.X in|t n = X.|
|00004c50| 4e 72 6f 77 73 28 29 3b | 20 41 20 3d 20 58 3b 20 |Nrows();| A = X; |
|00004c60| 44 2e 52 65 44 69 6d 65 | 6e 73 69 6f 6e 28 6e 29 |D.ReDime|nsion(n)|
|00004c70| 3b 20 45 2e 52 65 44 69 | 6d 65 6e 73 69 6f 6e 28 |; E.ReDi|mension(|
|00004c80| 6e 29 3b 0a 58 20 20 20 | 52 65 61 6c 2a 20 65 69 |n);.X |Real* ei|
|00004c90| 20 3d 20 45 2e 53 74 6f | 72 65 28 29 20 2b 20 6e | = E.Sto|re() + n|
|00004ca0| 3b 0a 58 20 20 20 66 6f | 72 20 28 69 6e 74 20 69 |;.X fo|r (int i|
|00004cb0| 20 3d 20 6e 2d 31 3b 20 | 69 20 3e 3d 20 30 3b 20 | = n-1; |i >= 0; |
|00004cc0| 69 2d 2d 29 0a 58 20 20 | 20 7b 0a 58 20 20 20 20 |i--).X | {.X |
|00004cd0| 20 20 52 65 61 6c 20 68 | 20 3d 20 30 2e 30 3b 20 | Real h| = 0.0; |
|00004ce0| 52 65 61 6c 20 66 3b 0a | 58 20 20 20 20 20 20 52 |Real f;.|X R|
|00004cf0| 65 61 6c 2a 20 64 20 3d | 20 44 2e 53 74 6f 72 65 |eal* d =| D.Store|
|00004d00| 28 29 3b 20 52 65 61 6c | 2a 20 61 20 3d 20 41 2e |(); Real|* a = A.|
|00004d10| 53 74 6f 72 65 28 29 20 | 2b 20 28 69 2a 28 69 2b |Store() |+ (i*(i+|
|00004d20| 31 29 29 2f 32 3b 20 69 | 6e 74 20 6b 20 3d 20 69 |1))/2; i|nt k = i|
|00004d30| 3b 0a 58 20 20 20 20 20 | 20 77 68 69 6c 65 20 28 |;.X | while (|
|00004d40| 6b 2d 2d 29 20 7b 20 66 | 20 3d 20 2a 61 2b 2b 3b |k--) { f| = *a++;|
|00004d50| 20 2a 64 2b 2b 20 3d 20 | 66 3b 20 68 20 2b 3d 20 | *d++ = |f; h += |
|00004d60| 73 71 75 61 72 65 28 66 | 29 3b 20 7d 0a 58 20 20 |square(f|); }.X |
|00004d70| 20 20 20 20 69 66 20 28 | 68 20 3c 3d 20 74 6f 6c | if (|h <= tol|
|00004d80| 29 20 7b 20 2a 28 2d 2d | 65 69 29 20 3d 20 30 2e |) { *(--|ei) = 0.|
|00004d90| 30 3b 20 68 20 3d 20 30 | 2e 30 3b 20 7d 0a 58 20 |0; h = 0|.0; }.X |
|00004da0| 20 20 20 20 20 65 6c 73 | 65 0a 58 20 20 20 20 20 | els|e.X |
|00004db0| 20 7b 0a 58 09 20 52 65 | 61 6c 20 67 20 3d 20 73 | {.X. Re|al g = s|
|00004dc0| 69 67 6e 28 2d 73 71 72 | 74 28 68 29 2c 20 66 29 |ign(-sqr|t(h), f)|
|00004dd0| 3b 20 2a 28 2d 2d 65 69 | 29 20 3d 20 67 3b 20 68 |; *(--ei|) = g; h|
|00004de0| 20 2d 3d 20 66 2a 67 3b | 0a 58 20 20 20 20 20 20 | -= f*g;|.X |
|00004df0| 20 20 20 66 20 2d 3d 20 | 67 3b 20 2a 28 64 2d 31 | f -= |g; *(d-1|
|00004e00| 29 20 3d 20 66 3b 20 2a | 28 61 2d 31 29 20 3d 20 |) = f; *|(a-1) = |
|00004e10| 66 3b 20 66 20 3d 20 30 | 2e 30 3b 0a 58 20 20 20 |f; f = 0|.0;.X |
|00004e20| 20 20 20 20 20 20 52 65 | 61 6c 2a 20 64 6a 20 3d | Re|al* dj =|
|00004e30| 20 44 2e 53 74 6f 72 65 | 28 29 3b 20 52 65 61 6c | D.Store|(); Real|
|00004e40| 2a 20 65 6a 20 3d 20 45 | 2e 53 74 6f 72 65 28 29 |* ej = E|.Store()|
|00004e50| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 66 6f 72 20 |;.X | for |
|00004e60| 28 69 6e 74 20 6a 20 3d | 20 30 3b 20 6a 20 3c 20 |(int j =| 0; j < |
|00004e70| 69 3b 20 6a 2b 2b 29 0a | 58 20 20 20 20 20 20 20 |i; j++).|X |
|00004e80| 20 20 7b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00004e90| 20 52 65 61 6c 2a 20 64 | 6b 20 3d 20 44 2e 53 74 | Real* d|k = D.St|
|00004ea0| 6f 72 65 28 29 3b 20 52 | 65 61 6c 2a 20 61 6b 20 |ore(); R|eal* ak |
|00004eb0| 3d 20 41 2e 53 74 6f 72 | 65 28 29 2b 28 6a 2a 28 |= A.Stor|e()+(j*(|
|00004ec0| 6a 2b 31 29 29 2f 32 3b | 0a 58 20 20 20 20 20 20 |j+1))/2;|.X |
|00004ed0| 20 20 20 20 20 20 52 65 | 61 6c 20 67 20 3d 20 30 | Re|al g = 0|
|00004ee0| 2e 30 3b 20 6b 20 3d 20 | 6a 3b 0a 58 20 20 20 20 |.0; k = |j;.X |
|00004ef0| 20 20 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 6b | |while (k|
|00004f00| 2d 2d 29 20 20 67 20 2b | 3d 20 2a 61 6b 2b 2b 20 |--) g +|= *ak++ |
|00004f10| 2a 20 2a 64 6b 2b 2b 3b | 0a 58 20 20 20 20 20 20 |* *dk++;|.X |
|00004f20| 20 20 20 20 20 20 6b 20 | 3d 20 69 2d 6a 3b 20 69 | k |= i-j; i|
|00004f30| 6e 74 20 6c 20 3d 20 6a | 3b 20 0a 58 20 20 20 20 |nt l = j|; .X |
|00004f40| 20 20 20 20 20 20 20 20 | 77 68 69 6c 65 20 28 6b | |while (k|
|00004f50| 2d 2d 29 20 7b 20 67 20 | 2b 3d 20 2a 61 6b 20 2a |--) { g |+= *ak *|
|00004f60| 20 2a 64 6b 2b 2b 3b 20 | 61 6b 20 2b 3d 20 2b 2b | *dk++; |ak += ++|
|00004f70| 6c 3b 20 7d 0a 58 09 20 | 20 20 20 67 20 2f 3d 20 |l; }.X. | g /= |
|00004f80| 68 3b 20 2a 65 6a 2b 2b | 20 3d 20 67 3b 20 66 20 |h; *ej++| = g; f |
|00004f90| 2b 3d 20 67 20 2a 20 2a | 64 6a 2b 2b 3b 0a 58 20 |+= g * *|dj++;.X |
|00004fa0| 20 20 20 20 20 20 20 20 | 7d 20 20 0a 58 09 20 52 | |} .X. R|
|00004fb0| 65 61 6c 20 68 68 20 3d | 20 66 20 2f 20 28 32 20 |eal hh =| f / (2 |
|00004fc0| 2a 20 68 29 3b 20 52 65 | 61 6c 2a 20 61 6b 20 3d |* h); Re|al* ak =|
|00004fd0| 20 41 2e 53 74 6f 72 65 | 28 29 3b 0a 58 20 20 20 | A.Store|();.X |
|00004fe0| 20 20 20 20 20 20 64 6a | 20 3d 20 44 2e 53 74 6f | dj| = D.Sto|
|00004ff0| 72 65 28 29 3b 20 65 6a | 20 3d 20 45 2e 53 74 6f |re(); ej| = E.Sto|
|00005000| 72 65 28 29 3b 0a 58 20 | 20 20 20 20 20 20 20 20 |re();.X | |
|00005010| 66 6f 72 20 28 6a 20 3d | 20 30 3b 20 6a 20 3c 20 |for (j =| 0; j < |
|00005020| 69 3b 20 6a 2b 2b 29 0a | 58 20 20 20 20 20 20 20 |i; j++).|X |
|00005030| 20 20 7b 0a 58 09 20 20 | 20 20 66 20 3d 20 2a 64 | {.X. | f = *d|
|00005040| 6a 2b 2b 3b 20 67 20 3d | 20 2a 65 6a 20 2d 20 68 |j++; g =| *ej - h|
|00005050| 68 20 2a 20 66 3b 20 2a | 65 6a 2b 2b 20 3d 20 67 |h * f; *|ej++ = g|
|00005060| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 52 |;.X | R|
|00005070| 65 61 6c 2a 20 64 6b 20 | 3d 20 44 2e 53 74 6f 72 |eal* dk |= D.Stor|
|00005080| 65 28 29 3b 20 52 65 61 | 6c 2a 20 65 6b 20 3d 20 |e(); Rea|l* ek = |
|00005090| 45 2e 53 74 6f 72 65 28 | 29 3b 20 6b 20 3d 20 6a |E.Store(|); k = j|
|000050a0| 2b 31 3b 0a 58 09 20 20 | 20 20 77 68 69 6c 65 20 |+1;.X. | while |
|000050b0| 28 6b 2d 2d 29 20 7b 20 | 2a 61 6b 2b 2b 20 2d 3d |(k--) { |*ak++ -=|
|000050c0| 20 28 66 20 2a 20 2a 65 | 6b 2b 2b 20 2b 20 67 20 | (f * *e|k++ + g |
|000050d0| 2a 20 2a 64 6b 2b 2b 29 | 3b 20 7d 0a 58 09 20 7d |* *dk++)|; }.X. }|
|000050e0| 0a 58 20 20 20 20 20 20 | 7d 0a 58 20 20 20 20 20 |.X |}.X |
|000050f0| 20 2a 64 20 3d 20 2a 61 | 3b 20 2a 61 20 3d 20 68 | *d = *a|; *a = h|
|00005100| 3b 0a 58 20 20 20 7d 0a | 58 7d 0a 58 0a 58 73 74 |;.X }.|X}.X.Xst|
|00005110| 61 74 69 63 20 76 6f 69 | 64 20 74 71 6c 31 28 44 |atic voi|d tql1(D|
|00005120| 69 61 67 6f 6e 61 6c 4d | 61 74 72 69 78 26 20 44 |iagonalM|atrix& D|
|00005130| 2c 20 44 69 61 67 6f 6e | 61 6c 4d 61 74 72 69 78 |, Diagon|alMatrix|
|00005140| 26 20 45 29 0a 58 7b 0a | 58 20 20 20 54 72 61 63 |& E).X{.|X Trac|
|00005150| 65 72 20 65 74 28 22 45 | 76 61 6c 75 65 28 74 71 |er et("E|value(tq|
|00005160| 6c 31 29 22 29 3b 0a 58 | 20 20 20 52 65 61 6c 20 |l1)");.X| Real |
|00005170| 65 70 73 20 3d 20 46 6c | 6f 61 74 69 6e 67 50 6f |eps = Fl|oatingPo|
|00005180| 69 6e 74 50 72 65 63 69 | 73 69 6f 6e 3a 3a 45 70 |intPreci|sion::Ep|
|00005190| 73 69 6c 6f 6e 28 29 3b | 0a 58 20 20 20 69 6e 74 |silon();|.X int|
|000051a0| 20 6e 20 3d 20 44 2e 4e | 72 6f 77 73 28 29 3b 0a | n = D.N|rows();.|
|000051b0| 58 20 20 20 66 6f 72 20 | 28 69 6e 74 20 6c 3d 31 |X for |(int l=1|
|000051c0| 3b 20 6c 3c 6e 3b 20 6c | 2b 2b 29 20 45 2e 65 6c |; l<n; l|++) E.el|
|000051d0| 65 6d 65 6e 74 28 6c 2d | 31 29 20 3d 20 45 2e 65 |ement(l-|1) = E.e|
|000051e0| 6c 65 6d 65 6e 74 28 6c | 29 3b 0a 58 20 20 20 52 |lement(l|);.X R|
|000051f0| 65 61 6c 20 62 20 3d 20 | 30 2e 30 3b 20 52 65 61 |eal b = |0.0; Rea|
|00005200| 6c 20 66 20 3d 20 30 2e | 30 3b 20 45 2e 65 6c 65 |l f = 0.|0; E.ele|
|00005210| 6d 65 6e 74 28 6e 2d 31 | 29 20 3d 20 30 2e 30 3b |ment(n-1|) = 0.0;|
|00005220| 0a 58 20 20 20 66 6f 72 | 20 28 6c 3d 30 3b 20 6c |.X for| (l=0; l|
|00005230| 3c 6e 3b 20 6c 2b 2b 29 | 0a 58 20 20 20 7b 0a 58 |<n; l++)|.X {.X|
|00005240| 20 20 20 20 20 20 69 6e | 74 20 69 2c 6a 3b 0a 58 | in|t i,j;.X|
|00005250| 20 20 20 20 20 20 52 65 | 61 6c 26 20 64 6c 20 3d | Re|al& dl =|
|00005260| 20 44 2e 65 6c 65 6d 65 | 6e 74 28 6c 29 3b 20 52 | D.eleme|nt(l); R|
|00005270| 65 61 6c 26 20 65 6c 20 | 3d 20 45 2e 65 6c 65 6d |eal& el |= E.elem|
|00005280| 65 6e 74 28 6c 29 3b 0a | 58 20 20 20 20 20 20 52 |ent(l);.|X R|
|00005290| 65 61 6c 20 68 20 3d 20 | 65 70 73 20 2a 20 28 20 |eal h = |eps * ( |
|000052a0| 66 61 62 73 28 64 6c 29 | 20 2b 20 66 61 62 73 28 |fabs(dl)| + fabs(|
|000052b0| 65 6c 29 20 29 3b 0a 58 | 20 20 20 20 20 20 69 66 |el) );.X| if|
|000052c0| 20 28 62 20 3c 20 68 29 | 20 62 20 3d 20 68 3b 0a | (b < h)| b = h;.|
|000052d0| 58 20 20 20 20 20 20 66 | 6f 72 20 28 69 6e 74 20 |X f|or (int |
|000052e0| 6d 3d 6c 3b 20 6d 3c 6e | 3b 20 6d 2b 2b 29 20 69 |m=l; m<n|; m++) i|
|000052f0| 66 20 28 66 61 62 73 28 | 45 2e 65 6c 65 6d 65 6e |f (fabs(|E.elemen|
|00005300| 74 28 6d 29 29 20 3c 3d | 20 62 29 20 62 72 65 61 |t(m)) <=| b) brea|
|00005310| 6b 3b 0a 58 20 20 20 20 | 20 20 42 6f 6f 6c 65 61 |k;.X | Boolea|
|00005320| 6e 20 74 65 73 74 20 3d | 20 46 41 4c 53 45 3b 0a |n test =| FALSE;.|
|00005330| 58 20 20 20 20 20 20 66 | 6f 72 20 28 6a 3d 30 3b |X f|or (j=0;|
|00005340| 20 6a 3c 33 30 3b 20 6a | 2b 2b 29 0a 58 20 20 20 | j<30; j|++).X |
|00005350| 20 20 20 7b 0a 58 20 20 | 20 20 20 20 20 20 20 69 | {.X | i|
|00005360| 66 20 28 6d 3d 3d 6c 29 | 20 7b 20 74 65 73 74 20 |f (m==l)| { test |
|00005370| 3d 20 54 52 55 45 3b 20 | 62 72 65 61 6b 3b 20 7d |= TRUE; |break; }|
|00005380| 0a 58 20 20 20 20 20 20 | 20 20 20 52 65 61 6c 26 |.X | Real&|
|00005390| 20 64 6c 31 20 3d 20 44 | 2e 65 6c 65 6d 65 6e 74 | dl1 = D|.element|
|000053a0| 28 6c 2b 31 29 3b 0a 58 | 09 20 52 65 61 6c 20 67 |(l+1);.X|. Real g|
|000053b0| 20 3d 20 64 6c 3b 20 52 | 65 61 6c 20 70 20 3d 20 | = dl; R|eal p = |
|000053c0| 28 64 6c 31 2d 67 29 20 | 2f 20 28 32 2e 30 2a 65 |(dl1-g) |/ (2.0*e|
|000053d0| 6c 29 3b 20 52 65 61 6c | 20 72 20 3d 20 73 71 72 |l); Real| r = sqr|
|000053e0| 74 28 70 2a 70 20 2b 20 | 31 2e 30 29 3b 0a 58 09 |t(p*p + |1.0);.X.|
|000053f0| 20 64 6c 20 3d 20 65 6c | 20 2f 20 28 70 20 3c 20 | dl = el| / (p < |
|00005400| 30 2e 30 20 3f 20 70 2d | 72 20 3a 20 70 2b 72 29 |0.0 ? p-|r : p+r)|
|00005410| 3b 20 52 65 61 6c 20 68 | 20 3d 20 67 20 2d 20 64 |; Real h| = g - d|
|00005420| 6c 3b 20 66 20 2b 3d 20 | 68 3b 0a 58 20 20 20 20 |l; f += |h;.X |
|00005430| 20 20 20 20 20 52 65 61 | 6c 2a 20 64 6c 78 20 3d | Rea|l* dlx =|
|00005440| 20 26 64 6c 31 3b 20 69 | 20 3d 20 6e 2d 6c 2d 31 | &dl1; i| = n-l-1|
|00005450| 3b 20 77 68 69 6c 65 20 | 28 69 2d 2d 29 20 2a 64 |; while |(i--) *d|
|00005460| 6c 78 2b 2b 20 2d 3d 20 | 68 3b 0a 58 0a 58 09 20 |lx++ -= |h;.X.X. |
|00005470| 70 20 3d 20 44 2e 65 6c | 65 6d 65 6e 74 28 6d 29 |p = D.el|ement(m)|
|00005480| 3b 20 52 65 61 6c 20 63 | 20 3d 20 31 2e 30 3b 20 |; Real c| = 1.0; |
|00005490| 52 65 61 6c 20 73 20 3d | 20 30 2e 30 3b 0a 58 09 |Real s =| 0.0;.X.|
|000054a0| 20 66 6f 72 20 28 69 3d | 6d 2d 31 3b 20 69 3e 3d | for (i=|m-1; i>=|
|000054b0| 6c 3b 20 69 2d 2d 29 0a | 58 09 20 7b 0a 58 20 20 |l; i--).|X. {.X |
|000054c0| 20 20 20 20 20 20 20 20 | 20 20 52 65 61 6c 20 65 | | Real e|
|000054d0| 69 20 3d 20 45 2e 65 6c | 65 6d 65 6e 74 28 69 29 |i = E.el|ement(i)|
|000054e0| 3b 20 52 65 61 6c 20 64 | 69 20 3d 20 44 2e 65 6c |; Real d|i = D.el|
|000054f0| 65 6d 65 6e 74 28 69 29 | 3b 0a 58 20 20 20 20 20 |ement(i)|;.X |
|00005500| 20 20 20 20 20 20 20 52 | 65 61 6c 26 20 65 69 31 | R|eal& ei1|
|00005510| 20 3d 20 45 2e 65 6c 65 | 6d 65 6e 74 28 69 2b 31 | = E.ele|ment(i+1|
|00005520| 29 3b 0a 58 09 20 20 20 | 20 67 20 3d 20 63 20 2a |);.X. | g = c *|
|00005530| 20 65 69 3b 20 68 20 3d | 20 63 20 2a 20 70 3b 0a | ei; h =| c * p;.|
|00005540| 58 09 20 20 20 20 69 66 | 20 28 20 66 61 62 73 28 |X. if| ( fabs(|
|00005550| 70 29 20 3e 3d 20 66 61 | 62 73 28 65 69 29 29 0a |p) >= fa|bs(ei)).|
|00005560| 58 09 20 20 20 20 7b 0a | 58 09 20 20 20 20 20 20 |X. {.|X. |
|00005570| 20 63 20 3d 20 65 69 20 | 2f 20 70 3b 20 72 20 3d | c = ei |/ p; r =|
|00005580| 20 73 71 72 74 28 63 2a | 63 20 2b 20 31 2e 30 29 | sqrt(c*|c + 1.0)|
|00005590| 3b 20 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |; .X | |
|000055a0| 20 20 20 65 69 31 20 3d | 20 73 2a 70 2a 72 3b 20 | ei1 =| s*p*r; |
|000055b0| 73 20 3d 20 63 2f 72 3b | 20 63 20 3d 20 31 2e 30 |s = c/r;| c = 1.0|
|000055c0| 2f 72 3b 0a 58 09 20 20 | 20 20 7d 0a 58 09 20 20 |/r;.X. | }.X. |
|000055d0| 20 20 65 6c 73 65 0a 58 | 09 20 20 20 20 7b 0a 58 | else.X|. {.X|
|000055e0| 09 20 20 20 20 20 20 20 | 63 20 3d 20 70 20 2f 20 |. |c = p / |
|000055f0| 65 69 3b 20 72 20 3d 20 | 73 71 72 74 28 63 2a 63 |ei; r = |sqrt(c*c|
|00005600| 20 2b 20 31 2e 30 29 3b | 0a 58 09 20 20 20 20 20 | + 1.0);|.X. |
|00005610| 20 20 65 69 31 20 3d 20 | 73 20 2a 20 65 69 20 2a | ei1 = |s * ei *|
|00005620| 20 72 3b 20 73 20 3d 20 | 31 2e 30 2f 72 3b 20 63 | r; s = |1.0/r; c|
|00005630| 20 2f 3d 20 72 3b 0a 58 | 09 20 20 20 20 7d 0a 58 | /= r;.X|. }.X|
|00005640| 09 20 20 20 20 70 20 3d | 20 63 20 2a 20 64 69 20 |. p =| c * di |
|00005650| 2d 20 73 2a 67 3b 20 44 | 2e 65 6c 65 6d 65 6e 74 |- s*g; D|.element|
|00005660| 28 69 2b 31 29 20 3d 20 | 68 20 2b 20 73 20 2a 20 |(i+1) = |h + s * |
|00005670| 28 63 2a 67 20 2b 20 73 | 2a 64 69 29 3b 0a 58 09 |(c*g + s|*di);.X.|
|00005680| 20 7d 0a 58 09 20 65 6c | 20 3d 20 73 2a 70 3b 20 | }.X. el| = s*p; |
|00005690| 64 6c 20 3d 20 63 2a 70 | 3b 0a 58 09 20 69 66 20 |dl = c*p|;.X. if |
|000056a0| 28 66 61 62 73 28 65 6c | 29 20 3c 3d 20 62 29 20 |(fabs(el|) <= b) |
|000056b0| 7b 20 74 65 73 74 20 3d | 20 54 52 55 45 3b 20 62 |{ test =| TRUE; b|
|000056c0| 72 65 61 6b 3b 20 7d 0a | 58 20 20 20 20 20 20 7d |reak; }.|X }|
|000056d0| 0a 58 20 20 20 20 20 20 | 69 66 20 28 21 74 65 73 |.X |if (!tes|
|000056e0| 74 29 20 54 68 72 6f 77 | 20 28 20 43 6f 6e 76 65 |t) Throw| ( Conve|
|000056f0| 72 67 65 6e 63 65 45 78 | 63 65 70 74 69 6f 6e 28 |rgenceEx|ception(|
|00005700| 44 29 20 29 3b 0a 58 20 | 20 20 20 20 20 52 65 61 |D) );.X | Rea|
|00005710| 6c 20 70 20 3d 20 64 6c | 20 2b 20 66 3b 0a 58 20 |l p = dl| + f;.X |
|00005720| 20 20 20 20 20 74 65 73 | 74 20 3d 20 46 41 4c 53 | tes|t = FALS|
|00005730| 45 3b 0a 58 20 20 20 20 | 20 20 66 6f 72 20 28 69 |E;.X | for (i|
|00005740| 3d 6c 3b 20 69 3e 30 3b | 20 69 2d 2d 29 0a 58 20 |=l; i>0;| i--).X |
|00005750| 20 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 20 20 | {.X| |
|00005760| 20 69 66 20 28 70 20 3c | 20 44 2e 65 6c 65 6d 65 | if (p <| D.eleme|
|00005770| 6e 74 28 69 2d 31 29 29 | 20 44 2e 65 6c 65 6d 65 |nt(i-1))| D.eleme|
|00005780| 6e 74 28 69 29 20 3d 20 | 44 2e 65 6c 65 6d 65 6e |nt(i) = |D.elemen|
|00005790| 74 28 69 2d 31 29 3b 0a | 58 20 20 20 20 20 20 20 |t(i-1);.|X |
|000057a0| 20 20 65 6c 73 65 20 7b | 20 74 65 73 74 20 3d 20 | else {| test = |
|000057b0| 54 52 55 45 3b 20 62 72 | 65 61 6b 3b 20 7d 0a 58 |TRUE; br|eak; }.X|
|000057c0| 20 20 20 20 20 20 7d 0a | 58 20 20 20 20 20 20 69 | }.|X i|
|000057d0| 66 20 28 21 74 65 73 74 | 29 20 69 3d 30 3b 0a 58 |f (!test|) i=0;.X|
|000057e0| 20 20 20 20 20 20 44 2e | 65 6c 65 6d 65 6e 74 28 | D.|element(|
|000057f0| 69 29 20 3d 20 70 3b 0a | 58 20 20 20 7d 0a 58 7d |i) = p;.|X }.X}|
|00005800| 0a 58 0a 58 76 6f 69 64 | 20 45 69 67 65 6e 56 61 |.X.Xvoid| EigenVa|
|00005810| 6c 75 65 73 28 63 6f 6e | 73 74 20 53 79 6d 6d 65 |lues(con|st Symme|
|00005820| 74 72 69 63 4d 61 74 72 | 69 78 26 20 41 2c 20 44 |tricMatr|ix& A, D|
|00005830| 69 61 67 6f 6e 61 6c 4d | 61 74 72 69 78 26 20 44 |iagonalM|atrix& D|
|00005840| 2c 20 4d 61 74 72 69 78 | 26 20 5a 29 0a 58 7b 20 |, Matrix|& Z).X{ |
|00005850| 44 69 61 67 6f 6e 61 6c | 4d 61 74 72 69 78 20 45 |Diagonal|Matrix E|
|00005860| 3b 20 74 72 65 64 32 28 | 41 2c 20 44 2c 20 45 2c |; tred2(|A, D, E,|
|00005870| 20 5a 29 3b 20 74 71 6c | 32 28 44 2c 20 45 2c 20 | Z); tql|2(D, E, |
|00005880| 5a 29 3b 20 7d 0a 58 0a | 58 76 6f 69 64 20 45 69 |Z); }.X.|Xvoid Ei|
|00005890| 67 65 6e 56 61 6c 75 65 | 73 28 63 6f 6e 73 74 20 |genValue|s(const |
|000058a0| 53 79 6d 6d 65 74 72 69 | 63 4d 61 74 72 69 78 26 |Symmetri|cMatrix&|
|000058b0| 20 58 2c 20 44 69 61 67 | 6f 6e 61 6c 4d 61 74 72 | X, Diag|onalMatr|
|000058c0| 69 78 26 20 44 29 0a 58 | 7b 20 44 69 61 67 6f 6e |ix& D).X|{ Diagon|
|000058d0| 61 6c 4d 61 74 72 69 78 | 20 45 3b 20 53 79 6d 6d |alMatrix| E; Symm|
|000058e0| 65 74 72 69 63 4d 61 74 | 72 69 78 20 41 3b 20 74 |etricMat|rix A; t|
|000058f0| 72 65 64 33 28 58 2c 44 | 2c 45 2c 41 29 3b 20 74 |red3(X,D|,E,A); t|
|00005900| 71 6c 31 28 44 2c 45 29 | 3b 20 7d 0a 58 0a 58 76 |ql1(D,E)|; }.X.Xv|
|00005910| 6f 69 64 20 45 69 67 65 | 6e 56 61 6c 75 65 73 28 |oid Eige|nValues(|
|00005920| 63 6f 6e 73 74 20 53 79 | 6d 6d 65 74 72 69 63 4d |const Sy|mmetricM|
|00005930| 61 74 72 69 78 26 20 58 | 2c 20 44 69 61 67 6f 6e |atrix& X|, Diagon|
|00005940| 61 6c 4d 61 74 72 69 78 | 26 20 44 2c 0a 58 20 20 |alMatrix|& D,.X |
|00005950| 20 53 79 6d 6d 65 74 72 | 69 63 4d 61 74 72 69 78 | Symmetr|icMatrix|
|00005960| 26 20 41 29 0a 58 7b 20 | 44 69 61 67 6f 6e 61 6c |& A).X{ |Diagonal|
|00005970| 4d 61 74 72 69 78 20 45 | 3b 20 74 72 65 64 33 28 |Matrix E|; tred3(|
|00005980| 58 2c 44 2c 45 2c 41 29 | 3b 20 74 71 6c 31 28 44 |X,D,E,A)|; tql1(D|
|00005990| 2c 45 29 3b 20 7d 0a 58 | 0a 45 4e 44 5f 4f 46 5f |,E); }.X|.END_OF_|
|000059a0| 46 49 4c 45 0a 69 66 20 | 74 65 73 74 20 37 38 31 |FILE.if |test 781|
|000059b0| 33 20 2d 6e 65 20 60 77 | 63 20 2d 63 20 3c 27 65 |3 -ne `w|c -c <'e|
|000059c0| 76 61 6c 75 65 2e 63 78 | 78 27 60 3b 20 74 68 65 |value.cx|x'`; the|
|000059d0| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|000059e0| 20 5c 22 27 65 76 61 6c | 75 65 2e 63 78 78 27 5c | \"'eval|ue.cxx'\|
|000059f0| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00005a00| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00005a10| 20 65 6e 64 20 6f 66 20 | 27 65 76 61 6c 75 65 2e | end of |'evalue.|
|00005a20| 63 78 78 27 0a 66 69 0a | 69 66 20 74 65 73 74 20 |cxx'.fi.|if test |
|00005a30| 2d 66 20 27 65 78 61 6d | 70 6c 65 2e 74 78 74 27 |-f 'exam|ple.txt'|
|00005a40| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00005a50| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00005a60| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00005a70| 20 63 6c 6f 62 62 65 72 | 20 65 78 69 73 74 69 6e | clobber| existin|
|00005a80| 67 20 66 69 6c 65 20 5c | 22 27 65 78 61 6d 70 6c |g file \|"'exampl|
|00005a90| 65 2e 74 78 74 27 5c 22 | 0a 65 6c 73 65 0a 65 63 |e.txt'\"|.else.ec|
|00005aa0| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|00005ab0| 69 6e 67 20 5c 22 27 65 | 78 61 6d 70 6c 65 2e 74 |ing \"'e|xample.t|
|00005ac0| 78 74 27 5c 22 20 5c 28 | 31 38 33 34 20 63 68 61 |xt'\" \(|1834 cha|
|00005ad0| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00005ae0| 2f 5e 58 2f 2f 22 20 3e | 27 65 78 61 6d 70 6c 65 |/^X//" >|'example|
|00005af0| 2e 74 78 74 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |.txt' <<|'END_OF_|
|00005b00| 46 49 4c 45 27 0a 58 0a | 58 44 65 6d 6f 6e 73 74 |FILE'.X.|XDemonst|
|00005b10| 72 61 74 69 6f 6e 20 6f | 66 20 4d 61 74 72 69 78 |ration o|f Matrix|
|00005b20| 20 70 61 63 6b 61 67 65 | 0a 58 0a 58 0a 58 0a 58 | package|.X.X.X.X|
|00005b30| 54 65 73 74 20 31 20 2d | 20 74 72 61 64 69 74 69 |Test 1 -| traditi|
|00005b40| 6f 6e 61 6c 0a 58 0a 58 | 45 73 74 69 6d 61 74 65 |onal.X.X|Estimate|
|00005b50| 73 20 61 6e 64 20 74 68 | 65 69 72 20 73 74 61 6e |s and th|eir stan|
|00005b60| 64 61 72 64 20 65 72 72 | 6f 72 73 0a 58 0a 58 31 |dard err|ors.X.X1|
|00005b70| 2e 33 39 31 36 35 35 09 | 30 2e 35 33 31 38 37 38 |.391655.|0.531878|
|00005b80| 0a 58 31 2e 39 38 33 31 | 30 33 09 30 2e 32 30 39 |.X1.9831|03.0.209|
|00005b90| 33 31 37 0a 58 30 2e 39 | 35 32 32 30 38 09 30 2e |317.X0.9|52208.0.|
|00005ba0| 32 37 37 33 30 37 0a 58 | 0a 58 4f 62 73 65 72 76 |277307.X|.XObserv|
|00005bb0| 61 74 69 6f 6e 73 2c 20 | 66 69 74 74 65 64 20 76 |ations, |fitted v|
|00005bc0| 61 6c 75 65 2c 20 72 65 | 73 69 64 75 61 6c 20 76 |alue, re|sidual v|
|00005bd0| 61 6c 75 65 2c 20 68 61 | 74 20 76 61 6c 75 65 0a |alue, ha|t value.|
|00005be0| 58 32 2e 34 09 31 2e 37 | 09 38 2e 33 09 37 2e 37 |X2.4.1.7|.8.3.7.7|
|00005bf0| 36 39 09 30 2e 35 33 09 | 30 2e 32 38 0a 58 31 2e |69.0.53.|0.28.X1.|
|00005c00| 38 09 30 2e 39 09 35 2e | 35 09 35 2e 38 31 38 09 |8.0.9.5.|5.5.818.|
|00005c10| 2d 30 2e 33 31 38 09 30 | 2e 31 38 39 0a 58 32 2e |-0.318.0|.189.X2.|
|00005c20| 34 09 31 2e 36 09 38 09 | 37 2e 36 37 34 09 30 2e |4.1.6.8.|7.674.0.|
|00005c30| 33 32 35 09 30 2e 32 32 | 38 0a 58 33 09 31 2e 39 |325.0.22|8.X3.1.9|
|00005c40| 09 38 2e 35 09 39 2e 31 | 35 09 2d 30 2e 36 35 09 |.8.5.9.1|5.-0.65.|
|00005c50| 30 2e 34 34 35 0a 58 32 | 09 30 2e 35 09 35 2e 37 |0.445.X2|.0.5.5.7|
|00005c60| 09 35 2e 38 33 33 09 2d | 30 2e 31 33 33 09 30 2e |.5.833.-|0.133.0.|
|00005c70| 32 37 31 0a 58 31 2e 32 | 09 30 2e 36 09 34 2e 34 |271.X1.2|.0.6.4.4|
|00005c80| 09 34 2e 33 34 32 09 30 | 2e 30 35 37 09 30 2e 34 |.4.342.0|.057.0.4|
|00005c90| 37 39 0a 58 32 09 31 2e | 31 09 36 2e 33 09 36 2e |79.X2.1.|1.6.3.6.|
|00005ca0| 34 30 35 09 2d 30 2e 31 | 30 35 09 30 2e 31 34 33 |405.-0.1|05.0.143|
|00005cb0| 0a 58 32 2e 37 09 31 09 | 37 2e 39 09 37 2e 36 39 |.X2.7.1.|7.9.7.69|
|00005cc0| 38 09 30 2e 32 30 31 09 | 30 2e 31 35 33 0a 58 33 |8.0.201.|0.153.X3|
|00005cd0| 2e 36 09 30 2e 35 09 39 | 2e 31 09 39 2e 30 30 36 |.6.0.5.9|.1.9.006|
|00005ce0| 09 30 2e 30 39 33 09 30 | 2e 38 30 37 0a 58 0a 58 |.0.093.0|.807.X.X|
|00005cf0| 0a 58 0a 58 0a 58 54 65 | 73 74 20 32 20 2d 20 43 |.X.X.XTe|st 2 - C|
|00005d00| 68 6f 6c 65 73 6b 79 0a | 58 0a 58 45 73 74 69 6d |holesky.|X.XEstim|
|00005d10| 61 74 65 73 20 61 6e 64 | 20 74 68 65 69 72 20 73 |ates and| their s|
|00005d20| 74 61 6e 64 61 72 64 20 | 65 72 72 6f 72 73 0a 58 |tandard |errors.X|
|00005d30| 0a 58 31 2e 33 39 31 36 | 35 35 09 30 2e 35 33 31 |.X1.3916|55.0.531|
|00005d40| 38 37 38 0a 58 31 2e 39 | 38 33 31 30 33 09 30 2e |878.X1.9|83103.0.|
|00005d50| 32 30 39 33 31 37 0a 58 | 30 2e 39 35 32 32 30 38 |209317.X|0.952208|
|00005d60| 09 30 2e 32 37 37 33 30 | 37 0a 58 0a 58 4f 62 73 |.0.27730|7.X.XObs|
|00005d70| 65 72 76 61 74 69 6f 6e | 73 2c 20 66 69 74 74 65 |ervation|s, fitte|
|00005d80| 64 20 76 61 6c 75 65 2c | 20 72 65 73 69 64 75 61 |d value,| residua|
|00005d90| 6c 20 76 61 6c 75 65 2c | 20 68 61 74 20 76 61 6c |l value,| hat val|
|00005da0| 75 65 0a 58 32 2e 34 09 | 31 2e 37 09 38 2e 33 09 |ue.X2.4.|1.7.8.3.|
|00005db0| 37 2e 37 36 39 09 30 2e | 35 33 09 30 2e 32 38 0a |7.769.0.|53.0.28.|
|00005dc0| 58 31 2e 38 09 30 2e 39 | 09 35 2e 35 09 35 2e 38 |X1.8.0.9|.5.5.5.8|
|00005dd0| 31 38 09 2d 30 2e 33 31 | 38 09 30 2e 31 38 39 0a |18.-0.31|8.0.189.|
|00005de0| 58 32 2e 34 09 31 2e 36 | 09 38 09 37 2e 36 37 34 |X2.4.1.6|.8.7.674|
|00005df0| 09 30 2e 33 32 35 09 30 | 2e 32 32 38 0a 58 33 09 |.0.325.0|.228.X3.|
|00005e00| 31 2e 39 09 38 2e 35 09 | 39 2e 31 35 09 2d 30 2e |1.9.8.5.|9.15.-0.|
|00005e10| 36 35 09 30 2e 34 34 35 | 0a 58 32 09 30 2e 35 09 |65.0.445|.X2.0.5.|
|00005e20| 35 2e 37 09 35 2e 38 33 | 33 09 2d 30 2e 31 33 33 |5.7.5.83|3.-0.133|
|00005e30| 09 30 2e 32 37 31 0a 58 | 31 2e 32 09 30 2e 36 09 |.0.271.X|1.2.0.6.|
|00005e40| 34 2e 34 09 34 2e 33 34 | 32 09 30 2e 30 35 37 09 |4.4.4.34|2.0.057.|
|00005e50| 30 2e 34 37 39 0a 58 32 | 09 31 2e 31 09 36 2e 33 |0.479.X2|.1.1.6.3|
|00005e60| 09 36 2e 34 30 35 09 2d | 30 2e 31 30 35 09 30 2e |.6.405.-|0.105.0.|
|00005e70| 31 34 33 0a 58 32 2e 37 | 09 31 09 37 2e 39 09 37 |143.X2.7|.1.7.9.7|
|00005e80| 2e 36 39 38 09 30 2e 32 | 30 31 09 30 2e 31 35 33 |.698.0.2|01.0.153|
|00005e90| 0a 58 33 2e 36 09 30 2e | 35 09 39 2e 31 09 39 2e |.X3.6.0.|5.9.1.9.|
|00005ea0| 30 30 36 09 30 2e 30 39 | 33 09 30 2e 38 30 37 0a |006.0.09|3.0.807.|
|00005eb0| 58 0a 58 0a 58 0a 58 0a | 58 54 65 73 74 20 33 20 |X.X.X.X.|XTest 3 |
|00005ec0| 2d 20 48 6f 75 73 65 68 | 6f 6c 64 65 72 20 74 72 |- Househ|older tr|
|00005ed0| 69 61 6e 67 75 6c 61 72 | 69 73 61 74 69 6f 6e 0a |iangular|isation.|
|00005ee0| 58 0a 58 45 73 74 69 6d | 61 74 65 73 20 61 6e 64 |X.XEstim|ates and|
|00005ef0| 20 74 68 65 69 72 20 73 | 74 61 6e 64 61 72 64 20 | their s|tandard |
|00005f00| 65 72 72 6f 72 73 0a 58 | 0a 58 31 2e 33 39 31 36 |errors.X|.X1.3916|
|00005f10| 35 35 09 30 2e 35 33 31 | 38 37 38 0a 58 31 2e 39 |55.0.531|878.X1.9|
|00005f20| 38 33 31 30 33 09 30 2e | 32 30 39 33 31 37 0a 58 |83103.0.|209317.X|
|00005f30| 30 2e 39 35 32 32 30 38 | 09 30 2e 32 37 37 33 30 |0.952208|.0.27730|
|00005f40| 37 0a 58 0a 58 4f 62 73 | 65 72 76 61 74 69 6f 6e |7.X.XObs|ervation|
|00005f50| 73 2c 20 66 69 74 74 65 | 64 20 76 61 6c 75 65 2c |s, fitte|d value,|
|00005f60| 20 72 65 73 69 64 75 61 | 6c 20 76 61 6c 75 65 2c | residua|l value,|
|00005f70| 20 68 61 74 20 76 61 6c | 75 65 0a 58 32 2e 34 09 | hat val|ue.X2.4.|
|00005f80| 31 2e 37 09 38 2e 33 09 | 37 2e 37 36 39 09 30 2e |1.7.8.3.|7.769.0.|
|00005f90| 35 33 09 30 2e 32 38 0a | 58 31 2e 38 09 30 2e 39 |53.0.28.|X1.8.0.9|
|00005fa0| 09 35 2e 35 09 35 2e 38 | 31 38 09 2d 30 2e 33 31 |.5.5.5.8|18.-0.31|
|00005fb0| 38 09 30 2e 31 38 39 0a | 58 32 2e 34 09 31 2e 36 |8.0.189.|X2.4.1.6|
|00005fc0| 09 38 09 37 2e 36 37 34 | 09 30 2e 33 32 35 09 30 |.8.7.674|.0.325.0|
|00005fd0| 2e 32 32 38 0a 58 33 09 | 31 2e 39 09 38 2e 35 09 |.228.X3.|1.9.8.5.|
|00005fe0| 39 2e 31 35 09 2d 30 2e | 36 35 09 30 2e 34 34 35 |9.15.-0.|65.0.445|
|00005ff0| 0a 58 32 09 30 2e 35 09 | 35 2e 37 09 35 2e 38 33 |.X2.0.5.|5.7.5.83|
|00006000| 33 09 2d 30 2e 31 33 33 | 09 30 2e 32 37 31 0a 58 |3.-0.133|.0.271.X|
|00006010| 31 2e 32 09 30 2e 36 09 | 34 2e 34 09 34 2e 33 34 |1.2.0.6.|4.4.4.34|
|00006020| 32 09 30 2e 30 35 37 09 | 30 2e 34 37 39 0a 58 32 |2.0.057.|0.479.X2|
|00006030| 09 31 2e 31 09 36 2e 33 | 09 36 2e 34 30 35 09 2d |.1.1.6.3|.6.405.-|
|00006040| 30 2e 31 30 35 09 30 2e | 31 34 33 0a 58 32 2e 37 |0.105.0.|143.X2.7|
|00006050| 09 31 09 37 2e 39 09 37 | 2e 36 39 38 09 30 2e 32 |.1.7.9.7|.698.0.2|
|00006060| 30 31 09 30 2e 31 35 33 | 0a 58 33 2e 36 09 30 2e |01.0.153|.X3.6.0.|
|00006070| 35 09 39 2e 31 09 39 2e | 30 30 36 09 30 2e 30 39 |5.9.1.9.|006.0.09|
|00006080| 33 09 30 2e 38 30 37 0a | 58 0a 58 0a 58 0a 58 0a |3.0.807.|X.X.X.X.|
|00006090| 58 54 65 73 74 20 34 20 | 2d 20 73 69 6e 67 75 6c |XTest 4 |- singul|
|000060a0| 61 72 20 76 61 6c 75 65 | 0a 58 0a 58 45 73 74 69 |ar value|.X.XEsti|
|000060b0| 6d 61 74 65 73 20 61 6e | 64 20 74 68 65 69 72 20 |mates an|d their |
|000060c0| 73 74 61 6e 64 61 72 64 | 20 65 72 72 6f 72 73 0a |standard| errors.|
|000060d0| 58 0a 58 31 2e 33 39 31 | 36 35 35 09 30 2e 35 33 |X.X1.391|655.0.53|
|000060e0| 31 38 37 38 0a 58 31 2e | 39 38 33 31 30 33 09 30 |1878.X1.|983103.0|
|000060f0| 2e 32 30 39 33 31 37 0a | 58 30 2e 39 35 32 32 30 |.209317.|X0.95220|
|00006100| 38 09 30 2e 32 37 37 33 | 30 37 0a 58 0a 58 4f 62 |8.0.2773|07.X.XOb|
|00006110| 73 65 72 76 61 74 69 6f | 6e 73 2c 20 66 69 74 74 |servatio|ns, fitt|
|00006120| 65 64 20 76 61 6c 75 65 | 2c 20 72 65 73 69 64 75 |ed value|, residu|
|00006130| 61 6c 20 76 61 6c 75 65 | 2c 20 68 61 74 20 76 61 |al value|, hat va|
|00006140| 6c 75 65 0a 58 32 2e 34 | 09 31 2e 37 09 38 2e 33 |lue.X2.4|.1.7.8.3|
|00006150| 09 37 2e 37 36 39 09 30 | 2e 35 33 09 30 2e 32 38 |.7.769.0|.53.0.28|
|00006160| 0a 58 31 2e 38 09 30 2e | 39 09 35 2e 35 09 35 2e |.X1.8.0.|9.5.5.5.|
|00006170| 38 31 38 09 2d 30 2e 33 | 31 38 09 30 2e 31 38 39 |818.-0.3|18.0.189|
|00006180| 0a 58 32 2e 34 09 31 2e | 36 09 38 09 37 2e 36 37 |.X2.4.1.|6.8.7.67|
|00006190| 34 09 30 2e 33 32 35 09 | 30 2e 32 32 38 0a 58 33 |4.0.325.|0.228.X3|
|000061a0| 09 31 2e 39 09 38 2e 35 | 09 39 2e 31 35 09 2d 30 |.1.9.8.5|.9.15.-0|
|000061b0| 2e 36 35 09 30 2e 34 34 | 35 0a 58 32 09 30 2e 35 |.65.0.44|5.X2.0.5|
|000061c0| 09 35 2e 37 09 35 2e 38 | 33 33 09 2d 30 2e 31 33 |.5.7.5.8|33.-0.13|
|000061d0| 33 09 30 2e 32 37 31 0a | 58 31 2e 32 09 30 2e 36 |3.0.271.|X1.2.0.6|
|000061e0| 09 34 2e 34 09 34 2e 33 | 34 32 09 30 2e 30 35 37 |.4.4.4.3|42.0.057|
|000061f0| 09 30 2e 34 37 39 0a 58 | 32 09 31 2e 31 09 36 2e |.0.479.X|2.1.1.6.|
|00006200| 33 09 36 2e 34 30 35 09 | 2d 30 2e 31 30 35 09 30 |3.6.405.|-0.105.0|
|00006210| 2e 31 34 33 0a 58 32 2e | 37 09 31 09 37 2e 39 09 |.143.X2.|7.1.7.9.|
|00006220| 37 2e 36 39 38 09 30 2e | 32 30 31 09 30 2e 31 35 |7.698.0.|201.0.15|
|00006230| 33 0a 58 33 2e 36 09 30 | 2e 35 09 39 2e 31 09 39 |3.X3.6.0|.5.9.1.9|
|00006240| 2e 30 30 36 09 30 2e 30 | 39 33 09 30 2e 38 30 37 |.006.0.0|93.0.807|
|00006250| 0a 58 0a 58 0a 58 0a 58 | 0a 58 43 68 65 63 6b 69 |.X.X.X.X|.XChecki|
|00006260| 6e 67 20 66 6f 72 20 6c | 6f 73 74 20 6d 65 6d 6f |ng for l|ost memo|
|00006270| 72 79 3a 20 35 38 37 37 | 39 32 33 38 38 20 35 38 |ry: 5877|92388 58|
|00006280| 37 37 39 32 33 38 38 20 | 20 2d 20 6f 6b 0a 45 4e |7792388 | - ok.EN|
|00006290| 44 5f 4f 46 5f 46 49 4c | 45 0a 69 66 20 74 65 73 |D_OF_FIL|E.if tes|
|000062a0| 74 20 31 38 33 34 20 2d | 6e 65 20 60 77 63 20 2d |t 1834 -|ne `wc -|
|000062b0| 63 20 3c 27 65 78 61 6d | 70 6c 65 2e 74 78 74 27 |c <'exam|ple.txt'|
|000062c0| 60 3b 20 74 68 65 6e 0a | 20 20 20 20 65 63 68 6f |`; then.| echo|
|000062d0| 20 73 68 61 72 3a 20 5c | 22 27 65 78 61 6d 70 6c | shar: \|"'exampl|
|000062e0| 65 2e 74 78 74 27 5c 22 | 20 75 6e 70 61 63 6b 65 |e.txt'\"| unpacke|
|000062f0| 64 20 77 69 74 68 20 77 | 72 6f 6e 67 20 73 69 7a |d with w|rong siz|
|00006300| 65 21 0a 66 69 0a 23 20 | 65 6e 64 20 6f 66 20 27 |e!.fi.# |end of '|
|00006310| 65 78 61 6d 70 6c 65 2e | 74 78 74 27 0a 66 69 0a |example.|txt'.fi.|
|00006320| 69 66 20 74 65 73 74 20 | 2d 66 20 27 65 78 63 65 |if test |-f 'exce|
|00006330| 70 74 2e 63 78 78 27 20 | 2d 61 20 22 24 7b 31 7d |pt.cxx' |-a "${1}|
|00006340| 22 20 21 3d 20 22 2d 63 | 22 20 3b 20 74 68 65 6e |" != "-c|" ; then|
|00006350| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|00006360| 69 6c 6c 20 6e 6f 74 20 | 63 6c 6f 62 62 65 72 20 |ill not |clobber |
|00006370| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|00006380| 27 65 78 63 65 70 74 2e | 63 78 78 27 5c 22 0a 65 |'except.|cxx'\".e|
|00006390| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|000063a0| 78 74 72 61 63 74 69 6e | 67 20 5c 22 27 65 78 63 |xtractin|g \"'exc|
|000063b0| 65 70 74 2e 63 78 78 27 | 5c 22 20 5c 28 37 36 31 |ept.cxx'|\" \(761|
|000063c0| 37 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |7 charac|ters\).s|
|000063d0| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 65 78 |ed "s/^X|//" >'ex|
|000063e0| 63 65 70 74 2e 63 78 78 | 27 20 3c 3c 27 45 4e 44 |cept.cxx|' <<'END|
|000063f0| 5f 4f 46 5f 46 49 4c 45 | 27 0a 58 2f 2f 24 24 65 |_OF_FILE|'.X//$$e|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.