home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part02
Confidence | Program | Detection | Match Type | Support
|
---|
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 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 72 6f 62 65 | 72 74 40 61 6d 2e 64 73 |om: robe|rt@am.ds|
|00000030| 69 72 2e 67 6f 76 74 2e | 6e 7a 20 28 52 6f 62 65 |ir.govt.|nz (Robe|
|00000040| 72 74 20 44 61 76 69 65 | 73 29 0a 53 75 62 6a 65 |rt Davie|s).Subje|
|00000050| 63 74 3a 20 20 76 32 36 | 69 30 38 38 3a 20 20 6e |ct: v26|i088: n|
|00000060| 65 77 6d 61 74 30 34 20 | 2d 20 41 20 6d 61 74 72 |ewmat04 |- A matr|
|00000070| 69 78 20 70 61 63 6b 61 | 67 65 20 69 6e 20 43 2b |ix packa|ge in C+|
|00000080| 2b 2c 20 50 61 72 74 30 | 32 2f 30 35 0a 4d 65 73 |+, Part0|2/05.Mes|
|00000090| 73 61 67 65 2d 49 44 3a | 20 3c 31 39 39 31 4e 6f |sage-ID:| <1991No|
|000000a0| 76 33 30 2e 32 30 35 32 | 35 36 2e 33 38 38 33 40 |v30.2052|56.3883@|
|000000b0| 73 70 61 72 6b 79 2e 69 | 6d 64 2e 73 74 65 72 6c |sparky.i|md.sterl|
|000000c0| 69 6e 67 2e 63 6f 6d 3e | 0a 58 2d 4d 64 34 2d 53 |ing.com>|.X-Md4-S|
|000000d0| 69 67 6e 61 74 75 72 65 | 3a 20 65 66 30 63 64 62 |ignature|: ef0cdb|
|000000e0| 30 36 31 30 66 64 62 66 | 62 35 30 35 36 36 34 30 |0610fdbf|b5056640|
|000000f0| 64 62 32 34 34 31 63 63 | 38 34 0a 44 61 74 65 3a |db2441cc|84.Date:|
|00000100| 20 53 61 74 2c 20 33 30 | 20 4e 6f 76 20 31 39 39 | Sat, 30| Nov 199|
|00000110| 31 20 32 30 3a 35 32 3a | 35 36 20 47 4d 54 0a 41 |1 20:52:|56 GMT.A|
|00000120| 70 70 72 6f 76 65 64 3a | 20 6b 65 6e 74 40 73 70 |pproved:| kent@sp|
|00000130| 61 72 6b 79 2e 69 6d 64 | 2e 73 74 65 72 6c 69 6e |arky.imd|.sterlin|
|00000140| 67 2e 63 6f 6d 0a 0a 53 | 75 62 6d 69 74 74 65 64 |g.com..S|ubmitted|
|00000150| 2d 62 79 3a 20 72 6f 62 | 65 72 74 40 61 6d 2e 64 |-by: rob|ert@am.d|
|00000160| 73 69 72 2e 67 6f 76 74 | 2e 6e 7a 20 28 52 6f 62 |sir.govt|.nz (Rob|
|00000170| 65 72 74 20 44 61 76 69 | 65 73 29 0a 50 6f 73 74 |ert Davi|es).Post|
|00000180| 69 6e 67 2d 6e 75 6d 62 | 65 72 3a 20 56 6f 6c 75 |ing-numb|er: Volu|
|00000190| 6d 65 20 32 36 2c 20 49 | 73 73 75 65 20 38 38 0a |me 26, I|ssue 88.|
|000001a0| 41 72 63 68 69 76 65 2d | 6e 61 6d 65 3a 20 6e 65 |Archive-|name: ne|
|000001b0| 77 6d 61 74 30 34 2f 70 | 61 72 74 30 32 0a 45 6e |wmat04/p|art02.En|
|000001c0| 76 69 72 6f 6e 6d 65 6e | 74 3a 20 43 2b 2b 0a 53 |vironmen|t: C++.S|
|000001d0| 75 70 65 72 73 65 64 65 | 73 3a 20 6e 65 77 6d 61 |upersede|s: newma|
|000001e0| 74 30 32 3a 20 56 6f 6c | 75 6d 65 20 32 31 2c 20 |t02: Vol|ume 21, |
|000001f0| 49 73 73 75 65 20 34 39 | 2d 35 32 0a 0a 23 21 20 |Issue 49|-52..#! |
|00000200| 2f 62 69 6e 2f 73 68 0a | 23 20 54 68 69 73 20 69 |/bin/sh.|# This i|
|00000210| 73 20 61 20 73 68 65 6c | 6c 20 61 72 63 68 69 76 |s a shel|l archiv|
|00000220| 65 2e 20 20 52 65 6d 6f | 76 65 20 61 6e 79 74 68 |e. Remo|ve anyth|
|00000230| 69 6e 67 20 62 65 66 6f | 72 65 20 74 68 69 73 20 |ing befo|re this |
|00000240| 6c 69 6e 65 2c 20 74 68 | 65 6e 20 75 6e 70 61 63 |line, th|en unpac|
|00000250| 6b 0a 23 20 69 74 20 62 | 79 20 73 61 76 69 6e 67 |k.# it b|y saving|
|00000260| 20 69 74 20 69 6e 74 6f | 20 61 20 66 69 6c 65 20 | it into| a file |
|00000270| 61 6e 64 20 74 79 70 69 | 6e 67 20 22 73 68 20 66 |and typi|ng "sh f|
|00000280| 69 6c 65 22 2e 20 20 54 | 6f 20 6f 76 65 72 77 72 |ile". T|o overwr|
|00000290| 69 74 65 20 65 78 69 73 | 74 69 6e 67 0a 23 20 66 |ite exis|ting.# f|
|000002a0| 69 6c 65 73 2c 20 74 79 | 70 65 20 22 73 68 20 66 |iles, ty|pe "sh f|
|000002b0| 69 6c 65 20 2d 63 22 2e | 20 20 59 6f 75 20 63 61 |ile -c".| You ca|
|000002c0| 6e 20 61 6c 73 6f 20 66 | 65 65 64 20 74 68 69 73 |n also f|eed this|
|000002d0| 20 61 73 20 73 74 61 6e | 64 61 72 64 20 69 6e 70 | as stan|dard inp|
|000002e0| 75 74 20 76 69 61 0a 23 | 20 75 6e 73 68 61 72 2c |ut via.#| unshar,|
|000002f0| 20 6f 72 20 62 79 20 74 | 79 70 69 6e 67 20 22 73 | or by t|yping "s|
|00000300| 68 20 3c 66 69 6c 65 22 | 2c 20 65 2e 67 2e 2e 20 |h <file"|, e.g.. |
|00000310| 20 49 66 20 74 68 69 73 | 20 61 72 63 68 69 76 65 | If this| archive|
|00000320| 20 69 73 20 63 6f 6d 70 | 6c 65 74 65 2c 20 79 6f | is comp|lete, yo|
|00000330| 75 0a 23 20 77 69 6c 6c | 20 73 65 65 20 74 68 65 |u.# will| see the|
|00000340| 20 66 6f 6c 6c 6f 77 69 | 6e 67 20 6d 65 73 73 61 | followi|ng messa|
|00000350| 67 65 20 61 74 20 74 68 | 65 20 65 6e 64 3a 0a 23 |ge at th|e end:.#|
|00000360| 09 09 22 45 6e 64 20 6f | 66 20 73 68 65 6c 6c 20 |.."End o|f shell |
|00000370| 61 72 63 68 69 76 65 2e | 22 0a 23 20 43 6f 6e 74 |archive.|".# Cont|
|00000380| 65 6e 74 73 3a 20 20 62 | 6f 6f 6c 65 61 6e 2e 68 |ents: b|oolean.h|
|00000390| 78 78 20 63 6f 6e 74 72 | 6f 6c 77 2e 68 78 78 20 |xx contr|olw.hxx |
|000003a0| 69 6e 63 6c 75 64 65 2e | 68 78 78 20 6e 65 77 6d |include.|hxx newm|
|000003b0| 61 74 2e 68 78 78 0a 23 | 20 20 20 6e 65 77 6d 61 |at.hxx.#| newma|
|000003c0| 74 61 70 2e 68 78 78 20 | 6e 65 77 6d 61 74 69 6f |tap.hxx |newmatio|
|000003d0| 2e 68 78 78 20 6e 65 77 | 6d 61 74 72 63 2e 68 78 |.hxx new|matrc.hx|
|000003e0| 78 20 6e 65 77 6d 61 74 | 72 6d 2e 68 78 78 20 70 |x newmat|rm.hxx p|
|000003f0| 72 65 63 69 73 69 6f 2e | 68 78 78 0a 23 20 57 72 |recisio.|hxx.# Wr|
|00000400| 61 70 70 65 64 20 62 79 | 20 72 6f 62 65 72 74 40 |apped by| robert@|
|00000410| 6b 65 61 20 6f 6e 20 53 | 61 74 20 4e 6f 76 20 33 |kea on S|at Nov 3|
|00000420| 30 20 31 38 3a 32 34 3a | 32 36 20 31 39 39 31 0a |0 18:24:|26 1991.|
|00000430| 50 41 54 48 3d 2f 62 69 | 6e 3a 2f 75 73 72 2f 62 |PATH=/bi|n:/usr/b|
|00000440| 69 6e 3a 2f 75 73 72 2f | 75 63 62 20 3b 20 65 78 |in:/usr/|ucb ; ex|
|00000450| 70 6f 72 74 20 50 41 54 | 48 0a 69 66 20 74 65 73 |port PAT|H.if tes|
|00000460| 74 20 2d 66 20 27 62 6f | 6f 6c 65 61 6e 2e 68 78 |t -f 'bo|olean.hx|
|00000470| 78 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |x' -a "$|{1}" != |
|00000480| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|00000490| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|000004a0| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|000004b0| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 62 6f 6f 6c |ing file| \"'bool|
|000004c0| 65 61 6e 2e 68 78 78 27 | 5c 22 0a 65 6c 73 65 0a |ean.hxx'|\".else.|
|000004d0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000004e0| 63 74 69 6e 67 20 5c 22 | 27 62 6f 6f 6c 65 61 6e |cting \"|'boolean|
|000004f0| 2e 68 78 78 27 5c 22 20 | 5c 28 34 33 38 20 63 68 |.hxx'\" |\(438 ch|
|00000500| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|00000510| 73 2f 5e 58 2f 2f 22 20 | 3e 27 62 6f 6f 6c 65 61 |s/^X//" |>'boolea|
|00000520| 6e 2e 68 78 78 27 20 3c | 3c 27 45 4e 44 5f 4f 46 |n.hxx' <|<'END_OF|
|00000530| 5f 46 49 4c 45 27 0a 58 | 2f 2f 24 24 20 62 6f 6f |_FILE'.X|//$$ boo|
|00000540| 6c 65 61 6e 2e 68 78 78 | 20 20 20 20 20 20 20 20 |lean.hxx| |
|00000550| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 42 6f 6f | | Boo|
|00000560| 6c 65 61 6e 20 63 6c 61 | 73 73 0a 58 0a 58 23 69 |lean cla|ss.X.X#i|
|00000570| 66 6e 64 65 66 20 42 4f | 4f 4c 5f 4c 49 42 0a 58 |fndef BO|OL_LIB.X|
|00000580| 23 64 65 66 69 6e 65 20 | 42 4f 4f 4c 5f 4c 49 42 |#define |BOOL_LIB|
|00000590| 20 30 0a 58 0a 58 63 6c | 61 73 73 20 42 4f 4f 4c | 0.X.Xcl|ass BOOL|
|000005a0| 0a 58 7b 0a 58 20 20 20 | 69 6e 74 20 76 61 6c 75 |.X{.X |int valu|
|000005b0| 65 3b 0a 58 70 75 62 6c | 69 63 3a 0a 58 20 20 20 |e;.Xpubl|ic:.X |
|000005c0| 42 4f 4f 4c 28 69 6e 74 | 20 62 29 20 7b 20 76 61 |BOOL(int| b) { va|
|000005d0| 6c 75 65 20 3d 20 62 20 | 3f 20 31 20 3a 20 30 3b |lue = b |? 1 : 0;|
|000005e0| 20 7d 0a 58 20 20 20 42 | 4f 4f 4c 28 76 6f 69 64 | }.X B|OOL(void|
|000005f0| 2a 20 62 29 20 7b 20 76 | 61 6c 75 65 20 3d 20 62 |* b) { v|alue = b|
|00000600| 20 3f 20 31 20 3a 20 30 | 3b 20 7d 0a 58 20 20 20 | ? 1 : 0|; }.X |
|00000610| 42 4f 4f 4c 28 29 20 7b | 7d 0a 58 20 20 20 6f 70 |BOOL() {|}.X op|
|00000620| 65 72 61 74 6f 72 20 69 | 6e 74 28 29 20 63 6f 6e |erator i|nt() con|
|00000630| 73 74 20 7b 20 72 65 74 | 75 72 6e 20 76 61 6c 75 |st { ret|urn valu|
|00000640| 65 3b 20 7d 0a 58 20 20 | 20 42 4f 4f 4c 20 6f 70 |e; }.X | BOOL op|
|00000650| 65 72 61 74 6f 72 26 26 | 28 63 6f 6e 73 74 20 42 |erator&&|(const B|
|00000660| 4f 4f 4c 26 20 62 29 20 | 63 6f 6e 73 74 20 7b 20 |OOL& b) |const { |
|00000670| 72 65 74 75 72 6e 20 76 | 61 6c 75 65 20 26 26 20 |return v|alue && |
|00000680| 62 2e 76 61 6c 75 65 3b | 20 7d 0a 58 20 20 20 42 |b.value;| }.X B|
|00000690| 4f 4f 4c 20 6f 70 65 72 | 61 74 6f 72 7c 7c 28 63 |OOL oper|ator||(c|
|000006a0| 6f 6e 73 74 20 42 4f 4f | 4c 26 20 62 29 20 63 6f |onst BOO|L& b) co|
|000006b0| 6e 73 74 20 7b 20 72 65 | 74 75 72 6e 20 76 61 6c |nst { re|turn val|
|000006c0| 75 65 20 7c 7c 20 62 2e | 76 61 6c 75 65 3b 20 7d |ue || b.|value; }|
|000006d0| 0a 58 7d 3b 0a 58 0a 58 | 23 64 65 66 69 6e 65 20 |.X};.X.X|#define |
|000006e0| 46 41 4c 53 45 20 30 0a | 58 23 64 65 66 69 6e 65 |FALSE 0.|X#define|
|000006f0| 20 54 52 55 45 20 31 0a | 58 0a 58 23 65 6e 64 69 | TRUE 1.|X.X#endi|
|00000700| 66 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 69 66 |f.END_OF|_FILE.if|
|00000710| 20 74 65 73 74 20 34 33 | 38 20 2d 6e 65 20 60 77 | test 43|8 -ne `w|
|00000720| 63 20 2d 63 20 3c 27 62 | 6f 6f 6c 65 61 6e 2e 68 |c -c <'b|oolean.h|
|00000730| 78 78 27 60 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |xx'`; th|en. e|
|00000740| 63 68 6f 20 73 68 61 72 | 3a 20 5c 22 27 62 6f 6f |cho shar|: \"'boo|
|00000750| 6c 65 61 6e 2e 68 78 78 | 27 5c 22 20 75 6e 70 61 |lean.hxx|'\" unpa|
|00000760| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00000770| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00000780| 66 20 27 62 6f 6f 6c 65 | 61 6e 2e 68 78 78 27 0a |f 'boole|an.hxx'.|
|00000790| 66 69 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 63 |fi.if te|st -f 'c|
|000007a0| 6f 6e 74 72 6f 6c 77 2e | 68 78 78 27 20 2d 61 20 |ontrolw.|hxx' -a |
|000007b0| 22 24 7b 31 7d 22 20 21 | 3d 20 22 2d 63 22 20 3b |"${1}" !|= "-c" ;|
|000007c0| 20 74 68 65 6e 20 0a 20 | 20 65 63 68 6f 20 73 68 | then . | echo sh|
|000007d0| 61 72 3a 20 57 69 6c 6c | 20 6e 6f 74 20 63 6c 6f |ar: Will| not clo|
|000007e0| 62 62 65 72 20 65 78 69 | 73 74 69 6e 67 20 66 69 |bber exi|sting fi|
|000007f0| 6c 65 20 5c 22 27 63 6f | 6e 74 72 6f 6c 77 2e 68 |le \"'co|ntrolw.h|
|00000800| 78 78 27 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |xx'\".el|se.echo |
|00000810| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00000820| 20 5c 22 27 63 6f 6e 74 | 72 6f 6c 77 2e 68 78 78 | \"'cont|rolw.hxx|
|00000830| 27 5c 22 20 5c 28 31 36 | 37 31 20 63 68 61 72 61 |'\" \(16|71 chara|
|00000840| 63 74 65 72 73 5c 29 0a | 73 65 64 20 22 73 2f 5e |cters\).|sed "s/^|
|00000850| 58 2f 2f 22 20 3e 27 63 | 6f 6e 74 72 6f 6c 77 2e |X//" >'c|ontrolw.|
|00000860| 68 78 78 27 20 3c 3c 27 | 45 4e 44 5f 4f 46 5f 46 |hxx' <<'|END_OF_F|
|00000870| 49 4c 45 27 0a 58 2f 2f | 24 24 20 63 6f 6e 74 72 |ILE'.X//|$$ contr|
|00000880| 6f 6c 77 2e 68 78 78 20 | 20 20 20 20 20 20 20 20 |olw.hxx | |
|00000890| 20 20 20 20 20 43 6f 6e | 74 72 6f 6c 20 77 6f 72 | Con|trol wor|
|000008a0| 64 20 63 6c 61 73 73 0a | 58 0a 58 23 69 66 6e 64 |d class.|X.X#ifnd|
|000008b0| 65 66 20 43 4f 4e 54 52 | 4f 4c 5f 57 4f 52 44 5f |ef CONTR|OL_WORD_|
|000008c0| 4c 49 42 0a 58 23 64 65 | 66 69 6e 65 20 43 4f 4e |LIB.X#de|fine CON|
|000008d0| 54 52 4f 4c 5f 57 4f 52 | 44 5f 4c 49 42 20 30 0a |TROL_WOR|D_LIB 0.|
|000008e0| 58 0a 58 2f 2f 20 66 6f | 72 20 6f 72 67 61 6e 69 |X.X// fo|r organi|
|000008f0| 73 69 6e 67 20 61 6e 20 | 69 6e 74 20 61 73 20 61 |sing an |int as a|
|00000900| 20 73 65 72 69 65 73 20 | 6f 66 20 62 69 74 73 20 | series |of bits |
|00000910| 77 68 69 63 68 20 69 6e | 64 69 63 61 74 65 20 77 |which in|dicate w|
|00000920| 68 65 74 68 65 72 20 61 | 6e 0a 58 2f 2f 20 6f 70 |hether a|n.X// op|
|00000930| 74 69 6f 6e 20 69 73 20 | 6f 6e 20 6f 72 20 6f 66 |tion is |on or of|
|00000940| 66 2e 0a 58 0a 58 63 6c | 61 73 73 20 43 6f 6e 74 |f..X.Xcl|ass Cont|
|00000950| 72 6f 6c 57 6f 72 64 0a | 58 7b 0a 58 20 20 20 75 |rolWord.|X{.X u|
|00000960| 6e 73 69 67 6e 65 64 20 | 69 6e 74 20 63 77 3b 20 |nsigned |int cw; |
|00000970| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000980| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 74 | | // t|
|00000990| 68 65 20 63 6f 6e 74 72 | 6f 6c 20 77 6f 72 64 0a |he contr|ol word.|
|000009a0| 58 70 75 62 6c 69 63 3a | 0a 58 20 20 20 43 6f 6e |Xpublic:|.X Con|
|000009b0| 74 72 6f 6c 57 6f 72 64 | 28 29 20 7b 7d 20 20 20 |trolWord|() {} |
|000009c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000009d0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 64 6f 20 | | // do |
|000009e0| 6e 6f 74 68 69 6e 67 0a | 58 20 20 20 43 6f 6e 74 |nothing.|X Cont|
|000009f0| 72 6f 6c 57 6f 72 64 28 | 75 6e 73 69 67 6e 65 64 |rolWord(|unsigned|
|00000a00| 20 69 6e 74 20 69 29 20 | 3a 20 63 77 28 69 29 20 | int i) |: cw(i) |
|00000a10| 7b 7d 20 20 20 20 20 20 | 20 2f 2f 20 6c 6f 61 64 |{} | // load|
|00000a20| 20 61 6e 20 69 6e 74 65 | 67 65 72 0a 58 0a 58 20 | an inte|ger.X.X |
|00000a30| 20 20 20 20 20 2f 2f 20 | 73 65 6c 65 63 74 20 73 | // |select s|
|00000a40| 70 65 63 69 66 69 63 20 | 62 69 74 73 20 28 66 6f |pecific |bits (fo|
|00000a50| 72 20 74 65 73 74 69 6e | 67 20 61 74 20 6c 65 61 |r testin|g at lea|
|00000a60| 73 74 20 6f 6e 65 20 73 | 65 74 29 0a 58 20 20 20 |st one s|et).X |
|00000a70| 43 6f 6e 74 72 6f 6c 57 | 6f 72 64 20 6f 70 65 72 |ControlW|ord oper|
|00000a80| 61 74 6f 72 2a 28 43 6f | 6e 74 72 6f 6c 57 6f 72 |ator*(Co|ntrolWor|
|00000a90| 64 20 69 29 20 20 7b 20 | 72 65 74 75 72 6e 20 63 |d i) { |return c|
|00000aa0| 77 20 26 20 69 2e 63 77 | 3b 20 7d 0a 58 20 20 20 |w & i.cw|; }.X |
|00000ab0| 43 6f 6e 74 72 6f 6c 57 | 6f 72 64 20 6f 70 65 72 |ControlW|ord oper|
|00000ac0| 61 74 6f 72 2a 28 75 6e | 73 69 67 6e 65 64 20 69 |ator*(un|signed i|
|00000ad0| 6e 74 20 69 29 20 7b 20 | 72 65 74 75 72 6e 20 63 |nt i) { |return c|
|00000ae0| 77 20 26 20 69 3b 20 7d | 0a 58 0a 58 20 20 20 20 |w & i; }|.X.X |
|00000af0| 20 20 2f 2f 20 73 65 74 | 20 62 69 74 73 0a 58 20 | // set| bits.X |
|00000b00| 20 20 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 6f 70 | Contro|lWord op|
|00000b10| 65 72 61 74 6f 72 2b 28 | 43 6f 6e 74 72 6f 6c 57 |erator+(|ControlW|
|00000b20| 6f 72 64 20 69 29 20 20 | 7b 20 72 65 74 75 72 6e |ord i) |{ return|
|00000b30| 20 63 77 20 7c 20 69 2e | 63 77 3b 20 7d 0a 58 20 | cw | i.|cw; }.X |
|00000b40| 20 20 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 6f 70 | Contro|lWord op|
|00000b50| 65 72 61 74 6f 72 2b 28 | 75 6e 73 69 67 6e 65 64 |erator+(|unsigned|
|00000b60| 20 69 6e 74 20 69 29 20 | 7b 20 72 65 74 75 72 6e | int i) |{ return|
|00000b70| 20 63 77 20 7c 20 69 3b | 20 7d 0a 58 20 20 20 76 | cw | i;| }.X v|
|00000b80| 6f 69 64 20 6f 70 65 72 | 61 74 6f 72 2b 3d 28 43 |oid oper|ator+=(C|
|00000b90| 6f 6e 74 72 6f 6c 57 6f | 72 64 20 69 29 20 20 7b |ontrolWo|rd i) {|
|00000ba0| 20 63 77 20 7c 3d 20 69 | 2e 63 77 3b 20 7d 0a 58 | cw |= i|.cw; }.X|
|00000bb0| 20 20 20 76 6f 69 64 20 | 6f 70 65 72 61 74 6f 72 | void |operator|
|00000bc0| 2b 3d 28 75 6e 73 69 67 | 6e 65 64 20 69 6e 74 20 |+=(unsig|ned int |
|00000bd0| 69 29 20 7b 20 63 77 20 | 7c 3d 20 69 3b 20 7d 0a |i) { cw ||= i; }.|
|00000be0| 58 0a 58 20 20 20 20 20 | 20 2f 2f 20 72 65 73 65 |X.X | // rese|
|00000bf0| 74 20 62 69 74 73 0a 58 | 20 20 20 43 6f 6e 74 72 |t bits.X| Contr|
|00000c00| 6f 6c 57 6f 72 64 20 6f | 70 65 72 61 74 6f 72 2d |olWord o|perator-|
|00000c10| 28 43 6f 6e 74 72 6f 6c | 57 6f 72 64 20 69 29 20 |(Control|Word i) |
|00000c20| 20 7b 20 72 65 74 75 72 | 6e 20 63 77 20 2d 20 28 | { retur|n cw - (|
|00000c30| 63 77 20 26 20 69 2e 63 | 77 29 3b 20 7d 0a 58 20 |cw & i.c|w); }.X |
|00000c40| 20 20 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 6f 70 | Contro|lWord op|
|00000c50| 65 72 61 74 6f 72 2d 28 | 75 6e 73 69 67 6e 65 64 |erator-(|unsigned|
|00000c60| 20 69 6e 74 20 69 29 20 | 7b 20 72 65 74 75 72 6e | int i) |{ return|
|00000c70| 20 63 77 20 2d 20 28 63 | 77 20 26 20 69 29 3b 20 | cw - (c|w & i); |
|00000c80| 7d 0a 58 20 20 20 76 6f | 69 64 20 6f 70 65 72 61 |}.X vo|id opera|
|00000c90| 74 6f 72 2d 3d 28 43 6f | 6e 74 72 6f 6c 57 6f 72 |tor-=(Co|ntrolWor|
|00000ca0| 64 20 69 29 20 20 7b 20 | 63 77 20 2d 3d 20 28 63 |d i) { |cw -= (c|
|00000cb0| 77 20 26 20 69 2e 63 77 | 29 3b 20 7d 0a 58 20 20 |w & i.cw|); }.X |
|00000cc0| 20 76 6f 69 64 20 6f 70 | 65 72 61 74 6f 72 2d 3d | void op|erator-=|
|00000cd0| 28 75 6e 73 69 67 6e 65 | 64 20 69 6e 74 20 69 29 |(unsigne|d int i)|
|00000ce0| 20 7b 20 63 77 20 2d 3d | 20 28 63 77 20 26 20 69 | { cw -=| (cw & i|
|00000cf0| 29 3b 20 7d 0a 58 0a 58 | 20 20 20 20 20 20 2f 2f |); }.X.X| //|
|00000d00| 20 63 68 65 63 6b 20 69 | 66 20 61 6c 6c 20 6f 66 | check i|f all of|
|00000d10| 20 73 65 6c 65 63 74 65 | 64 20 62 69 74 73 20 73 | selecte|d bits s|
|00000d20| 65 74 20 6f 72 20 72 65 | 73 65 74 0a 58 20 20 20 |et or re|set.X |
|00000d30| 42 4f 4f 4c 20 6f 70 65 | 72 61 74 6f 72 3e 3d 28 |BOOL ope|rator>=(|
|00000d40| 43 6f 6e 74 72 6f 6c 57 | 6f 72 64 20 69 29 20 20 |ControlW|ord i) |
|00000d50| 7b 20 72 65 74 75 72 6e | 20 28 63 77 20 26 20 69 |{ return| (cw & i|
|00000d60| 2e 63 77 29 20 3d 3d 20 | 69 2e 63 77 3b 20 7d 0a |.cw) == |i.cw; }.|
|00000d70| 58 20 20 20 42 4f 4f 4c | 20 6f 70 65 72 61 74 6f |X BOOL| operato|
|00000d80| 72 3e 3d 28 75 6e 73 69 | 67 6e 65 64 20 69 6e 74 |r>=(unsi|gned int|
|00000d90| 20 69 29 20 7b 20 72 65 | 74 75 72 6e 20 28 63 77 | i) { re|turn (cw|
|00000da0| 20 26 20 69 29 20 3d 3d | 20 69 3b 20 7d 0a 58 20 | & i) ==| i; }.X |
|00000db0| 20 20 42 4f 4f 4c 20 6f | 70 65 72 61 74 6f 72 3c | BOOL o|perator<|
|00000dc0| 3d 28 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 69 29 |=(Contro|lWord i)|
|00000dd0| 20 20 7b 20 72 65 74 75 | 72 6e 20 28 63 77 20 26 | { retu|rn (cw &|
|00000de0| 20 69 2e 63 77 29 20 3d | 3d 20 63 77 3b 20 7d 0a | i.cw) =|= cw; }.|
|00000df0| 58 20 20 20 42 4f 4f 4c | 20 6f 70 65 72 61 74 6f |X BOOL| operato|
|00000e00| 72 3c 3d 28 75 6e 73 69 | 67 6e 65 64 20 69 6e 74 |r<=(unsi|gned int|
|00000e10| 20 69 29 20 7b 20 72 65 | 74 75 72 6e 20 28 63 77 | i) { re|turn (cw|
|00000e20| 20 26 20 69 29 20 3d 3d | 20 63 77 3b 20 7d 0a 58 | & i) ==| cw; }.X|
|00000e30| 0a 58 20 20 20 20 20 20 | 2f 2f 20 66 6c 69 70 20 |.X |// flip |
|00000e40| 73 65 6c 65 63 74 65 64 | 20 62 69 74 73 0a 58 20 |selected| bits.X |
|00000e50| 20 20 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 6f 70 | Contro|lWord op|
|00000e60| 65 72 61 74 6f 72 5e 28 | 43 6f 6e 74 72 6f 6c 57 |erator^(|ControlW|
|00000e70| 6f 72 64 20 69 29 20 20 | 7b 20 72 65 74 75 72 6e |ord i) |{ return|
|00000e80| 20 63 77 20 5e 20 69 2e | 63 77 3b 20 7d 0a 58 20 | cw ^ i.|cw; }.X |
|00000e90| 20 20 43 6f 6e 74 72 6f | 6c 57 6f 72 64 20 6f 70 | Contro|lWord op|
|00000ea0| 65 72 61 74 6f 72 5e 28 | 75 6e 73 69 67 6e 65 64 |erator^(|unsigned|
|00000eb0| 20 69 6e 74 20 69 29 20 | 7b 20 72 65 74 75 72 6e | int i) |{ return|
|00000ec0| 20 63 77 20 5e 20 69 3b | 20 7d 0a 58 20 20 20 43 | cw ^ i;| }.X C|
|00000ed0| 6f 6e 74 72 6f 6c 57 6f | 72 64 20 6f 70 65 72 61 |ontrolWo|rd opera|
|00000ee0| 74 6f 72 7e 28 29 20 7b | 20 72 65 74 75 72 6e 20 |tor~() {| return |
|00000ef0| 7e 63 77 3b 20 7d 0a 58 | 0a 58 20 20 20 6f 70 65 |~cw; }.X|.X ope|
|00000f00| 72 61 74 6f 72 20 69 6e | 74 28 29 20 7b 20 72 65 |rator in|t() { re|
|00000f10| 74 75 72 6e 20 63 77 3b | 20 7d 0a 58 7d 3b 0a 58 |turn cw;| }.X};.X|
|00000f20| 0a 58 0a 58 23 65 6e 64 | 69 66 0a 45 4e 44 5f 4f |.X.X#end|if.END_O|
|00000f30| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 31 |F_FILE.i|f test 1|
|00000f40| 36 37 31 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |671 -ne |`wc -c <|
|00000f50| 27 63 6f 6e 74 72 6f 6c | 77 2e 68 78 78 27 60 3b |'control|w.hxx'`;|
|00000f60| 20 74 68 65 6e 0a 20 20 | 20 20 65 63 68 6f 20 73 | then. | echo s|
|00000f70| 68 61 72 3a 20 5c 22 27 | 63 6f 6e 74 72 6f 6c 77 |har: \"'|controlw|
|00000f80| 2e 68 78 78 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |.hxx'\" |unpacked|
|00000f90| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00000fa0| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 63 |!.fi.# e|nd of 'c|
|00000fb0| 6f 6e 74 72 6f 6c 77 2e | 68 78 78 27 0a 66 69 0a |ontrolw.|hxx'.fi.|
|00000fc0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 69 6e 63 6c |if test |-f 'incl|
|00000fd0| 75 64 65 2e 68 78 78 27 | 20 2d 61 20 22 24 7b 31 |ude.hxx'| -a "${1|
|00000fe0| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00000ff0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00001000| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|00001010| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|00001020| 22 27 69 6e 63 6c 75 64 | 65 2e 68 78 78 27 5c 22 |"'includ|e.hxx'\"|
|00001030| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|00001040| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 69 | Extract|ing \"'i|
|00001050| 6e 63 6c 75 64 65 2e 68 | 78 78 27 5c 22 20 5c 28 |nclude.h|xx'\" \(|
|00001060| 32 36 37 30 20 63 68 61 | 72 61 63 74 65 72 73 5c |2670 cha|racters\|
|00001070| 29 0a 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e |).sed "s|/^X//" >|
|00001080| 27 69 6e 63 6c 75 64 65 | 2e 68 78 78 27 20 3c 3c |'include|.hxx' <<|
|00001090| 27 45 4e 44 5f 4f 46 5f | 46 49 4c 45 27 0a 58 2f |'END_OF_|FILE'.X/|
|000010a0| 2f 24 24 20 69 6e 63 6c | 75 64 65 2e 68 78 78 20 |/$$ incl|ude.hxx |
|000010b0| 20 20 20 20 20 20 20 20 | 69 6e 63 6c 75 64 65 20 | |include |
|000010c0| 66 69 6c 65 73 20 72 65 | 71 75 69 72 65 64 20 62 |files re|quired b|
|000010d0| 79 20 76 61 72 69 6f 75 | 73 20 76 65 72 73 69 6f |y variou|s versio|
|000010e0| 6e 73 20 6f 66 20 43 2b | 2b 0a 58 0a 58 2f 2f 23 |ns of C+|+.X.X//#|
|000010f0| 64 65 66 69 6e 65 20 47 | 6c 6f 63 6b 20 20 20 20 |define G|lock |
|00001100| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001110| 20 20 20 20 20 2f 2f 20 | 66 6f 72 20 47 6c 6f 63 | // |for Gloc|
|00001120| 6b 65 6e 73 70 69 65 6c | 20 6f 6e 20 74 68 65 20 |kenspiel| on the |
|00001130| 50 43 0a 58 2f 2f 23 64 | 65 66 69 6e 65 20 41 54 |PC.X//#d|efine AT|
|00001140| 61 6e 64 54 20 20 20 20 | 20 20 20 20 20 20 20 20 |andT | |
|00001150| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 66 | | // f|
|00001160| 6f 72 20 41 54 26 54 20 | 43 2b 2b 20 6f 6e 20 61 |or AT&T |C++ on a|
|00001170| 20 53 75 6e 0a 58 2f 2f | 23 64 65 66 69 6e 65 20 | Sun.X//|#define |
|00001180| 47 58 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |GXX | |
|00001190| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f | | //|
|000011a0| 20 66 6f 72 20 47 6e 75 | 20 43 2b 2b 0a 58 0a 58 | for Gnu| C++.X.X|
|000011b0| 0a 58 23 64 65 66 69 6e | 65 20 55 53 49 4e 47 5f |.X#defin|e USING_|
|000011c0| 44 4f 55 42 4c 45 20 20 | 20 20 20 20 20 20 20 20 |DOUBLE | |
|000011d0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 65 6c 65 | | // ele|
|000011e0| 6d 65 6e 74 73 20 6f 66 | 20 74 79 70 65 20 64 6f |ments of| type do|
|000011f0| 75 62 6c 65 0a 58 2f 2f | 23 64 65 66 69 6e 65 20 |uble.X//|#define |
|00001200| 55 53 49 4e 47 5f 46 4c | 4f 41 54 20 20 20 20 20 |USING_FL|OAT |
|00001210| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f | | //|
|00001220| 20 65 6c 65 6d 65 6e 74 | 73 20 6f 66 20 74 79 70 | element|s of typ|
|00001230| 65 20 66 6c 6f 61 74 0a | 58 0a 58 0a 58 0a 58 23 |e float.|X.X.X.X#|
|00001240| 69 66 64 65 66 20 5f 5f | 5a 54 43 5f 5f 20 20 20 |ifdef __|ZTC__ |
|00001250| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001260| 20 20 20 20 20 20 20 2f | 2f 20 5a 6f 72 74 65 63 | /|/ Zortec|
|00001270| 68 0a 58 20 20 20 23 69 | 6e 63 6c 75 64 65 20 3c |h.X #i|nclude <|
|00001280| 73 74 64 6c 69 62 2e 68 | 3e 0a 58 20 20 20 23 69 |stdlib.h|>.X #i|
|00001290| 66 64 65 66 20 57 41 4e | 54 5f 53 54 52 45 41 4d |fdef WAN|T_STREAM|
|000012a0| 0a 58 20 20 20 20 20 20 | 23 69 6e 63 6c 75 64 65 |.X |#include|
|000012b0| 20 3c 73 74 72 65 61 6d | 2e 68 70 70 3e 0a 58 20 | <stream|.hpp>.X |
|000012c0| 20 20 20 20 20 23 64 65 | 66 69 6e 65 20 66 6c 75 | #de|fine flu|
|000012d0| 73 68 20 22 22 20 20 20 | 20 20 20 20 20 20 20 20 |sh "" | |
|000012e0| 20 20 20 20 20 20 20 2f | 2f 20 64 6f 65 73 6e 27 | /|/ doesn'|
|000012f0| 74 20 68 61 76 65 20 69 | 6f 20 6d 61 6e 69 70 75 |t have i|o manipu|
|00001300| 6c 61 74 6f 72 73 0a 58 | 20 20 20 23 65 6e 64 69 |lators.X| #endi|
|00001310| 66 0a 58 20 20 20 23 69 | 66 64 65 66 20 57 41 4e |f.X #i|fdef WAN|
|00001320| 54 5f 4d 41 54 48 0a 58 | 20 20 20 20 20 20 23 69 |T_MATH.X| #i|
|00001330| 6e 63 6c 75 64 65 20 3c | 6d 61 74 68 2e 68 3e 0a |nclude <|math.h>.|
|00001340| 58 20 20 20 20 20 20 23 | 69 6e 63 6c 75 64 65 20 |X #|include |
|00001350| 3c 66 6c 6f 61 74 2e 68 | 3e 0a 58 20 20 20 23 65 |<float.h|>.X #e|
|00001360| 6e 64 69 66 0a 58 23 65 | 6e 64 69 66 0a 58 0a 58 |ndif.X#e|ndif.X.X|
|00001370| 23 69 66 64 65 66 20 5f | 5f 42 43 50 4c 55 53 50 |#ifdef _|_BCPLUSP|
|00001380| 4c 55 53 5f 5f 20 20 20 | 20 20 20 20 20 20 20 20 |LUS__ | |
|00001390| 20 20 20 20 20 20 20 20 | 2f 2f 20 42 6f 72 6c 61 | |// Borla|
|000013a0| 6e 64 0a 58 20 20 20 23 | 69 6e 63 6c 75 64 65 20 |nd.X #|include |
|000013b0| 3c 73 74 64 6c 69 62 2e | 68 3e 0a 58 20 20 20 23 |<stdlib.|h>.X #|
|000013c0| 69 66 64 65 66 20 57 41 | 4e 54 5f 53 54 52 45 41 |ifdef WA|NT_STREA|
|000013d0| 4d 0a 58 20 20 20 20 20 | 20 23 69 6e 63 6c 75 64 |M.X | #includ|
|000013e0| 65 20 3c 69 6f 73 74 72 | 65 61 6d 2e 68 3e 0a 58 |e <iostr|eam.h>.X|
|000013f0| 20 20 20 20 20 20 23 69 | 6e 63 6c 75 64 65 20 3c | #i|nclude <|
|00001400| 69 6f 6d 61 6e 69 70 2e | 68 3e 0a 58 20 20 20 23 |iomanip.|h>.X #|
|00001410| 65 6e 64 69 66 0a 58 20 | 20 20 23 69 66 64 65 66 |endif.X | #ifdef|
|00001420| 20 57 41 4e 54 5f 4d 41 | 54 48 0a 58 20 20 20 20 | WANT_MA|TH.X |
|00001430| 20 20 23 69 6e 63 6c 75 | 64 65 20 3c 6d 61 74 68 | #inclu|de <math|
|00001440| 2e 68 3e 0a 58 20 20 20 | 20 20 20 23 64 65 66 69 |.h>.X | #defi|
|00001450| 6e 65 20 53 79 73 74 65 | 6d 56 20 20 20 20 20 20 |ne Syste|mV |
|00001460| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00001470| 6f 70 74 69 6f 6e 61 6c | 20 69 6e 20 42 6f 72 6c |optional| in Borl|
|00001480| 61 6e 64 0a 58 20 20 20 | 20 20 20 23 69 6e 63 6c |and.X | #incl|
|00001490| 75 64 65 20 3c 76 61 6c | 75 65 73 2e 68 3e 20 20 |ude <val|ues.h> |
|000014a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|000014b0| 42 6f 72 6c 61 6e 64 20 | 68 61 73 20 62 6f 74 68 |Borland |has both|
|000014c0| 20 66 6c 6f 61 74 20 61 | 6e 64 20 76 61 6c 75 65 | float a|nd value|
|000014d0| 73 0a 58 20 20 20 23 65 | 6e 64 69 66 0a 58 20 20 |s.X #e|ndif.X |
|000014e0| 20 23 75 6e 64 65 66 20 | 5f 5f 54 55 52 42 4f 43 | #undef |__TURBOC|
|000014f0| 5f 5f 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |__ | |
|00001500| 20 20 20 20 20 20 2f 2f | 20 61 6c 73 6f 20 64 65 | //| also de|
|00001510| 66 69 6e 65 64 20 69 6e | 20 42 6f 72 6c 61 6e 64 |fined in| Borland|
|00001520| 0a 58 23 65 6e 64 69 66 | 0a 58 0a 58 23 69 66 64 |.X#endif|.X.X#ifd|
|00001530| 65 66 20 5f 5f 54 55 52 | 42 4f 43 5f 5f 20 20 20 |ef __TUR|BOC__ |
|00001540| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001550| 20 20 20 20 2f 2f 20 54 | 75 72 62 6f 0a 58 20 20 | // T|urbo.X |
|00001560| 20 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 6c 69 | #includ|e <stdli|
|00001570| 62 2e 68 3e 0a 58 20 20 | 20 23 69 66 64 65 66 20 |b.h>.X | #ifdef |
|00001580| 57 41 4e 54 5f 53 54 52 | 45 41 4d 0a 58 20 20 20 |WANT_STR|EAM.X |
|00001590| 20 20 20 23 69 6e 63 6c | 75 64 65 20 3c 69 6f 73 | #incl|ude <ios|
|000015a0| 74 72 65 61 6d 2e 68 3e | 0a 58 20 20 20 20 20 20 |tream.h>|.X |
|000015b0| 23 69 6e 63 6c 75 64 65 | 20 3c 69 6f 6d 61 6e 69 |#include| <iomani|
|000015c0| 70 2e 68 3e 0a 58 20 20 | 20 23 65 6e 64 69 66 0a |p.h>.X | #endif.|
|000015d0| 58 20 20 20 23 69 66 64 | 65 66 20 57 41 4e 54 5f |X #ifd|ef WANT_|
|000015e0| 4d 41 54 48 0a 58 20 20 | 20 20 20 20 23 69 6e 63 |MATH.X | #inc|
|000015f0| 6c 75 64 65 20 3c 6d 61 | 74 68 2e 68 3e 0a 58 20 |lude <ma|th.h>.X |
|00001600| 20 20 20 20 20 23 64 65 | 66 69 6e 65 20 53 79 73 | #de|fine Sys|
|00001610| 74 65 6d 56 20 20 20 20 | 20 20 20 20 20 20 20 20 |temV | |
|00001620| 20 20 20 20 20 20 20 2f | 2f 20 6f 70 74 69 6f 6e | /|/ option|
|00001630| 61 6c 20 69 6e 20 54 75 | 72 62 6f 0a 58 20 20 20 |al in Tu|rbo.X |
|00001640| 20 20 20 23 69 6e 63 6c | 75 64 65 20 3c 76 61 6c | #incl|ude <val|
|00001650| 75 65 73 2e 68 3e 0a 58 | 20 20 20 23 65 6e 64 69 |ues.h>.X| #endi|
|00001660| 66 0a 58 23 65 6e 64 69 | 66 0a 58 0a 58 23 69 66 |f.X#endi|f.X.X#if|
|00001670| 64 65 66 20 41 54 61 6e | 64 54 20 20 20 20 20 20 |def ATan|dT |
|00001680| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001690| 20 20 20 20 20 2f 2f 20 | 41 54 26 54 0a 58 23 69 | // |AT&T.X#i|
|000016a0| 6e 63 6c 75 64 65 20 3c | 73 74 64 6c 69 62 2e 68 |nclude <|stdlib.h|
|000016b0| 3e 0a 58 23 69 66 64 65 | 66 20 57 41 4e 54 5f 53 |>.X#ifde|f WANT_S|
|000016c0| 54 52 45 41 4d 0a 58 23 | 69 6e 63 6c 75 64 65 20 |TREAM.X#|include |
|000016d0| 3c 69 6f 73 74 72 65 61 | 6d 2e 68 3e 0a 58 23 69 |<iostrea|m.h>.X#i|
|000016e0| 6e 63 6c 75 64 65 20 3c | 69 6f 6d 61 6e 69 70 2e |nclude <|iomanip.|
|000016f0| 68 3e 0a 58 23 65 6e 64 | 69 66 0a 58 23 69 66 64 |h>.X#end|if.X#ifd|
|00001700| 65 66 20 57 41 4e 54 5f | 4d 41 54 48 0a 58 23 69 |ef WANT_|MATH.X#i|
|00001710| 6e 63 6c 75 64 65 20 3c | 6d 61 74 68 2e 68 3e 0a |nclude <|math.h>.|
|00001720| 58 23 64 65 66 69 6e 65 | 20 53 79 73 74 65 6d 56 |X#define| SystemV|
|00001730| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001740| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 6d 75 73 74 | | // must|
|00001750| 20 75 73 65 20 53 79 73 | 74 65 6d 20 56 20 6f 6e | use Sys|tem V on|
|00001760| 20 6d 79 20 53 75 6e 0a | 58 23 69 6e 63 6c 75 64 | my Sun.|X#includ|
|00001770| 65 20 3c 76 61 6c 75 65 | 73 2e 68 3e 20 20 20 20 |e <value|s.h> |
|00001780| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001790| 20 2f 2f 20 20 20 20 61 | 73 20 66 6c 6f 61 74 2e | // a|s float.|
|000017a0| 68 20 69 73 20 6e 6f 74 | 20 70 72 65 73 65 6e 74 |h is not| present|
|000017b0| 0a 58 23 65 6e 64 69 66 | 0a 58 23 65 6e 64 69 66 |.X#endif|.X#endif|
|000017c0| 0a 58 0a 58 23 69 66 64 | 65 66 20 47 58 58 20 20 |.X.X#ifd|ef GXX |
|000017d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000017e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 47 | | // G|
|000017f0| 6e 75 20 43 2b 2b 0a 58 | 20 20 20 23 69 6e 63 6c |nu C++.X| #incl|
|00001800| 75 64 65 20 3c 73 74 64 | 6c 69 62 2e 68 3e 0a 58 |ude <std|lib.h>.X|
|00001810| 20 20 20 23 69 66 64 65 | 66 20 57 41 4e 54 5f 53 | #ifde|f WANT_S|
|00001820| 54 52 45 41 4d 0a 58 20 | 20 20 20 20 20 23 69 6e |TREAM.X | #in|
|00001830| 63 6c 75 64 65 20 3c 73 | 74 72 65 61 6d 2e 68 3e |clude <s|tream.h>|
|00001840| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|00001850| 2f 20 6e 6f 20 69 6f 6d | 61 6e 69 70 20 69 6e 20 |/ no iom|anip in |
|00001860| 47 2b 2b 0a 58 20 20 20 | 20 20 20 23 64 65 66 69 |G++.X | #defi|
|00001870| 6e 65 20 66 6c 75 73 68 | 20 22 22 0a 58 20 20 20 |ne flush| "".X |
|00001880| 23 65 6e 64 69 66 0a 58 | 20 20 20 23 69 66 64 65 |#endif.X| #ifde|
|00001890| 66 20 57 41 4e 54 5f 4d | 41 54 48 0a 58 20 20 20 |f WANT_M|ATH.X |
|000018a0| 20 20 20 23 69 6e 63 6c | 75 64 65 20 3c 6d 61 74 | #incl|ude <mat|
|000018b0| 68 2e 68 3e 0a 58 20 20 | 20 20 20 20 23 69 6e 63 |h.h>.X | #inc|
|000018c0| 6c 75 64 65 20 3c 66 6c | 6f 61 74 2e 68 3e 0a 58 |lude <fl|oat.h>.X|
|000018d0| 20 20 20 23 65 6e 64 69 | 66 0a 58 23 65 6e 64 69 | #endi|f.X#endi|
|000018e0| 66 0a 58 0a 58 23 69 66 | 64 65 66 20 47 6c 6f 63 |f.X.X#if|def Gloc|
|000018f0| 6b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |k | |
|00001900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00001910| 47 6c 6f 63 6b 65 6e 73 | 70 69 65 6c 0a 58 20 20 |Glockens|piel.X |
|00001920| 20 65 78 74 65 72 6e 20 | 22 43 22 20 7b 20 23 69 | extern |"C" { #i|
|00001930| 6e 63 6c 75 64 65 20 3c | 73 74 64 6c 69 62 2e 68 |nclude <|stdlib.h|
|00001940| 3e 20 7d 0a 58 20 20 20 | 23 69 66 64 65 66 20 57 |> }.X |#ifdef W|
|00001950| 41 4e 54 5f 53 54 52 45 | 41 4d 0a 58 20 20 20 20 |ANT_STRE|AM.X |
|00001960| 20 20 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 65 | #inclu|de <stre|
|00001970| 61 6d 2e 68 78 78 3e 0a | 58 20 20 20 20 20 20 23 |am.hxx>.|X #|
|00001980| 69 6e 63 6c 75 64 65 20 | 3c 69 6f 6d 61 6e 69 70 |include |<iomanip|
|00001990| 2e 68 78 78 3e 0a 58 20 | 20 20 23 65 6e 64 69 66 |.hxx>.X | #endif|
|000019a0| 0a 58 20 20 20 23 69 66 | 64 65 66 20 57 41 4e 54 |.X #if|def WANT|
|000019b0| 5f 4d 41 54 48 0a 58 20 | 20 20 20 20 20 65 78 74 |_MATH.X | ext|
|000019c0| 65 72 6e 20 22 43 22 20 | 7b 20 23 69 6e 63 6c 75 |ern "C" |{ #inclu|
|000019d0| 64 65 20 3c 6d 61 74 68 | 2e 68 3e 20 7d 0a 58 20 |de <math|.h> }.X |
|000019e0| 20 20 20 20 20 65 78 74 | 65 72 6e 20 22 43 22 20 | ext|ern "C" |
|000019f0| 7b 20 23 69 6e 63 6c 75 | 64 65 20 3c 66 6c 6f 61 |{ #inclu|de <floa|
|00001a00| 74 2e 68 3e 20 7d 0a 58 | 20 20 20 23 65 6e 64 69 |t.h> }.X| #endi|
|00001a10| 66 0a 58 20 20 20 23 64 | 65 66 69 6e 65 20 4e 4f |f.X #d|efine NO|
|00001a20| 5f 4c 4f 4e 47 5f 4e 41 | 4d 45 53 20 20 20 20 20 |_LONG_NA|MES |
|00001a30| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 76 65 | | // ve|
|00001a40| 72 79 20 6c 6f 6e 67 20 | 6e 61 6d 65 73 20 64 6f |ry long |names do|
|00001a50| 6e 27 74 20 77 6f 72 6b | 0a 58 23 65 6e 64 69 66 |n't work|.X#endif|
|00001a60| 0a 58 0a 58 0a 58 0a 58 | 23 69 66 64 65 66 20 55 |.X.X.X.X|#ifdef U|
|00001a70| 53 49 4e 47 5f 46 4c 4f | 41 54 20 20 20 20 20 20 |SING_FLO|AT |
|00001a80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001a90| 2f 2f 20 73 65 74 20 70 | 72 65 63 69 73 69 6f 6e |// set p|recision|
|00001aa0| 20 74 79 70 65 20 74 6f | 20 66 6c 6f 61 74 0a 58 | type to| float.X|
|00001ab0| 74 79 70 65 64 65 66 20 | 66 6c 6f 61 74 20 72 65 |typedef |float re|
|00001ac0| 61 6c 3b 0a 58 74 79 70 | 65 64 65 66 20 64 6f 75 |al;.Xtyp|edef dou|
|00001ad0| 62 6c 65 20 6c 6f 6e 67 | 5f 72 65 61 6c 3b 0a 58 |ble long|_real;.X|
|00001ae0| 23 65 6e 64 69 66 0a 58 | 0a 58 23 69 66 64 65 66 |#endif.X|.X#ifdef|
|00001af0| 20 55 53 49 4e 47 5f 44 | 4f 55 42 4c 45 20 20 20 | USING_D|OUBLE |
|00001b00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001b10| 20 20 2f 2f 20 73 65 74 | 20 70 72 65 63 69 73 69 | // set| precisi|
|00001b20| 6f 6e 20 74 79 70 65 20 | 74 6f 20 64 6f 75 62 6c |on type |to doubl|
|00001b30| 65 0a 58 74 79 70 65 64 | 65 66 20 64 6f 75 62 6c |e.Xtyped|ef doubl|
|00001b40| 65 20 72 65 61 6c 3b 0a | 58 74 79 70 65 64 65 66 |e real;.|Xtypedef|
|00001b50| 20 6c 6f 6e 67 20 64 6f | 75 62 6c 65 20 6c 6f 6e | long do|uble lon|
|00001b60| 67 5f 72 65 61 6c 3b 0a | 58 23 65 6e 64 69 66 0a |g_real;.|X#endif.|
|00001b70| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 0a 69 66 20 74 |END_OF_F|ILE.if t|
|00001b80| 65 73 74 20 32 36 37 30 | 20 2d 6e 65 20 60 77 63 |est 2670| -ne `wc|
|00001b90| 20 2d 63 20 3c 27 69 6e | 63 6c 75 64 65 2e 68 78 | -c <'in|clude.hx|
|00001ba0| 78 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |x'`; the|n. ec|
|00001bb0| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 69 6e 63 6c |ho shar:| \"'incl|
|00001bc0| 75 64 65 2e 68 78 78 27 | 5c 22 20 75 6e 70 61 63 |ude.hxx'|\" unpac|
|00001bd0| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00001be0| 69 7a 65 21 0a 66 69 0a | 23 20 65 6e 64 20 6f 66 |ize!.fi.|# end of|
|00001bf0| 20 27 69 6e 63 6c 75 64 | 65 2e 68 78 78 27 0a 66 | 'includ|e.hxx'.f|
|00001c00| 69 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 6e 65 |i.if tes|t -f 'ne|
|00001c10| 77 6d 61 74 2e 68 78 78 | 27 20 2d 61 20 22 24 7b |wmat.hxx|' -a "${|
|00001c20| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00001c30| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00001c40| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|00001c50| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|00001c60| 5c 22 27 6e 65 77 6d 61 | 74 2e 68 78 78 27 5c 22 |\"'newma|t.hxx'\"|
|00001c70| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|00001c80| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 6e | Extract|ing \"'n|
|00001c90| 65 77 6d 61 74 2e 68 78 | 78 27 5c 22 20 5c 28 32 |ewmat.hx|x'\" \(2|
|00001ca0| 36 34 31 32 20 63 68 61 | 72 61 63 74 65 72 73 5c |6412 cha|racters\|
|00001cb0| 29 0a 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e |).sed "s|/^X//" >|
|00001cc0| 27 6e 65 77 6d 61 74 2e | 68 78 78 27 20 3c 3c 27 |'newmat.|hxx' <<'|
|00001cd0| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 27 0a 58 2f 2f |END_OF_F|ILE'.X//|
|00001ce0| 24 24 20 6e 65 77 6d 61 | 74 2e 68 78 78 20 20 20 |$$ newma|t.hxx |
|00001cf0| 20 20 20 20 20 20 64 65 | 66 69 6e 69 74 69 6f 6e | de|finition|
|00001d00| 20 66 69 6c 65 20 66 6f | 72 20 6e 65 77 20 76 65 | file fo|r new ve|
|00001d10| 72 73 69 6f 6e 20 6f 66 | 20 6d 61 74 72 69 78 20 |rsion of| matrix |
|00001d20| 70 61 63 6b 61 67 65 0a | 58 0a 58 2f 2f 20 43 6f |package.|X.X// Co|
|00001d30| 70 79 72 69 67 68 74 20 | 28 43 29 20 31 39 39 31 |pyright |(C) 1991|
|00001d40| 3a 20 52 20 42 20 44 61 | 76 69 65 73 20 61 6e 64 |: R B Da|vies and|
|00001d50| 20 44 53 49 52 0a 58 0a | 58 23 69 66 6e 64 65 66 | DSIR.X.|X#ifndef|
|00001d60| 20 4d 41 54 52 49 58 5f | 4c 49 42 0a 58 23 64 65 | MATRIX_|LIB.X#de|
|00001d70| 66 69 6e 65 20 4d 41 54 | 52 49 58 5f 4c 49 42 20 |fine MAT|RIX_LIB |
|00001d80| 30 0a 58 0a 58 23 69 66 | 64 65 66 20 4e 4f 5f 4c |0.X.X#if|def NO_L|
|00001d90| 4f 4e 47 5f 4e 41 4d 45 | 53 0a 58 23 64 65 66 69 |ONG_NAME|S.X#defi|
|00001da0| 6e 65 20 55 70 70 65 72 | 54 72 69 61 6e 67 75 6c |ne Upper|Triangul|
|00001db0| 61 72 4d 61 74 72 69 78 | 20 55 54 4d 61 74 72 69 |arMatrix| UTMatri|
|00001dc0| 78 0a 58 23 64 65 66 69 | 6e 65 20 4c 6f 77 65 72 |x.X#defi|ne Lower|
|00001dd0| 54 72 69 61 6e 67 75 6c | 61 72 4d 61 74 72 69 78 |Triangul|arMatrix|
|00001de0| 20 4c 54 4d 61 74 72 69 | 78 0a 58 23 64 65 66 69 | LTMatri|x.X#defi|
|00001df0| 6e 65 20 53 79 6d 6d 65 | 74 72 69 63 4d 61 74 72 |ne Symme|tricMatr|
|00001e00| 69 78 20 53 4d 61 74 72 | 69 78 0a 58 23 64 65 66 |ix SMatr|ix.X#def|
|00001e10| 69 6e 65 20 44 69 61 67 | 6f 6e 61 6c 4d 61 74 72 |ine Diag|onalMatr|
|00001e20| 69 78 20 44 4d 61 74 72 | 69 78 0a 58 23 65 6e 64 |ix DMatr|ix.X#end|
|00001e30| 69 66 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |if.X.X#i|nclude "|
|00001e40| 62 6f 6f 6c 65 61 6e 2e | 68 78 78 22 0a 58 0a 58 |boolean.|hxx".X.X|
|00001e50| 0a 58 2f 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X/*****|********|
|00001e60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 20 |********|******* |
|00001e70| 67 65 6e 65 72 61 6c 20 | 75 74 69 6c 69 74 69 65 |general |utilitie|
|00001e80| 73 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |s ******|********|
|00001e90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0a |********|******/.|
|00001ea0| 58 0a 58 76 6f 69 64 20 | 4d 61 74 72 69 78 45 72 |X.Xvoid |MatrixEr|
|00001eb0| 72 6f 72 28 63 68 61 72 | 2a 29 3b 20 20 20 20 20 |ror(char|*); |
|00001ec0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001ed0| 20 20 20 2f 2f 20 65 72 | 72 6f 72 20 68 61 6e 64 | // er|ror hand|
|00001ee0| 6c 65 72 0a 58 76 6f 69 | 64 20 4d 61 74 72 69 78 |ler.Xvoi|d Matrix|
|00001ef0| 45 72 72 6f 72 4e 6f 53 | 70 61 63 65 28 76 6f 69 |ErrorNoS|pace(voi|
|00001f00| 64 2a 29 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |d*); | |
|00001f10| 20 20 20 20 20 2f 2f 20 | 6e 6f 20 73 70 61 63 65 | // |no space|
|00001f20| 20 68 61 6e 64 6c 65 72 | 0a 58 0a 58 63 6c 61 73 | handler|.X.Xclas|
|00001f30| 73 20 4c 6f 67 41 6e 64 | 53 69 67 6e 0a 58 2f 2f |s LogAnd|Sign.X//|
|00001f40| 20 52 65 74 75 72 6e 20 | 66 72 6f 6d 20 4c 6f 67 | Return |from Log|
|00001f50| 44 65 74 65 72 6d 69 6e | 61 6e 74 20 66 75 6e 63 |Determin|ant func|
|00001f60| 74 69 6f 6e 0a 58 2f 2f | 20 20 20 20 2d 20 76 61 |tion.X//| - va|
|00001f70| 6c 75 65 20 6f 66 20 74 | 68 65 20 6c 6f 67 20 70 |lue of t|he log p|
|00001f80| 6c 75 73 20 74 68 65 20 | 73 69 67 6e 20 28 2b 2c |lus the |sign (+,|
|00001f90| 20 2d 20 6f 72 20 30 29 | 0a 58 7b 0a 58 20 20 20 | - or 0)|.X{.X |
|00001fa0| 72 65 61 6c 20 6c 6f 67 | 5f 76 61 6c 75 65 3b 0a |real log|_value;.|
|00001fb0| 58 20 20 20 69 6e 74 20 | 73 69 67 6e 3b 0a 58 70 |X int |sign;.Xp|
|00001fc0| 75 62 6c 69 63 3a 0a 58 | 20 20 20 4c 6f 67 41 6e |ublic:.X| LogAn|
|00001fd0| 64 53 69 67 6e 28 29 20 | 7b 20 6c 6f 67 5f 76 61 |dSign() |{ log_va|
|00001fe0| 6c 75 65 3d 30 2e 30 3b | 20 73 69 67 6e 3d 31 3b |lue=0.0;| sign=1;|
|00001ff0| 20 7d 0a 58 20 20 20 76 | 6f 69 64 20 6f 70 65 72 | }.X v|oid oper|
|00002000| 61 74 6f 72 2a 3d 28 72 | 65 61 6c 29 3b 0a 58 20 |ator*=(r|eal);.X |
|00002010| 20 20 76 6f 69 64 20 43 | 68 61 6e 67 65 53 69 67 | void C|hangeSig|
|00002020| 6e 28 29 20 7b 20 73 69 | 67 6e 20 3d 20 2d 73 69 |n() { si|gn = -si|
|00002030| 67 6e 3b 20 7d 0a 58 20 | 20 20 72 65 61 6c 20 4c |gn; }.X | real L|
|00002040| 6f 67 56 61 6c 75 65 28 | 29 20 7b 20 72 65 74 75 |ogValue(|) { retu|
|00002050| 72 6e 20 6c 6f 67 5f 76 | 61 6c 75 65 3b 20 7d 0a |rn log_v|alue; }.|
|00002060| 58 20 20 20 69 6e 74 20 | 53 69 67 6e 28 29 20 7b |X int |Sign() {|
|00002070| 20 72 65 74 75 72 6e 20 | 73 69 67 6e 3b 20 7d 0a | return |sign; }.|
|00002080| 58 20 20 20 72 65 61 6c | 20 56 61 6c 75 65 28 29 |X real| Value()|
|00002090| 3b 0a 58 7d 3b 0a 58 0a | 58 2f 2f 20 74 68 65 20 |;.X};.X.|X// the |
|000020a0| 66 6f 6c 6c 6f 77 69 6e | 67 20 63 6c 61 73 73 20 |followin|g class |
|000020b0| 69 73 20 66 6f 72 20 63 | 6f 75 6e 74 69 6e 67 20 |is for c|ounting |
|000020c0| 74 68 65 20 6e 75 6d 62 | 65 72 20 6f 66 20 74 69 |the numb|er of ti|
|000020d0| 6d 65 73 20 61 20 70 69 | 65 63 65 20 6f 66 20 63 |mes a pi|ece of c|
|000020e0| 6f 64 65 0a 58 2f 2f 20 | 69 73 20 65 78 65 63 75 |ode.X// |is execu|
|000020f0| 74 65 64 2e 20 49 74 20 | 69 73 20 75 73 65 64 20 |ted. It |is used |
|00002100| 66 6f 72 20 6c 6f 63 61 | 74 69 6e 67 20 61 6e 79 |for loca|ting any|
|00002110| 20 63 6f 64 65 20 6e 6f | 74 20 65 78 65 63 75 74 | code no|t execut|
|00002120| 65 64 20 62 79 20 74 65 | 73 74 0a 58 2f 2f 20 72 |ed by te|st.X// r|
|00002130| 6f 75 74 69 6e 65 73 2e | 20 55 73 65 20 74 75 72 |outines.| Use tur|
|00002140| 62 6f 20 47 52 45 50 20 | 6c 6f 63 61 74 65 20 61 |bo GREP |locate a|
|00002150| 6c 6c 20 70 6c 61 63 65 | 73 20 74 68 69 73 20 63 |ll place|s this c|
|00002160| 6f 64 65 20 69 73 20 63 | 61 6c 6c 65 64 20 61 6e |ode is c|alled an|
|00002170| 64 0a 58 2f 2f 20 63 68 | 65 63 6b 20 77 68 69 63 |d.X// ch|eck whic|
|00002180| 68 20 6f 6e 65 73 20 61 | 72 65 20 6e 6f 74 20 61 |h ones a|re not a|
|00002190| 63 63 65 73 73 65 64 2e | 0a 58 2f 2f 20 53 6f 6d |ccessed.|.X// Som|
|000021a0| 65 77 68 61 74 20 69 6d | 70 6c 65 6d 65 6e 74 61 |ewhat im|plementa|
|000021b0| 74 69 6f 6e 20 64 65 70 | 65 6e 64 65 6e 74 20 61 |tion dep|endent a|
|000021c0| 73 20 69 74 20 72 65 6c | 69 65 73 20 6f 6e 20 22 |s it rel|ies on "|
|000021d0| 63 6f 75 74 22 20 73 74 | 69 6c 6c 20 62 65 69 6e |cout" st|ill bein|
|000021e0| 67 0a 58 2f 2f 20 70 72 | 65 73 65 6e 74 20 77 68 |g.X// pr|esent wh|
|000021f0| 65 6e 20 45 78 65 43 6f | 75 6e 74 65 72 20 6f 62 |en ExeCo|unter ob|
|00002200| 6a 65 63 74 73 20 61 72 | 65 20 64 65 73 74 72 75 |jects ar|e destru|
|00002210| 63 74 65 64 2e 0a 58 0a | 58 63 6c 61 73 73 20 45 |cted..X.|Xclass E|
|00002220| 78 65 43 6f 75 6e 74 65 | 72 0a 58 7b 0a 58 20 20 |xeCounte|r.X{.X |
|00002230| 20 69 6e 74 20 6c 69 6e | 65 3b 20 20 20 20 20 20 | int lin|e; |
|00002240| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002250| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f | | //|
|00002260| 20 63 6f 64 65 20 6c 69 | 6e 65 20 6e 75 6d 62 65 | code li|ne numbe|
|00002270| 72 0a 58 20 20 20 69 6e | 74 20 66 69 6c 65 69 64 |r.X in|t fileid|
|00002280| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |; | |
|00002290| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000022a0| 20 20 20 2f 2f 20 66 69 | 6c 65 20 69 64 65 6e 74 | // fi|le ident|
|000022b0| 69 66 69 65 72 0a 58 20 | 20 20 6c 6f 6e 67 20 6e |ifier.X | long n|
|000022c0| 65 78 65 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |exe; | |
|000022d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000022e0| 20 20 20 20 20 20 20 2f | 2f 20 6e 75 6d 62 65 72 | /|/ number|
|000022f0| 20 6f 66 20 65 78 65 63 | 75 74 69 6f 6e 73 0a 58 | of exec|utions.X|
|00002300| 20 20 20 73 74 61 74 69 | 63 20 69 6e 74 20 6e 72 | stati|c int nr|
|00002310| 65 70 6f 72 74 73 3b 20 | 20 20 20 20 20 20 20 20 |eports; | |
|00002320| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002330| 2f 2f 20 6e 75 6d 62 65 | 72 20 6f 66 20 72 65 70 |// numbe|r of rep|
|00002340| 6f 72 74 73 0a 58 70 75 | 62 6c 69 63 3a 0a 58 20 |orts.Xpu|blic:.X |
|00002350| 20 20 45 78 65 43 6f 75 | 6e 74 65 72 28 69 6e 74 | ExeCou|nter(int|
|00002360| 2c 69 6e 74 29 3b 0a 58 | 20 20 20 76 6f 69 64 20 |,int);.X| void |
|00002370| 6f 70 65 72 61 74 6f 72 | 2b 2b 28 29 20 7b 20 6e |operator|++() { n|
|00002380| 65 78 65 2b 2b 3b 20 7d | 0a 58 20 20 20 7e 45 78 |exe++; }|.X ~Ex|
|00002390| 65 43 6f 75 6e 74 65 72 | 28 29 3b 20 20 20 20 20 |eCounter|(); |
|000023a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000023b0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 70 72 69 | | // pri|
|000023c0| 6e 74 73 20 6f 75 74 20 | 72 65 70 6f 72 74 73 0a |nts out |reports.|
|000023d0| 58 7d 3b 0a 58 0a 58 0a | 58 2f 2a 2a 2a 2a 2a 2a |X};.X.X.|X/******|
|000023e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000023f0| 2a 2a 2a 2a 2a 2a 20 63 | 6c 61 73 73 20 4d 61 74 |****** c|lass Mat|
|00002400| 72 69 78 54 79 70 65 20 | 2a 2a 2a 2a 2a 2a 2a 2a |rixType |********|
|00002410| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002420| 2a 2a 2a 2a 2a 2f 0a 58 | 0a 58 2f 2f 20 49 73 20 |*****/.X|.X// Is |
|00002430| 75 73 65 64 20 66 6f 72 | 20 66 69 6e 64 69 6e 67 |used for| finding|
|00002440| 20 74 68 65 20 74 79 70 | 65 20 6f 66 20 61 20 6d | the typ|e of a m|
|00002450| 61 74 72 69 78 20 72 65 | 73 75 6c 74 69 6e 67 20 |atrix re|sulting |
|00002460| 66 72 6f 6d 20 74 68 65 | 20 62 69 6e 61 72 79 20 |from the| binary |
|00002470| 6f 70 65 72 61 74 69 6f | 6e 73 0a 58 2f 2f 20 2b |operatio|ns.X// +|
|00002480| 2c 20 2d 2c 20 2a 20 61 | 6e 64 20 69 64 65 6e 74 |, -, * a|nd ident|
|00002490| 69 66 79 69 6e 67 20 77 | 68 61 74 20 63 6f 6e 76 |ifying w|hat conv|
|000024a0| 65 72 73 69 6f 6e 73 20 | 61 72 65 20 70 65 72 6d |ersions |are perm|
|000024b0| 69 73 73 69 62 6c 65 2e | 0a 58 2f 2f 20 54 68 69 |issible.|.X// Thi|
|000024c0| 73 20 63 6c 61 73 73 20 | 6d 75 73 74 20 62 65 20 |s class |must be |
|000024d0| 75 70 64 61 74 65 64 20 | 77 68 65 6e 20 6e 65 77 |updated |when new|
|000024e0| 20 6d 61 74 72 69 78 20 | 74 79 70 65 73 20 61 72 | matrix |types ar|
|000024f0| 65 20 61 64 64 65 64 2e | 0a 58 0a 58 63 6c 61 73 |e added.|.X.Xclas|
|00002500| 73 20 47 65 6e 65 72 61 | 6c 4d 61 74 72 69 78 3b |s Genera|lMatrix;|
|00002510| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002520| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 64 | | // d|
|00002530| 65 66 69 6e 65 64 20 6c | 61 74 65 72 0a 58 0a 58 |efined l|ater.X.X|
|00002540| 63 6c 61 73 73 20 4d 61 | 74 72 69 78 54 79 70 65 |class Ma|trixType|
|00002550| 0a 58 7b 0a 58 70 75 62 | 6c 69 63 3a 0a 58 20 20 |.X{.Xpub|lic:.X |
|00002560| 20 65 6e 75 6d 20 54 79 | 70 65 20 7b 20 55 6e 53 | enum Ty|pe { UnS|
|00002570| 70 2c 55 54 2c 4c 54 2c | 52 65 63 74 2c 53 79 6d |p,UT,LT,|Rect,Sym|
|00002580| 2c 44 69 61 67 2c 52 6f | 77 56 2c 43 6f 6c 56 2c |,Diag,Ro|wV,ColV,|
|00002590| 45 71 45 6c 2c 43 72 6f | 75 74 20 7d 3b 0a 58 20 |EqEl,Cro|ut };.X |
|000025a0| 20 20 73 74 61 74 69 63 | 20 6e 54 79 70 65 73 28 | static| nTypes(|
|000025b0| 29 20 7b 20 72 65 74 75 | 72 6e 20 38 3b 20 7d 20 |) { retu|rn 8; } |
|000025c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f | | //|
|000025d0| 20 6e 75 6d 62 65 72 20 | 6f 66 20 64 69 66 66 65 | number |of diffe|
|000025e0| 72 65 6e 74 20 74 79 70 | 65 73 0a 58 09 09 09 09 |rent typ|es.X....|
|000025f0| 09 20 20 20 20 20 20 20 | 2f 2f 20 65 78 63 6c 75 |. |// exclu|
|00002600| 64 65 20 43 72 6f 75 74 | 2c 20 55 6e 53 70 0a 58 |de Crout|, UnSp.X|
|00002610| 70 72 69 76 61 74 65 3a | 0a 58 20 20 20 54 79 70 |private:|.X Typ|
|00002620| 65 20 74 79 70 65 3b 0a | 58 70 75 62 6c 69 63 3a |e type;.|Xpublic:|
|00002630| 0a 58 20 20 20 4d 61 74 | 72 69 78 54 79 70 65 20 |.X Mat|rixType |
|00002640| 6f 70 65 72 61 74 6f 72 | 2b 28 63 6f 6e 73 74 20 |operator|+(const |
|00002650| 4d 61 74 72 69 78 54 79 | 70 65 26 29 20 63 6f 6e |MatrixTy|pe&) con|
|00002660| 73 74 3b 0a 58 20 20 20 | 4d 61 74 72 69 78 54 79 |st;.X |MatrixTy|
|00002670| 70 65 20 6f 70 65 72 61 | 74 6f 72 2d 28 63 6f 6e |pe opera|tor-(con|
|00002680| 73 74 20 4d 61 74 72 69 | 78 54 79 70 65 26 29 20 |st Matri|xType&) |
|00002690| 63 6f 6e 73 74 3b 0a 58 | 20 20 20 4d 61 74 72 69 |const;.X| Matri|
|000026a0| 78 54 79 70 65 20 6f 70 | 65 72 61 74 6f 72 2a 28 |xType op|erator*(|
|000026b0| 63 6f 6e 73 74 20 4d 61 | 74 72 69 78 54 79 70 65 |const Ma|trixType|
|000026c0| 26 29 20 63 6f 6e 73 74 | 3b 0a 58 20 20 20 42 4f |&) const|;.X BO|
|000026d0| 4f 4c 20 6f 70 65 72 61 | 74 6f 72 3e 3d 28 63 6f |OL opera|tor>=(co|
|000026e0| 6e 73 74 20 4d 61 74 72 | 69 78 54 79 70 65 26 29 |nst Matr|ixType&)|
|000026f0| 20 63 6f 6e 73 74 3b 0a | 58 20 20 20 42 4f 4f 4c | const;.|X BOOL|
|00002700| 20 6f 70 65 72 61 74 6f | 72 3d 3d 28 63 6f 6e 73 | operato|r==(cons|
|00002710| 74 20 4d 61 74 72 69 78 | 54 79 70 65 26 20 74 29 |t Matrix|Type& t)|
|00002720| 20 63 6f 6e 73 74 3b 20 | 2f 2f 20 7b 20 72 65 74 | const; |// { ret|
|00002730| 75 72 6e 20 28 74 79 70 | 65 20 3d 3d 20 74 2e 74 |urn (typ|e == t.t|
|00002740| 79 70 65 29 3b 20 7d 0a | 58 20 20 20 42 4f 4f 4c |ype); }.|X BOOL|
|00002750| 20 6f 70 65 72 61 74 6f | 72 21 3d 28 63 6f 6e 73 | operato|r!=(cons|
|00002760| 74 20 4d 61 74 72 69 78 | 54 79 70 65 26 20 74 29 |t Matrix|Type& t)|
|00002770| 20 63 6f 6e 73 74 3b 20 | 2f 2f 20 7b 20 72 65 74 | const; |// { ret|
|00002780| 75 72 6e 20 21 28 2a 74 | 68 69 73 20 3d 3d 20 74 |urn !(*t|his == t|
|00002790| 29 3b 20 7d 0a 58 20 20 | 20 42 4f 4f 4c 20 6f 70 |); }.X | BOOL op|
|000027a0| 65 72 61 74 6f 72 21 28 | 29 20 63 6f 6e 73 74 20 |erator!(|) const |
|000027b0| 7b 20 72 65 74 75 72 6e | 20 74 79 70 65 20 3d 3d |{ return| type ==|
|000027c0| 20 55 6e 53 70 3b 20 7d | 0a 58 20 20 20 4d 61 74 | UnSp; }|.X Mat|
|000027d0| 72 69 78 54 79 70 65 20 | 6f 70 65 72 61 74 6f 72 |rixType |operator|
|000027e0| 2d 28 29 20 63 6f 6e 73 | 74 3b 20 20 20 20 20 20 |-() cons|t; |
|000027f0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 74 79 70 65 | | // type|
|00002800| 20 6f 66 20 6e 65 67 61 | 74 69 76 65 0a 58 20 20 | of nega|tive.X |
|00002810| 20 4d 61 74 72 69 78 54 | 79 70 65 20 69 28 29 20 | MatrixT|ype i() |
|00002820| 63 6f 6e 73 74 3b 20 20 | 20 20 20 20 20 20 20 20 |const; | |
|00002830| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00002840| 74 79 70 65 20 6f 66 20 | 69 6e 76 65 72 73 65 0a |type of |inverse.|
|00002850| 58 20 20 20 4d 61 74 72 | 69 78 54 79 70 65 20 74 |X Matr|ixType t|
|00002860| 28 29 20 63 6f 6e 73 74 | 3b 20 20 20 20 20 20 20 |() const|; |
|00002870| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002880| 2f 2f 20 74 79 70 65 20 | 6f 66 20 74 72 61 6e 73 |// type |of trans|
|00002890| 70 6f 73 65 0a 58 20 20 | 20 4d 61 74 72 69 78 54 |pose.X | MatrixT|
|000028a0| 79 70 65 20 73 75 62 28 | 29 20 63 6f 6e 73 74 3b |ype sub(|) const;|
|000028b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000028c0| 20 20 20 20 20 2f 2f 20 | 74 79 70 65 20 6f 66 20 | // |type of |
|000028d0| 73 75 62 6d 61 74 72 69 | 78 0a 58 20 20 20 4d 61 |submatri|x.X Ma|
|000028e0| 74 72 69 78 54 79 70 65 | 20 73 73 75 62 28 29 20 |trixType| ssub() |
|000028f0| 63 6f 6e 73 74 3b 20 20 | 20 20 20 20 20 20 20 20 |const; | |
|00002900| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 74 79 70 | | // typ|
|00002910| 65 20 6f 66 20 73 79 6d | 20 73 75 62 6d 61 74 72 |e of sym| submatr|
|00002920| 69 78 0a 58 20 20 20 4d | 61 74 72 69 78 54 79 70 |ix.X M|atrixTyp|
|00002930| 65 20 28 54 79 70 65 20 | 74 78 29 20 3a 20 74 79 |e (Type |tx) : ty|
|00002940| 70 65 28 74 78 29 20 7b | 7d 20 20 20 20 20 20 20 |pe(tx) {|} |
|00002950| 20 20 20 2f 2f 20 28 26 | 20 64 6f 65 73 6e 27 74 | // (&| doesn't|
|00002960| 20 77 6f 72 6b 20 77 69 | 74 68 20 41 54 26 54 29 | work wi|th AT&T)|
|00002970| 0a 58 20 20 20 4d 61 74 | 72 69 78 54 79 70 65 20 |.X Mat|rixType |
|00002980| 28 29 20 7b 7d 0a 58 20 | 20 20 47 65 6e 65 72 61 |() {}.X | Genera|
|00002990| 6c 4d 61 74 72 69 78 2a | 20 4e 65 77 28 29 20 63 |lMatrix*| New() c|
|000029a0| 6f 6e 73 74 3b 20 20 20 | 20 20 20 20 20 20 20 20 |onst; | |
|000029b0| 20 20 20 20 20 20 2f 2f | 20 6e 65 77 20 6d 61 74 | //| new mat|
|000029c0| 72 69 78 20 6f 66 20 67 | 69 76 65 6e 20 74 79 70 |rix of g|iven typ|
|000029d0| 65 0a 58 20 20 20 47 65 | 6e 65 72 61 6c 4d 61 74 |e.X Ge|neralMat|
|000029e0| 72 69 78 2a 20 4e 65 77 | 28 69 6e 74 2c 69 6e 74 |rix* New|(int,int|
|000029f0| 29 20 63 6f 6e 73 74 3b | 20 20 20 20 20 20 20 20 |) const;| |
|00002a00| 20 20 2f 2f 20 6e 65 77 | 20 6d 61 74 72 69 78 20 | // new| matrix |
|00002a10| 6f 66 20 67 69 76 65 6e | 20 74 79 70 65 0a 58 20 |of given| type.X |
|00002a20| 20 20 6f 70 65 72 61 74 | 6f 72 20 69 6e 74 28 29 | operat|or int()|
|00002a30| 20 63 6f 6e 73 74 20 7b | 20 72 65 74 75 72 6e 20 | const {| return |
|00002a40| 28 69 6e 74 29 74 79 70 | 65 3b 20 7d 0a 58 20 20 |(int)typ|e; }.X |
|00002a50| 20 6f 70 65 72 61 74 6f | 72 20 63 68 61 72 2a 28 | operato|r char*(|
|00002a60| 29 20 63 6f 6e 73 74 3b | 20 20 20 20 20 20 20 20 |) const;| |
|00002a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00002a80| 66 6f 72 20 70 72 69 6e | 74 69 6e 67 20 74 79 70 |for prin|ting typ|
|00002a90| 65 0a 58 7d 3b 0a 58 0a | 58 76 6f 69 64 20 54 65 |e.X};.X.|Xvoid Te|
|00002aa0| 73 74 54 79 70 65 41 64 | 64 28 29 3b 20 20 20 20 |stTypeAd|d(); |
|00002ab0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ac0| 20 20 20 20 20 20 20 20 | 2f 2f 20 74 65 73 74 20 | |// test |
|00002ad0| 2b 0a 58 76 6f 69 64 20 | 54 65 73 74 54 79 70 65 |+.Xvoid |TestType|
|00002ae0| 4d 75 6c 74 28 29 3b 20 | 20 20 20 20 20 20 20 20 |Mult(); | |
|00002af0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002b00| 20 20 2f 2f 20 74 65 73 | 74 20 2a 0a 58 76 6f 69 | // tes|t *.Xvoi|
|00002b10| 64 20 54 65 73 74 54 79 | 70 65 4f 72 64 65 72 28 |d TestTy|peOrder(|
|00002b20| 29 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |); | |
|00002b30| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 74 | | // t|
|00002b40| 65 73 74 20 3e 3d 0a 58 | 0a 58 2f 2a 2a 2a 2a 2a |est >=.X|.X/*****|
|00002b50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b60| 2a 2a 2a 2a 2a 2a 20 4d | 61 74 72 69 78 20 72 6f |****** M|atrix ro|
|00002b70| 75 74 69 6e 65 73 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |utines *|********|
|00002b80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002b90| 2a 2a 2f 0a 58 0a 58 0a | 58 63 6c 61 73 73 20 4d |**/.X.X.|Xclass M|
|00002ba0| 61 74 72 69 78 52 6f 77 | 43 6f 6c 3b 20 20 20 20 |atrixRow|Col; |
|00002bb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002bc0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 64 65 66 69 | | // defi|
|00002bd0| 6e 65 64 20 6c 61 74 65 | 72 0a 58 63 6c 61 73 73 |ned late|r.Xclass|
|00002be0| 20 4d 61 74 72 69 78 52 | 6f 77 3b 0a 58 63 6c 61 | MatrixR|ow;.Xcla|
|00002bf0| 73 73 20 4d 61 74 72 69 | 78 43 6f 6c 3b 0a 58 0a |ss Matri|xCol;.X.|
|00002c00| 58 63 6c 61 73 73 20 47 | 65 6e 65 72 61 6c 4d 61 |Xclass G|eneralMa|
|00002c10| 74 72 69 78 3b 20 20 20 | 20 20 20 20 20 20 20 20 |trix; | |
|00002c20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002c30| 20 2f 2f 20 64 65 66 69 | 6e 65 64 20 6c 61 74 65 | // defi|ned late|
|00002c40| 72 0a 58 63 6c 61 73 73 | 20 41 64 64 65 64 4d 61 |r.Xclass| AddedMa|
|00002c50| 74 72 69 78 3b 0a 58 63 | 6c 61 73 73 20 4d 75 6c |trix;.Xc|lass Mul|
|00002c60| 74 69 70 6c 69 65 64 4d | 61 74 72 69 78 3b 0a 58 |tipliedM|atrix;.X|
|00002c70| 63 6c 61 73 73 20 53 75 | 62 74 72 61 63 74 65 64 |class Su|btracted|
|00002c80| 4d 61 74 72 69 78 3b 0a | 58 63 6c 61 73 73 20 53 |Matrix;.|Xclass S|
|00002c90| 6f 6c 76 65 64 4d 61 74 | 72 69 78 3b 0a 58 63 6c |olvedMat|rix;.Xcl|
|00002ca0| 61 73 73 20 53 68 69 66 | 74 65 64 4d 61 74 72 69 |ass Shif|tedMatri|
|00002cb0| 78 3b 0a 58 63 6c 61 73 | 73 20 53 63 61 6c 65 64 |x;.Xclas|s Scaled|
|00002cc0| 4d 61 74 72 69 78 3b 0a | 58 63 6c 61 73 73 20 54 |Matrix;.|Xclass T|
|00002cd0| 72 61 6e 73 70 6f 73 65 | 64 4d 61 74 72 69 78 3b |ranspose|dMatrix;|
|00002ce0| 0a 58 63 6c 61 73 73 20 | 4e 65 67 61 74 65 64 4d |.Xclass |NegatedM|
|00002cf0| 61 74 72 69 78 3b 0a 58 | 63 6c 61 73 73 20 49 6e |atrix;.X|class In|
|00002d00| 76 65 72 74 65 64 4d 61 | 74 72 69 78 3b 0a 58 63 |vertedMa|trix;.Xc|
|00002d10| 6c 61 73 73 20 52 6f 77 | 65 64 4d 61 74 72 69 78 |lass Row|edMatrix|
|00002d20| 3b 0a 58 63 6c 61 73 73 | 20 43 6f 6c 65 64 4d 61 |;.Xclass| ColedMa|
|00002d30| 74 72 69 78 3b 0a 58 63 | 6c 61 73 73 20 44 69 61 |trix;.Xc|lass Dia|
|00002d40| 67 65 64 4d 61 74 72 69 | 78 3b 0a 58 63 6c 61 73 |gedMatri|x;.Xclas|
|00002d50| 73 20 4d 61 74 65 64 4d | 61 74 72 69 78 3b 0a 58 |s MatedM|atrix;.X|
|00002d60| 63 6c 61 73 73 20 47 65 | 74 53 75 62 4d 61 74 72 |class Ge|tSubMatr|
|00002d70| 69 78 3b 0a 58 63 6c 61 | 73 73 20 43 6f 6e 73 74 |ix;.Xcla|ss Const|
|00002d80| 4d 61 74 72 69 78 3b 0a | 58 63 6c 61 73 73 20 52 |Matrix;.|Xclass R|
|00002d90| 65 74 75 72 6e 4d 61 74 | 72 69 78 3b 0a 58 63 6c |eturnMat|rix;.Xcl|
|00002da0| 61 73 73 20 4d 61 74 72 | 69 78 3b 0a 58 63 6c 61 |ass Matr|ix;.Xcla|
|00002db0| 73 73 20 6e 72 69 63 4d | 61 74 72 69 78 3b 0a 58 |ss nricM|atrix;.X|
|00002dc0| 63 6c 61 73 73 20 52 6f | 77 56 65 63 74 6f 72 3b |class Ro|wVector;|
|00002dd0| 0a 58 63 6c 61 73 73 20 | 43 6f 6c 75 6d 6e 56 65 |.Xclass |ColumnVe|
|00002de0| 63 74 6f 72 3b 0a 58 63 | 6c 61 73 73 20 53 79 6d |ctor;.Xc|lass Sym|
|00002df0| 6d 65 74 72 69 63 4d 61 | 74 72 69 78 3b 0a 58 63 |metricMa|trix;.Xc|
|00002e00| 6c 61 73 73 20 55 70 70 | 65 72 54 72 69 61 6e 67 |lass Upp|erTriang|
|00002e10| 75 6c 61 72 4d 61 74 72 | 69 78 3b 0a 58 63 6c 61 |ularMatr|ix;.Xcla|
|00002e20| 73 73 20 4c 6f 77 65 72 | 54 72 69 61 6e 67 75 6c |ss Lower|Triangul|
|00002e30| 61 72 4d 61 74 72 69 78 | 3b 0a 58 63 6c 61 73 73 |arMatrix|;.Xclass|
|00002e40| 20 44 69 61 67 6f 6e 61 | 6c 4d 61 74 72 69 78 3b | Diagona|lMatrix;|
|00002e50| 0a 58 63 6c 61 73 73 20 | 43 72 6f 75 74 4d 61 74 |.Xclass |CroutMat|
|00002e60| 72 69 78 3b 0a 58 0a 58 | 73 74 61 74 69 63 20 4d |rix;.X.X|static M|
|00002e70| 61 74 72 69 78 54 79 70 | 65 20 4d 61 74 72 69 78 |atrixTyp|e Matrix|
|00002e80| 54 79 70 65 55 6e 53 70 | 28 4d 61 74 72 69 78 54 |TypeUnSp|(MatrixT|
|00002e90| 79 70 65 3a 3a 55 6e 53 | 70 29 3b 0a 58 09 09 09 |ype::UnS|p);.X...|
|00002ea0| 09 09 09 2f 2f 20 41 54 | 26 54 20 6e 65 65 64 73 |...// AT|&T needs|
|00002eb0| 20 74 68 69 73 0a 58 0a | 58 63 6c 61 73 73 20 42 | this.X.|Xclass B|
|00002ec0| 61 73 65 4d 61 74 72 69 | 78 20 20 20 20 20 20 20 |aseMatri|x |
|00002ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002ee0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 62 61 73 65 | | // base|
|00002ef0| 20 6f 66 20 61 6c 6c 20 | 6d 61 74 72 69 78 20 63 | of all |matrix c|
|00002f00| 6c 61 73 73 65 73 0a 58 | 7b 0a 58 70 72 6f 74 65 |lasses.X|{.Xprote|
|00002f10| 63 74 65 64 3a 0a 58 2f | 2f 20 20 20 42 61 73 65 |cted:.X/|/ Base|
|00002f20| 4d 61 74 72 69 78 28 29 | 20 7b 7d 0a 58 20 20 20 |Matrix()| {}.X |
|00002f30| 76 69 72 74 75 61 6c 20 | 69 6e 74 20 73 65 61 72 |virtual |int sear|
|00002f40| 63 68 28 63 6f 6e 73 74 | 20 47 65 6e 65 72 61 6c |ch(const| General|
|00002f50| 4d 61 74 72 69 78 2a 29 | 20 63 6f 6e 73 74 20 3d |Matrix*)| const =|
|00002f60| 20 30 3b 0a 58 09 09 09 | 09 09 09 2f 2f 20 63 6f | 0;.X...|...// co|
|00002f70| 75 6e 74 20 6e 75 6d 62 | 65 72 20 6f 66 20 74 69 |unt numb|er of ti|
|00002f80| 6d 65 73 20 6d 61 74 72 | 69 78 0a 58 09 09 09 09 |mes matr|ix.X....|
|00002f90| 09 09 2f 2f 20 69 73 20 | 72 65 66 65 72 72 65 64 |..// is |referred|
|00002fa0| 20 74 6f 0a 58 20 20 20 | 76 69 72 74 75 61 6c 20 | to.X |virtual |
|00002fb0| 4d 61 74 72 69 78 54 79 | 70 65 20 54 79 70 65 28 |MatrixTy|pe Type(|
|00002fc0| 29 20 63 6f 6e 73 74 20 | 3d 20 30 3b 20 20 20 20 |) const |= 0; |
|00002fd0| 20 20 20 20 20 2f 2f 20 | 74 79 70 65 20 6f 66 20 | // |type of |
|00002fe0| 61 20 6d 61 74 72 69 78 | 0a 58 20 20 20 76 69 72 |a matrix|.X vir|
|00002ff0| 74 75 61 6c 20 69 6e 74 | 20 4e 72 6f 77 73 56 28 |tual int| NrowsV(|
|00003000| 29 20 20 63 6f 6e 73 74 | 20 3d 20 30 3b 0a 58 20 |) const| = 0;.X |
|00003010| 20 20 76 69 72 74 75 61 | 6c 20 69 6e 74 20 4e 63 | virtua|l int Nc|
|00003020| 6f 6c 73 56 28 29 20 20 | 63 6f 6e 73 74 20 3d 20 |olsV() |const = |
|00003030| 30 3b 0a 58 70 75 62 6c | 69 63 3a 0a 58 23 69 66 |0;.Xpubl|ic:.X#if|
|00003040| 6e 64 65 66 20 47 58 58 | 0a 58 20 20 20 76 69 72 |ndef GXX|.X vir|
|00003050| 74 75 61 6c 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |tual Gen|eralMatr|
|00003060| 69 78 2a 20 45 76 61 6c | 75 61 74 65 28 4d 61 74 |ix* Eval|uate(Mat|
|00003070| 72 69 78 54 79 70 65 20 | 6d 74 3d 4d 61 74 72 69 |rixType |mt=Matri|
|00003080| 78 54 79 70 65 55 6e 53 | 70 29 20 3d 20 30 3b 0a |xTypeUnS|p) = 0;.|
|00003090| 58 09 09 09 09 09 09 2f | 2f 20 65 76 61 6c 75 61 |X....../|/ evalua|
|000030a0| 74 65 20 74 65 6d 70 6f | 72 61 72 79 0a 58 23 65 |te tempo|rary.X#e|
|000030b0| 6c 73 65 0a 58 20 20 20 | 76 69 72 74 75 61 6c 20 |lse.X |virtual |
|000030c0| 47 65 6e 65 72 61 6c 4d | 61 74 72 69 78 2a 20 45 |GeneralM|atrix* E|
|000030d0| 76 61 6c 75 61 74 65 28 | 4d 61 74 72 69 78 54 79 |valuate(|MatrixTy|
|000030e0| 70 65 20 6d 74 29 20 3d | 20 30 3b 0a 58 20 20 20 |pe mt) =| 0;.X |
|000030f0| 47 65 6e 65 72 61 6c 4d | 61 74 72 69 78 2a 20 45 |GeneralM|atrix* E|
|00003100| 76 61 6c 75 61 74 65 28 | 29 20 7b 20 72 65 74 75 |valuate(|) { retu|
|00003110| 72 6e 20 45 76 61 6c 75 | 61 74 65 28 4d 61 74 72 |rn Evalu|ate(Matr|
|00003120| 69 78 54 79 70 65 55 6e | 53 70 29 3b 20 7d 0a 58 |ixTypeUn|Sp); }.X|
|00003130| 23 65 6e 64 69 66 0a 58 | 20 20 20 76 6f 69 64 20 |#endif.X| void |
|00003140| 4d 61 74 72 69 78 50 61 | 72 61 6d 65 74 65 72 73 |MatrixPa|rameters|
|00003150| 28 69 6e 74 26 20 6e 72 | 2c 20 69 6e 74 26 20 6e |(int& nr|, int& n|
|00003160| 63 2c 20 4d 61 74 72 69 | 78 54 79 70 65 26 20 6d |c, Matri|xType& m|
|00003170| 74 29 0a 58 20 20 20 20 | 20 20 7b 20 6e 72 20 3d |t).X | { nr =|
|00003180| 20 4e 72 6f 77 73 56 28 | 29 3b 20 6e 63 20 3d 20 | NrowsV(|); nc = |
|00003190| 4e 63 6f 6c 73 56 28 29 | 3b 20 6d 74 20 3d 20 54 |NcolsV()|; mt = T|
|000031a0| 79 70 65 28 29 3b 20 7d | 0a 58 20 20 20 41 64 64 |ype(); }|.X Add|
|000031b0| 65 64 4d 61 74 72 69 78 | 20 6f 70 65 72 61 74 6f |edMatrix| operato|
|000031c0| 72 2b 28 42 61 73 65 4d | 61 74 72 69 78 26 29 3b |r+(BaseM|atrix&);|
|000031d0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 72 65 73 | | // res|
|000031e0| 75 6c 74 73 20 6f 66 20 | 6f 70 65 72 61 74 69 6f |ults of |operatio|
|000031f0| 6e 73 0a 58 20 20 20 4d | 75 6c 74 69 70 6c 69 65 |ns.X M|ultiplie|
|00003200| 64 4d 61 74 72 69 78 20 | 6f 70 65 72 61 74 6f 72 |dMatrix |operator|
|00003210| 2a 28 42 61 73 65 4d 61 | 74 72 69 78 26 29 3b 0a |*(BaseMa|trix&);.|
|00003220| 58 20 20 20 53 75 62 74 | 72 61 63 74 65 64 4d 61 |X Subt|ractedMa|
|00003230| 74 72 69 78 20 6f 70 65 | 72 61 74 6f 72 2d 28 42 |trix ope|rator-(B|
|00003240| 61 73 65 4d 61 74 72 69 | 78 26 29 3b 0a 58 20 20 |aseMatri|x&);.X |
|00003250| 20 53 68 69 66 74 65 64 | 4d 61 74 72 69 78 20 6f | Shifted|Matrix o|
|00003260| 70 65 72 61 74 6f 72 2b | 28 72 65 61 6c 29 3b 0a |perator+|(real);.|
|00003270| 58 20 20 20 53 63 61 6c | 65 64 4d 61 74 72 69 78 |X Scal|edMatrix|
|00003280| 20 6f 70 65 72 61 74 6f | 72 2a 28 72 65 61 6c 29 | operato|r*(real)|
|00003290| 3b 0a 58 20 20 20 53 63 | 61 6c 65 64 4d 61 74 72 |;.X Sc|aledMatr|
|000032a0| 69 78 20 6f 70 65 72 61 | 74 6f 72 2f 28 72 65 61 |ix opera|tor/(rea|
|000032b0| 6c 29 3b 0a 58 20 20 20 | 53 68 69 66 74 65 64 4d |l);.X |ShiftedM|
|000032c0| 61 74 72 69 78 20 6f 70 | 65 72 61 74 6f 72 2d 28 |atrix op|erator-(|
|000032d0| 72 65 61 6c 29 3b 0a 58 | 20 20 20 54 72 61 6e 73 |real);.X| Trans|
|000032e0| 70 6f 73 65 64 4d 61 74 | 72 69 78 20 74 28 29 3b |posedMat|rix t();|
|000032f0| 0a 58 20 20 20 4e 65 67 | 61 74 65 64 4d 61 74 72 |.X Neg|atedMatr|
|00003300| 69 78 20 6f 70 65 72 61 | 74 6f 72 2d 28 29 3b 20 |ix opera|tor-(); |
|00003310| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003320| 20 20 2f 2f 20 63 68 61 | 6e 67 65 20 73 69 67 6e | // cha|nge sign|
|00003330| 20 6f 66 20 65 6c 65 6d | 65 6e 74 73 0a 58 20 20 | of elem|ents.X |
|00003340| 20 49 6e 76 65 72 74 65 | 64 4d 61 74 72 69 78 20 | Inverte|dMatrix |
|00003350| 69 28 29 3b 0a 58 20 20 | 20 52 6f 77 65 64 4d 61 |i();.X | RowedMa|
|00003360| 74 72 69 78 20 43 6f 70 | 79 54 6f 52 6f 77 28 29 |trix Cop|yToRow()|
|00003370| 3b 0a 58 20 20 20 43 6f | 6c 65 64 4d 61 74 72 69 |;.X Co|ledMatri|
|00003380| 78 20 43 6f 70 79 54 6f | 43 6f 6c 75 6d 6e 28 29 |x CopyTo|Column()|
|00003390| 3b 0a 58 20 20 20 44 69 | 61 67 65 64 4d 61 74 72 |;.X Di|agedMatr|
|000033a0| 69 78 20 43 6f 70 79 54 | 6f 44 69 61 67 6f 6e 61 |ix CopyT|oDiagona|
|000033b0| 6c 28 29 3b 0a 58 20 20 | 20 4d 61 74 65 64 4d 61 |l();.X | MatedMa|
|000033c0| 74 72 69 78 20 43 6f 70 | 79 54 6f 4d 61 74 72 69 |trix Cop|yToMatri|
|000033d0| 78 28 69 6e 74 2c 69 6e | 74 29 3b 0a 58 20 20 20 |x(int,in|t);.X |
|000033e0| 47 65 74 53 75 62 4d 61 | 74 72 69 78 20 53 75 62 |GetSubMa|trix Sub|
|000033f0| 4d 61 74 72 69 78 28 69 | 6e 74 2c 69 6e 74 2c 69 |Matrix(i|nt,int,i|
|00003400| 6e 74 2c 69 6e 74 29 3b | 0a 58 20 20 20 47 65 74 |nt,int);|.X Get|
|00003410| 53 75 62 4d 61 74 72 69 | 78 20 53 79 6d 53 75 62 |SubMatri|x SymSub|
|00003420| 4d 61 74 72 69 78 28 69 | 6e 74 2c 69 6e 74 29 3b |Matrix(i|nt,int);|
|00003430| 0a 58 20 20 20 47 65 74 | 53 75 62 4d 61 74 72 69 |.X Get|SubMatri|
|00003440| 78 20 52 6f 77 28 69 6e | 74 29 3b 0a 58 20 20 20 |x Row(in|t);.X |
|00003450| 47 65 74 53 75 62 4d 61 | 74 72 69 78 20 52 6f 77 |GetSubMa|trix Row|
|00003460| 73 28 69 6e 74 2c 69 6e | 74 29 3b 0a 58 20 20 20 |s(int,in|t);.X |
|00003470| 47 65 74 53 75 62 4d 61 | 74 72 69 78 20 43 6f 6c |GetSubMa|trix Col|
|00003480| 75 6d 6e 28 69 6e 74 29 | 3b 0a 58 20 20 20 47 65 |umn(int)|;.X Ge|
|00003490| 74 53 75 62 4d 61 74 72 | 69 78 20 43 6f 6c 75 6d |tSubMatr|ix Colum|
|000034a0| 6e 73 28 69 6e 74 2c 69 | 6e 74 29 3b 0a 58 20 20 |ns(int,i|nt);.X |
|000034b0| 20 6f 70 65 72 61 74 6f | 72 20 72 65 61 6c 28 29 | operato|r real()|
|000034c0| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |; | |
|000034d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|000034e0| 63 6f 6e 76 65 72 73 69 | 6f 6e 20 6f 66 20 31 20 |conversi|on of 1 |
|000034f0| 78 20 31 20 6d 61 74 72 | 69 78 0a 58 20 20 20 76 |x 1 matr|ix.X v|
|00003500| 69 72 74 75 61 6c 20 4c | 6f 67 41 6e 64 53 69 67 |irtual L|ogAndSig|
|00003510| 6e 20 4c 6f 67 44 65 74 | 65 72 6d 69 6e 61 6e 74 |n LogDet|erminant|
|00003520| 28 29 3b 0a 58 20 20 20 | 76 69 72 74 75 61 6c 20 |();.X |virtual |
|00003530| 72 65 61 6c 20 53 75 6d | 53 71 75 61 72 65 28 29 |real Sum|Square()|
|00003540| 3b 0a 58 20 20 20 76 69 | 72 74 75 61 6c 20 72 65 |;.X vi|rtual re|
|00003550| 61 6c 20 53 75 6d 41 62 | 73 6f 6c 75 74 65 56 61 |al SumAb|soluteVa|
|00003560| 6c 75 65 28 29 3b 0a 58 | 20 20 20 76 69 72 74 75 |lue();.X| virtu|
|00003570| 61 6c 20 72 65 61 6c 20 | 4d 61 78 69 6d 75 6d 41 |al real |MaximumA|
|00003580| 62 73 6f 6c 75 74 65 56 | 61 6c 75 65 28 29 3b 0a |bsoluteV|alue();.|
|00003590| 58 20 20 20 76 69 72 74 | 75 61 6c 20 72 65 61 6c |X virt|ual real|
|000035a0| 20 54 72 61 63 65 28 29 | 3b 0a 58 20 20 20 72 65 | Trace()|;.X re|
|000035b0| 61 6c 20 4e 6f 72 6d 31 | 28 29 3b 0a 58 20 20 20 |al Norm1|();.X |
|000035c0| 72 65 61 6c 20 4e 6f 72 | 6d 49 6e 66 69 6e 69 74 |real Nor|mInfinit|
|000035d0| 79 28 29 3b 0a 58 0a 58 | 20 20 20 66 72 69 65 6e |y();.X.X| frien|
|000035e0| 64 20 47 65 6e 65 72 61 | 6c 4d 61 74 72 69 78 3b |d Genera|lMatrix;|
|000035f0| 0a 58 20 20 20 66 72 69 | 65 6e 64 20 4d 61 74 72 |.X fri|end Matr|
|00003600| 69 78 3b 0a 58 20 20 20 | 66 72 69 65 6e 64 20 6e |ix;.X |friend n|
|00003610| 72 69 63 4d 61 74 72 69 | 78 3b 0a 58 20 20 20 66 |ricMatri|x;.X f|
|00003620| 72 69 65 6e 64 20 52 6f | 77 56 65 63 74 6f 72 3b |riend Ro|wVector;|
|00003630| 0a 58 20 20 20 66 72 69 | 65 6e 64 20 43 6f 6c 75 |.X fri|end Colu|
|00003640| 6d 6e 56 65 63 74 6f 72 | 3b 0a 58 20 20 20 66 72 |mnVector|;.X fr|
|00003650| 69 65 6e 64 20 53 79 6d | 6d 65 74 72 69 63 4d 61 |iend Sym|metricMa|
|00003660| 74 72 69 78 3b 0a 58 20 | 20 20 66 72 69 65 6e 64 |trix;.X | friend|
|00003670| 20 55 70 70 65 72 54 72 | 69 61 6e 67 75 6c 61 72 | UpperTr|iangular|
|00003680| 4d 61 74 72 69 78 3b 0a | 58 20 20 20 66 72 69 65 |Matrix;.|X frie|
|00003690| 6e 64 20 4c 6f 77 65 72 | 54 72 69 61 6e 67 75 6c |nd Lower|Triangul|
|000036a0| 61 72 4d 61 74 72 69 78 | 3b 0a 58 20 20 20 66 72 |arMatrix|;.X fr|
|000036b0| 69 65 6e 64 20 44 69 61 | 67 6f 6e 61 6c 4d 61 74 |iend Dia|gonalMat|
|000036c0| 72 69 78 3b 0a 58 20 20 | 20 66 72 69 65 6e 64 20 |rix;.X | friend |
|000036d0| 43 72 6f 75 74 4d 61 74 | 72 69 78 3b 0a 58 20 20 |CroutMat|rix;.X |
|000036e0| 20 66 72 69 65 6e 64 20 | 41 64 64 65 64 4d 61 74 | friend |AddedMat|
|000036f0| 72 69 78 3b 0a 58 20 20 | 20 66 72 69 65 6e 64 20 |rix;.X | friend |
|00003700| 4d 75 6c 74 69 70 6c 69 | 65 64 4d 61 74 72 69 78 |Multipli|edMatrix|
|00003710| 3b 0a 58 20 20 20 66 72 | 69 65 6e 64 20 53 75 62 |;.X fr|iend Sub|
|00003720| 74 72 61 63 74 65 64 4d | 61 74 72 69 78 3b 0a 58 |tractedM|atrix;.X|
|00003730| 20 20 20 66 72 69 65 6e | 64 20 53 6f 6c 76 65 64 | frien|d Solved|
|00003740| 4d 61 74 72 69 78 3b 0a | 58 20 20 20 66 72 69 65 |Matrix;.|X frie|
|00003750| 6e 64 20 53 68 69 66 74 | 65 64 4d 61 74 72 69 78 |nd Shift|edMatrix|
|00003760| 3b 0a 58 20 20 20 66 72 | 69 65 6e 64 20 53 63 61 |;.X fr|iend Sca|
|00003770| 6c 65 64 4d 61 74 72 69 | 78 3b 0a 58 20 20 20 66 |ledMatri|x;.X f|
|00003780| 72 69 65 6e 64 20 54 72 | 61 6e 73 70 6f 73 65 64 |riend Tr|ansposed|
|00003790| 4d 61 74 72 69 78 3b 0a | 58 20 20 20 66 72 69 65 |Matrix;.|X frie|
|000037a0| 6e 64 20 4e 65 67 61 74 | 65 64 4d 61 74 72 69 78 |nd Negat|edMatrix|
|000037b0| 3b 0a 58 20 20 20 66 72 | 69 65 6e 64 20 49 6e 76 |;.X fr|iend Inv|
|000037c0| 65 72 74 65 64 4d 61 74 | 72 69 78 3b 0a 58 20 20 |ertedMat|rix;.X |
|000037d0| 20 66 72 69 65 6e 64 20 | 52 6f 77 65 64 4d 61 74 | friend |RowedMat|
|000037e0| 72 69 78 3b 0a 58 20 20 | 20 66 72 69 65 6e 64 20 |rix;.X | friend |
|000037f0| 43 6f 6c 65 64 4d 61 74 | 72 69 78 3b 0a 58 20 20 |ColedMat|rix;.X |
|00003800| 20 66 72 69 65 6e 64 20 | 44 69 61 67 65 64 4d 61 | friend |DiagedMa|
|00003810| 74 72 69 78 3b 0a 58 20 | 20 20 66 72 69 65 6e 64 |trix;.X | friend|
|00003820| 20 4d 61 74 65 64 4d 61 | 74 72 69 78 3b 0a 58 20 | MatedMa|trix;.X |
|00003830| 20 20 66 72 69 65 6e 64 | 20 47 65 74 53 75 62 4d | friend| GetSubM|
|00003840| 61 74 72 69 78 3b 0a 58 | 20 20 20 66 72 69 65 6e |atrix;.X| frien|
|00003850| 64 20 43 6f 6e 73 74 4d | 61 74 72 69 78 3b 0a 58 |d ConstM|atrix;.X|
|00003860| 20 20 20 66 72 69 65 6e | 64 20 52 65 74 75 72 6e | frien|d Return|
|00003870| 4d 61 74 72 69 78 3b 0a | 58 7d 3b 0a 58 0a 58 0a |Matrix;.|X};.X.X.|
|00003880| 58 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X/******|********|
|00003890| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000038a0| 2a 20 77 6f 72 6b 69 6e | 67 20 63 6c 61 73 73 65 |* workin|g classe|
|000038b0| 73 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |s ******|********|
|000038c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2f 0a 58 0a |********|****/.X.|
|000038d0| 58 63 6c 61 73 73 20 47 | 65 6e 65 72 61 6c 4d 61 |Xclass G|eneralMa|
|000038e0| 74 72 69 78 20 3a 20 70 | 75 62 6c 69 63 20 42 61 |trix : p|ublic Ba|
|000038f0| 73 65 4d 61 74 72 69 78 | 20 20 20 20 20 20 20 20 |seMatrix| |
|00003900| 20 2f 2f 20 64 65 63 6c | 61 72 61 62 6c 65 20 6d | // decl|arable m|
|00003910| 61 74 72 69 78 20 74 79 | 70 65 73 0a 58 7b 0a 58 |atrix ty|pes.X{.X|
|00003920| 70 72 6f 74 65 63 74 65 | 64 3a 0a 58 20 20 20 69 |protecte|d:.X i|
|00003930| 6e 74 20 74 61 67 3b 20 | 20 20 20 20 20 20 20 20 |nt tag; | |
|00003940| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003950| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 73 | | // s|
|00003960| 68 6f 77 73 20 77 68 65 | 74 68 65 72 20 63 61 6e |hows whe|ther can|
|00003970| 20 72 65 75 73 65 0a 58 | 20 20 20 69 6e 74 20 6e | reuse.X| int n|
|00003980| 72 6f 77 73 2c 20 6e 63 | 6f 6c 73 3b 20 20 20 20 |rows, nc|ols; |
|00003990| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000039a0| 20 20 20 20 20 20 20 20 | 2f 2f 20 64 69 6d 65 6e | |// dimen|
|000039b0| 73 69 6f 6e 73 0a 58 20 | 20 20 69 6e 74 20 73 74 |sions.X | int st|
|000039c0| 6f 72 61 67 65 3b 20 20 | 20 20 20 20 20 20 20 20 |orage; | |
|000039d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000039e0| 20 20 20 20 20 20 20 2f | 2f 20 74 6f 74 61 6c 20 | /|/ total |
|000039f0| 73 74 6f 72 65 20 72 65 | 71 75 69 72 65 64 0a 58 |store re|quired.X|
|00003a00| 20 20 20 72 65 61 6c 2a | 20 73 74 6f 72 65 3b 20 | real*| store; |
|00003a10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a30| 2f 2f 20 70 6f 69 6e 74 | 20 74 6f 20 73 74 6f 72 |// point| to stor|
|00003a40| 65 20 28 30 3d 6e 6f 74 | 20 73 65 74 29 0a 58 20 |e (0=not| set).X |
|00003a50| 20 20 47 65 6e 65 72 61 | 6c 4d 61 74 72 69 78 28 | Genera|lMatrix(|
|00003a60| 29 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |); | |
|00003a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|00003a80| 2f 20 69 6e 69 74 69 61 | 6c 69 73 65 20 77 69 74 |/ initia|lise wit|
|00003a90| 68 20 6e 6f 20 73 74 6f | 72 65 0a 58 20 20 20 47 |h no sto|re.X G|
|00003aa0| 65 6e 65 72 61 6c 4d 61 | 74 72 69 78 28 69 6e 74 |eneralMa|trix(int|
|00003ab0| 29 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |); | |
|00003ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 63 | | // c|
|00003ad0| 6f 6e 73 74 72 75 63 74 | 6f 72 20 67 65 74 74 69 |onstruct|or getti|
|00003ae0| 6e 67 20 73 74 6f 72 65 | 0a 58 20 20 20 76 6f 69 |ng store|.X voi|
|00003af0| 64 20 41 64 64 28 47 65 | 6e 65 72 61 6c 4d 61 74 |d Add(Ge|neralMat|
|00003b00| 72 69 78 2a 2c 20 72 65 | 61 6c 29 3b 20 20 20 20 |rix*, re|al); |
|00003b10| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 73 75 6d | | // sum|
|00003b20| 20 6f 66 20 47 4d 20 61 | 6e 64 20 72 65 61 6c 0a | of GM a|nd real.|
|00003b30| 58 20 20 20 76 6f 69 64 | 20 41 64 64 28 72 65 61 |X void| Add(rea|
|00003b40| 6c 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |l); | |
|00003b50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003b60| 20 2f 2f 20 61 64 64 20 | 72 65 61 6c 20 74 6f 20 | // add |real to |
|00003b70| 74 68 69 73 0a 58 20 20 | 20 76 6f 69 64 20 4d 75 |this.X | void Mu|
|00003b80| 6c 74 69 70 6c 79 28 47 | 65 6e 65 72 61 6c 4d 61 |ltiply(G|eneralMa|
|00003b90| 74 72 69 78 2a 2c 20 72 | 65 61 6c 29 3b 20 20 20 |trix*, r|eal); |
|00003ba0| 20 20 20 20 20 20 2f 2f | 20 70 72 6f 64 75 63 74 | //| product|
|00003bb0| 20 6f 66 20 47 4d 20 61 | 6e 64 20 72 65 61 6c 0a | of GM a|nd real.|
|00003bc0| 58 20 20 20 76 6f 69 64 | 20 4d 75 6c 74 69 70 6c |X void| Multipl|
|00003bd0| 79 28 72 65 61 6c 29 3b | 20 20 20 20 20 20 20 20 |y(real);| |
|00003be0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003bf0| 20 2f 2f 20 6d 75 6c 74 | 69 70 6c 79 20 74 68 69 | // mult|iply thi|
|00003c00| 73 20 62 79 20 72 65 61 | 6c 0a 58 20 20 20 76 6f |s by rea|l.X vo|
|00003c10| 69 64 20 4e 65 67 61 74 | 65 28 47 65 6e 65 72 61 |id Negat|e(Genera|
|00003c20| 6c 4d 61 74 72 69 78 2a | 29 3b 20 20 20 20 20 20 |lMatrix*|); |
|00003c30| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 63 68 | | // ch|
|00003c40| 61 6e 67 65 20 73 69 67 | 6e 0a 58 20 20 20 76 6f |ange sig|n.X vo|
|00003c50| 69 64 20 4e 65 67 61 74 | 65 28 29 3b 20 20 20 20 |id Negat|e(); |
|00003c60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003c70| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 63 68 | | // ch|
|00003c80| 61 6e 67 65 20 73 69 67 | 6e 0a 58 20 20 20 76 6f |ange sig|n.X vo|
|00003c90| 69 64 20 6f 70 65 72 61 | 74 6f 72 3d 28 72 65 61 |id opera|tor=(rea|
|00003ca0| 6c 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |l); | |
|00003cb0| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 73 65 | | // se|
|00003cc0| 74 20 6d 61 74 72 69 78 | 20 74 6f 20 63 6f 6e 73 |t matrix| to cons|
|00003cd0| 74 61 6e 74 0a 58 20 20 | 20 72 65 61 6c 2a 20 47 |tant.X | real* G|
|00003ce0| 65 74 53 74 6f 72 65 28 | 29 3b 20 20 20 20 20 20 |etStore(|); |
|00003cf0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003d00| 20 20 20 20 20 20 2f 2f | 20 67 65 74 20 73 74 6f | //| get sto|
|00003d10| 72 65 20 6f 72 20 63 6f | 70 79 0a 58 20 20 20 47 |re or co|py.X G|
|00003d20| 65 6e 65 72 61 6c 4d 61 | 74 72 69 78 2a 20 42 6f |eneralMa|trix* Bo|
|00003d30| 72 72 6f 77 53 74 6f 72 | 65 28 47 65 6e 65 72 61 |rrowStor|e(Genera|
|00003d40| 6c 4d 61 74 72 69 78 2a | 2c 20 4d 61 74 72 69 78 |lMatrix*|, Matrix|
|00003d50| 54 79 70 65 29 3b 0a 58 | 20 20 20 20 20 20 20 20 |Type);.X| |
|00003d60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003d70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003d80| 20 20 20 20 20 20 20 20 | 2f 2f 20 74 65 6d 70 6f | |// tempo|
|00003d90| 72 61 72 69 6c 79 20 61 | 63 63 65 73 73 20 73 74 |rarily a|ccess st|
|00003da0| 6f 72 65 0a 58 20 20 20 | 76 6f 69 64 20 47 65 74 |ore.X |void Get|
|00003db0| 4d 61 74 72 69 78 28 47 | 65 6e 65 72 61 6c 4d 61 |Matrix(G|eneralMa|
|00003dc0| 74 72 69 78 2a 29 3b 20 | 20 20 20 20 20 20 20 20 |trix*); | |
|00003dd0| 20 20 20 20 20 2f 2f 20 | 75 73 65 64 20 62 79 20 | // |used by |
|00003de0| 3d 20 61 6e 64 20 69 6e | 69 74 69 61 6c 69 73 65 |= and in|itialise|
|00003df0| 0a 58 23 69 66 6e 64 65 | 66 20 5f 5f 5a 54 43 5f |.X#ifnde|f __ZTC_|
|00003e00| 5f 0a 58 20 20 20 76 6f | 69 64 20 47 65 74 4d 61 |_.X vo|id GetMa|
|00003e10| 74 72 69 78 43 28 63 6f | 6e 73 74 20 47 65 6e 65 |trixC(co|nst Gene|
|00003e20| 72 61 6c 4d 61 74 72 69 | 78 2a 29 3b 20 20 20 20 |ralMatri|x*); |
|00003e30| 20 20 20 2f 2f 20 75 73 | 65 64 20 62 79 20 3d 20 | // us|ed by = |
|00003e40| 61 6e 64 20 69 6e 69 74 | 69 61 6c 69 73 65 0a 58 |and init|ialise.X|
|00003e50| 23 65 6e 64 69 66 0a 58 | 20 20 20 76 6f 69 64 20 |#endif.X| void |
|00003e60| 45 71 28 42 61 73 65 4d | 61 74 72 69 78 26 2c 20 |Eq(BaseM|atrix&, |
|00003e70| 4d 61 74 72 69 78 54 79 | 70 65 29 3b 20 20 20 20 |MatrixTy|pe); |
|00003e80| 20 20 20 20 20 20 20 20 | 2f 2f 20 75 73 65 64 20 | |// used |
|00003e90| 62 79 20 3d 0a 58 20 20 | 20 69 6e 74 20 73 65 61 |by =.X | int sea|
|00003ea0| 72 63 68 28 63 6f 6e 73 | 74 20 47 65 6e 65 72 61 |rch(cons|t Genera|
|00003eb0| 6c 4d 61 74 72 69 78 2a | 29 20 63 6f 6e 73 74 3b |lMatrix*|) const;|
|00003ec0| 0a 58 20 20 20 76 69 72 | 74 75 61 6c 20 47 65 6e |.X vir|tual Gen|
|00003ed0| 65 72 61 6c 4d 61 74 72 | 69 78 2a 20 54 72 61 6e |eralMatr|ix* Tran|
|00003ee0| 73 70 6f 73 65 28 4d 61 | 74 72 69 78 54 79 70 65 |spose(Ma|trixType|
|00003ef0| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 43 68 65 63 |);.X v|oid Chec|
|00003f00| 6b 43 6f 6e 76 65 72 73 | 69 6f 6e 28 63 6f 6e 73 |kConvers|ion(cons|
|00003f10| 74 20 42 61 73 65 4d 61 | 74 72 69 78 26 29 3b 20 |t BaseMa|trix&); |
|00003f20| 20 20 20 20 2f 2f 20 63 | 68 65 63 6b 20 63 6f 6e | // c|heck con|
|00003f30| 76 65 72 73 69 6f 6e 20 | 4f 4b 0a 58 20 20 20 76 |version |OK.X v|
|00003f40| 6f 69 64 20 52 65 44 69 | 6d 65 6e 73 69 6f 6e 28 |oid ReDi|mension(|
|00003f50| 69 6e 74 2c 20 69 6e 74 | 2c 20 69 6e 74 29 3b 20 |int, int|, int); |
|00003f60| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 63 | | // c|
|00003f70| 68 61 6e 67 65 20 64 69 | 6d 65 6e 73 69 6f 6e 73 |hange di|mensions|
|00003f80| 0a 58 20 20 20 69 6e 74 | 20 4e 72 6f 77 73 56 28 |.X int| NrowsV(|
|00003f90| 29 20 63 6f 6e 73 74 3b | 20 20 20 20 20 20 20 20 |) const;| |
|00003fa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003fb0| 20 20 2f 2f 20 67 65 74 | 20 64 69 6d 65 6e 73 69 | // get| dimensi|
|00003fc0| 6f 6e 73 0a 58 20 20 20 | 69 6e 74 20 4e 63 6f 6c |ons.X |int Ncol|
|00003fd0| 73 56 28 29 20 63 6f 6e | 73 74 3b 20 20 20 20 20 |sV() con|st; |
|00003fe0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003ff0| 20 20 20 20 20 2f 2f 20 | 76 69 72 74 75 61 6c 20 | // |virtual |
|00004000| 76 65 72 73 69 6f 6e 0a | 58 70 75 62 6c 69 63 3a |version.|Xpublic:|
|00004010| 0a 58 20 20 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |.X Gen|eralMatr|
|00004020| 69 78 2a 20 45 76 61 6c | 75 61 74 65 28 4d 61 74 |ix* Eval|uate(Mat|
|00004030| 72 69 78 54 79 70 65 29 | 3b 0a 58 20 20 20 4d 61 |rixType)|;.X Ma|
|00004040| 74 72 69 78 54 79 70 65 | 20 54 79 70 65 28 29 20 |trixType| Type() |
|00004050| 63 6f 6e 73 74 20 3d 20 | 30 3b 20 20 20 20 20 20 |const = |0; |
|00004060| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 74 79 | | // ty|
|00004070| 70 65 20 6f 66 20 61 20 | 6d 61 74 72 69 78 0a 58 |pe of a |matrix.X|
|00004080| 20 20 20 69 6e 74 20 4e | 72 6f 77 73 28 29 20 63 | int N|rows() c|
|00004090| 6f 6e 73 74 20 7b 20 72 | 65 74 75 72 6e 20 6e 72 |onst { r|eturn nr|
|000040a0| 6f 77 73 3b 20 7d 20 20 | 20 20 20 20 20 20 20 20 |ows; } | |
|000040b0| 2f 2f 20 67 65 74 20 64 | 69 6d 65 6e 73 69 6f 6e |// get d|imension|
|000040c0| 73 0a 58 20 20 20 69 6e | 74 20 4e 63 6f 6c 73 28 |s.X in|t Ncols(|
|000040d0| 29 20 63 6f 6e 73 74 20 | 7b 20 72 65 74 75 72 6e |) const |{ return|
|000040e0| 20 6e 63 6f 6c 73 3b 20 | 7d 0a 58 20 20 20 69 6e | ncols; |}.X in|
|000040f0| 74 20 53 74 6f 72 61 67 | 65 28 29 20 63 6f 6e 73 |t Storag|e() cons|
|00004100| 74 20 7b 20 72 65 74 75 | 72 6e 20 73 74 6f 72 61 |t { retu|rn stora|
|00004110| 67 65 3b 20 7d 0a 58 20 | 20 20 72 65 61 6c 2a 20 |ge; }.X | real* |
|00004120| 53 74 6f 72 65 28 29 20 | 63 6f 6e 73 74 20 7b 20 |Store() |const { |
|00004130| 72 65 74 75 72 6e 20 73 | 74 6f 72 65 3b 20 7d 0a |return s|tore; }.|
|00004140| 58 20 20 20 76 69 72 74 | 75 61 6c 20 7e 47 65 6e |X virt|ual ~Gen|
|00004150| 65 72 61 6c 4d 61 74 72 | 69 78 28 29 3b 20 20 20 |eralMatr|ix(); |
|00004160| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004170| 20 2f 2f 20 64 65 6c 65 | 74 65 20 73 74 6f 72 65 | // dele|te store|
|00004180| 20 69 66 20 73 65 74 0a | 58 20 20 20 76 6f 69 64 | if set.|X void|
|00004190| 20 74 44 65 6c 65 74 65 | 28 29 3b 20 20 20 20 20 | tDelete|(); |
|000041a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000041b0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 64 65 6c 65 | | // dele|
|000041c0| 74 65 20 69 66 20 74 61 | 67 20 70 65 72 6d 69 74 |te if ta|g permit|
|000041d0| 73 0a 58 20 20 20 42 4f | 4f 4c 20 72 65 75 73 65 |s.X BO|OL reuse|
|000041e0| 28 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |(); | |
|000041f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004200| 20 20 20 2f 2f 20 54 52 | 55 45 20 69 66 20 74 61 | // TR|UE if ta|
|00004210| 67 20 61 6c 6c 6f 77 73 | 20 72 65 75 73 65 0a 58 |g allows| reuse.X|
|00004220| 20 20 20 76 6f 69 64 20 | 50 72 6f 74 65 63 74 28 | void |Protect(|
|00004230| 29 20 7b 20 74 61 67 3d | 2d 31 3b 20 7d 20 20 20 |) { tag=|-1; } |
|00004240| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004250| 2f 2f 20 63 61 6e 27 74 | 20 64 65 6c 65 74 65 20 |// can't| delete |
|00004260| 6f 72 20 72 65 75 73 65 | 0a 58 20 20 20 69 6e 74 |or reuse|.X int|
|00004270| 20 54 61 67 28 29 20 63 | 6f 6e 73 74 20 7b 20 72 | Tag() c|onst { r|
|00004280| 65 74 75 72 6e 20 74 61 | 67 3b 20 7d 0a 58 20 20 |eturn ta|g; }.X |
|00004290| 20 42 4f 4f 4c 20 49 73 | 5a 65 72 6f 28 29 20 63 | BOOL Is|Zero() c|
|000042a0| 6f 6e 73 74 3b 20 20 20 | 20 20 20 20 20 20 20 20 |onst; | |
|000042b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f | | //|
|000042c0| 20 74 65 73 74 20 6d 61 | 74 72 69 78 20 68 61 73 | test ma|trix has|
|000042d0| 20 61 6c 6c 20 7a 65 72 | 6f 73 0a 58 20 20 20 76 | all zer|os.X v|
|000042e0| 6f 69 64 20 52 65 6c 65 | 61 73 65 28 29 20 7b 20 |oid Rele|ase() { |
|000042f0| 74 61 67 3d 31 3b 20 7d | 20 20 20 20 20 20 20 20 |tag=1; }| |
|00004300| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 64 | | // d|
|00004310| 65 6c 20 73 74 6f 72 65 | 20 61 66 74 65 72 20 6e |el store| after n|
|00004320| 65 78 74 20 75 73 65 0a | 58 20 20 20 76 6f 69 64 |ext use.|X void|
|00004330| 20 52 65 6c 65 61 73 65 | 28 69 6e 74 20 74 29 20 | Release|(int t) |
|00004340| 7b 20 74 61 67 3d 74 3b | 20 7d 20 20 20 20 20 20 |{ tag=t;| } |
|00004350| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 64 65 6c 20 | | // del |
|00004360| 73 74 6f 72 65 20 61 66 | 74 65 72 20 74 20 61 63 |store af|ter t ac|
|00004370| 63 65 73 73 65 73 0a 58 | 20 20 20 76 6f 69 64 20 |cesses.X| void |
|00004380| 52 65 6c 65 61 73 65 41 | 6e 64 44 65 6c 65 74 65 |ReleaseA|ndDelete|
|00004390| 28 29 20 7b 20 74 61 67 | 3d 30 3b 20 7d 20 20 20 |() { tag|=0; } |
|000043a0| 20 20 20 20 20 20 20 20 | 2f 2f 20 64 65 6c 65 74 | |// delet|
|000043b0| 65 20 6d 61 74 72 69 78 | 20 61 66 74 65 72 20 75 |e matrix| after u|
|000043c0| 73 65 0a 58 20 20 20 76 | 6f 69 64 20 6f 70 65 72 |se.X v|oid oper|
|000043d0| 61 74 6f 72 3c 3c 28 63 | 6f 6e 73 74 20 72 65 61 |ator<<(c|onst rea|
|000043e0| 6c 2a 29 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |l*); | |
|000043f0| 20 20 20 20 2f 2f 20 61 | 73 73 69 67 6e 6d 65 6e | // a|ssignmen|
|00004400| 74 20 66 72 6f 6d 20 61 | 6e 20 61 72 72 61 79 0a |t from a|n array.|
|00004410| 58 20 20 20 76 6f 69 64 | 20 6f 70 65 72 61 74 6f |X void| operato|
|00004420| 72 3c 3c 28 42 61 73 65 | 4d 61 74 72 69 78 26 20 |r<<(Base|Matrix& |
|00004430| 58 29 20 7b 20 45 71 28 | 58 2c 74 68 69 73 2d 3e |X) { Eq(|X,this->|
|00004440| 54 79 70 65 28 29 29 3b | 20 7d 0a 58 20 20 20 20 |Type());| }.X |
|00004450| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004460| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004470| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 3d | | // =|
|00004480| 20 77 69 74 68 6f 75 74 | 20 63 68 65 63 6b 69 6e | without| checkin|
|00004490| 67 20 74 79 70 65 0a 58 | 20 20 20 76 6f 69 64 20 |g type.X| void |
|000044a0| 49 6e 6a 65 63 74 28 63 | 6f 6e 73 74 20 47 65 6e |Inject(c|onst Gen|
|000044b0| 65 72 61 6c 4d 61 74 72 | 69 78 26 29 3b 20 20 20 |eralMatr|ix&); |
|000044c0| 20 20 20 20 20 20 20 20 | 2f 2f 20 63 6f 70 79 20 | |// copy |
|000044d0| 73 74 6f 72 65 64 20 65 | 6c 73 20 6f 6e 6c 79 0a |stored e|ls only.|
|000044e0| 58 20 20 20 76 69 72 74 | 75 61 6c 20 47 65 6e 65 |X virt|ual Gene|
|000044f0| 72 61 6c 4d 61 74 72 69 | 78 2a 20 4d 61 6b 65 53 |ralMatri|x* MakeS|
|00004500| 6f 6c 76 65 72 28 29 3b | 20 20 20 20 20 20 20 20 |olver();| |
|00004510| 20 2f 2f 20 66 6f 72 20 | 73 6f 6c 76 69 6e 67 0a | // for |solving.|
|00004520| 58 20 20 20 76 69 72 74 | 75 61 6c 20 76 6f 69 64 |X virt|ual void|
|00004530| 20 53 6f 6c 76 65 72 28 | 4d 61 74 72 69 78 52 6f | Solver(|MatrixRo|
|00004540| 77 43 6f 6c 26 2c 20 63 | 6f 6e 73 74 20 4d 61 74 |wCol&, c|onst Mat|
|00004550| 72 69 78 52 6f 77 43 6f | 6c 26 29 20 7b 7d 0a 58 |rixRowCo|l&) {}.X|
|00004560| 20 20 20 76 69 72 74 75 | 61 6c 20 76 6f 69 64 20 | virtu|al void |
|00004570| 47 65 74 52 6f 77 28 4d | 61 74 72 69 78 52 6f 77 |GetRow(M|atrixRow|
|00004580| 43 6f 6c 26 29 20 3d 20 | 30 3b 20 20 20 20 20 20 |Col&) = |0; |
|00004590| 2f 2f 20 47 65 74 20 6d | 61 74 72 69 78 20 72 6f |// Get m|atrix ro|
|000045a0| 77 0a 58 20 20 20 76 69 | 72 74 75 61 6c 20 76 6f |w.X vi|rtual vo|
|000045b0| 69 64 20 52 65 73 74 6f | 72 65 52 6f 77 28 4d 61 |id Resto|reRow(Ma|
|000045c0| 74 72 69 78 52 6f 77 43 | 6f 6c 26 29 20 7b 7d 20 |trixRowC|ol&) {} |
|000045d0| 20 20 20 2f 2f 20 52 65 | 73 74 6f 72 65 20 6d 61 | // Re|store ma|
|000045e0| 74 72 69 78 20 72 6f 77 | 0a 58 20 20 20 76 69 72 |trix row|.X vir|
|000045f0| 74 75 61 6c 20 76 6f 69 | 64 20 4e 65 78 74 52 6f |tual voi|d NextRo|
|00004600| 77 28 4d 61 74 72 69 78 | 52 6f 77 43 6f 6c 26 29 |w(Matrix|RowCol&)|
|00004610| 3b 20 20 20 20 20 20 20 | 20 20 2f 2f 20 47 6f 20 |; | // Go |
|00004620| 74 6f 20 6e 65 78 74 20 | 72 6f 77 0a 58 20 20 20 |to next |row.X |
|00004630| 76 69 72 74 75 61 6c 20 | 76 6f 69 64 20 47 65 74 |virtual |void Get|
|00004640| 43 6f 6c 28 4d 61 74 72 | 69 78 52 6f 77 43 6f 6c |Col(Matr|ixRowCol|
|00004650| 26 29 20 3d 20 30 3b 20 | 20 20 20 20 20 2f 2f 20 |&) = 0; | // |
|00004660| 47 65 74 20 6d 61 74 72 | 69 78 20 63 6f 6c 0a 58 |Get matr|ix col.X|
|00004670| 20 20 20 76 69 72 74 75 | 61 6c 20 76 6f 69 64 20 | virtu|al void |
|00004680| 52 65 73 74 6f 72 65 43 | 6f 6c 28 4d 61 74 72 69 |RestoreC|ol(Matri|
|00004690| 78 52 6f 77 43 6f 6c 26 | 29 20 7b 7d 20 20 20 20 |xRowCol&|) {} |
|000046a0| 2f 2f 20 52 65 73 74 6f | 72 65 20 6d 61 74 72 69 |// Resto|re matri|
|000046b0| 78 20 63 6f 6c 0a 58 20 | 20 20 76 69 72 74 75 61 |x col.X | virtua|
|000046c0| 6c 20 76 6f 69 64 20 4e | 65 78 74 43 6f 6c 28 4d |l void N|extCol(M|
|000046d0| 61 74 72 69 78 52 6f 77 | 43 6f 6c 26 29 3b 20 20 |atrixRow|Col&); |
|000046e0| 20 20 20 20 20 20 20 2f | 2f 20 47 6f 20 74 6f 20 | /|/ Go to |
|000046f0| 6e 65 78 74 20 63 6f 6c | 0a 58 20 20 20 72 65 61 |next col|.X rea|
|00004700| 6c 20 53 75 6d 53 71 75 | 61 72 65 28 29 3b 0a 58 |l SumSqu|are();.X|
|00004710| 20 20 20 72 65 61 6c 20 | 53 75 6d 41 62 73 6f 6c | real |SumAbsol|
|00004720| 75 74 65 56 61 6c 75 65 | 28 29 3b 0a 58 20 20 20 |uteValue|();.X |
|00004730| 72 65 61 6c 20 4d 61 78 | 69 6d 75 6d 41 62 73 6f |real Max|imumAbso|
|00004740| 6c 75 74 65 56 61 6c 75 | 65 28 29 3b 0a 58 20 20 |luteValu|e();.X |
|00004750| 20 4c 6f 67 41 6e 64 53 | 69 67 6e 20 4c 6f 67 44 | LogAndS|ign LogD|
|00004760| 65 74 65 72 6d 69 6e 61 | 6e 74 28 29 3b 0a 58 20 |etermina|nt();.X |
|00004770| 20 20 43 6f 6e 73 74 4d | 61 74 72 69 78 20 63 28 | ConstM|atrix c(|
|00004780| 29 20 63 6f 6e 73 74 3b | 20 20 20 20 20 20 20 20 |) const;| |
|00004790| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|000047a0| 2f 20 74 6f 20 61 63 63 | 65 73 73 20 63 6f 6e 73 |/ to acc|ess cons|
|000047b0| 74 61 6e 74 20 6d 61 74 | 72 69 63 65 73 0a 58 20 |tant mat|rices.X |
|000047c0| 20 20 76 6f 69 64 20 43 | 68 65 63 6b 53 74 6f 72 | void C|heckStor|
|000047d0| 65 28 29 20 63 6f 6e 73 | 74 3b 20 20 20 20 20 20 |e() cons|t; |
|000047e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|000047f0| 2f 20 63 68 65 63 6b 20 | 73 74 6f 72 65 20 69 73 |/ check |store is|
|00004800| 20 6e 6f 6e 2d 7a 65 72 | 6f 0a 58 0a 58 20 20 20 | non-zer|o.X.X |
|00004810| 66 72 69 65 6e 64 20 4d | 61 74 72 69 78 3b 0a 58 |friend M|atrix;.X|
|00004820| 20 20 20 66 72 69 65 6e | 64 20 6e 72 69 63 4d 61 | frien|d nricMa|
|00004830| 74 72 69 78 3b 0a 58 20 | 20 20 66 72 69 65 6e 64 |trix;.X | friend|
|00004840| 20 53 79 6d 6d 65 74 72 | 69 63 4d 61 74 72 69 78 | Symmetr|icMatrix|
|00004850| 3b 0a 58 20 20 20 66 72 | 69 65 6e 64 20 55 70 70 |;.X fr|iend Upp|
|00004860| 65 72 54 72 69 61 6e 67 | 75 6c 61 72 4d 61 74 72 |erTriang|ularMatr|
|00004870| 69 78 3b 0a 58 20 20 20 | 66 72 69 65 6e 64 20 4c |ix;.X |friend L|
|00004880| 6f 77 65 72 54 72 69 61 | 6e 67 75 6c 61 72 4d 61 |owerTria|ngularMa|
|00004890| 74 72 69 78 3b 0a 58 20 | 20 20 66 72 69 65 6e 64 |trix;.X | friend|
|000048a0| 20 44 69 61 67 6f 6e 61 | 6c 4d 61 74 72 69 78 3b | Diagona|lMatrix;|
|000048b0| 0a 58 20 20 20 66 72 69 | 65 6e 64 20 43 72 6f 75 |.X fri|end Crou|
|000048c0| 74 4d 61 74 72 69 78 3b | 0a 58 20 20 20 66 72 69 |tMatrix;|.X fri|
|000048d0| 65 6e 64 20 52 6f 77 56 | 65 63 74 6f 72 3b 0a 58 |end RowV|ector;.X|
|000048e0| 20 20 20 66 72 69 65 6e | 64 20 43 6f 6c 75 6d 6e | frien|d Column|
|000048f0| 56 65 63 74 6f 72 3b 0a | 58 20 20 20 66 72 69 65 |Vector;.|X frie|
|00004900| 6e 64 20 42 61 73 65 4d | 61 74 72 69 78 3b 0a 58 |nd BaseM|atrix;.X|
|00004910| 20 20 20 66 72 69 65 6e | 64 20 41 64 64 65 64 4d | frien|d AddedM|
|00004920| 61 74 72 69 78 3b 0a 58 | 20 20 20 66 72 69 65 6e |atrix;.X| frien|
|00004930| 64 20 4d 75 6c 74 69 70 | 6c 69 65 64 4d 61 74 72 |d Multip|liedMatr|
|00004940| 69 78 3b 0a 58 20 20 20 | 66 72 69 65 6e 64 20 53 |ix;.X |friend S|
|00004950| 75 62 74 72 61 63 74 65 | 64 4d 61 74 72 69 78 3b |ubtracte|dMatrix;|
|00004960| 0a 58 20 20 20 66 72 69 | 65 6e 64 20 53 6f 6c 76 |.X fri|end Solv|
|00004970| 65 64 4d 61 74 72 69 78 | 3b 0a 58 20 20 20 66 72 |edMatrix|;.X fr|
|00004980| 69 65 6e 64 20 53 68 69 | 66 74 65 64 4d 61 74 72 |iend Shi|ftedMatr|
|00004990| 69 78 3b 0a 58 20 20 20 | 66 72 69 65 6e 64 20 53 |ix;.X |friend S|
|000049a0| 63 61 6c 65 64 4d 61 74 | 72 69 78 3b 0a 58 20 20 |caledMat|rix;.X |
|000049b0| 20 66 72 69 65 6e 64 20 | 54 72 61 6e 73 70 6f 73 | friend |Transpos|
|000049c0| 65 64 4d 61 74 72 69 78 | 3b 0a 58 20 20 20 66 72 |edMatrix|;.X fr|
|000049d0| 69 65 6e 64 20 4e 65 67 | 61 74 65 64 4d 61 74 72 |iend Neg|atedMatr|
|000049e0| 69 78 3b 0a 58 20 20 20 | 66 72 69 65 6e 64 20 49 |ix;.X |friend I|
|000049f0| 6e 76 65 72 74 65 64 4d | 61 74 72 69 78 3b 0a 58 |nvertedM|atrix;.X|
|00004a00| 20 20 20 66 72 69 65 6e | 64 20 52 6f 77 65 64 4d | frien|d RowedM|
|00004a10| 61 74 72 69 78 3b 0a 58 | 20 20 20 66 72 69 65 6e |atrix;.X| frien|
|00004a20| 64 20 43 6f 6c 65 64 4d | 61 74 72 69 78 3b 0a 58 |d ColedM|atrix;.X|
|00004a30| 20 20 20 66 72 69 65 6e | 64 20 44 69 61 67 65 64 | frien|d Diaged|
|00004a40| 4d 61 74 72 69 78 3b 0a | 58 20 20 20 66 72 69 65 |Matrix;.|X frie|
|00004a50| 6e 64 20 4d 61 74 65 64 | 4d 61 74 72 69 78 3b 0a |nd Mated|Matrix;.|
|00004a60| 58 20 20 20 66 72 69 65 | 6e 64 20 47 65 74 53 75 |X frie|nd GetSu|
|00004a70| 62 4d 61 74 72 69 78 3b | 0a 58 20 20 20 66 72 69 |bMatrix;|.X fri|
|00004a80| 65 6e 64 20 43 6f 6e 73 | 74 4d 61 74 72 69 78 3b |end Cons|tMatrix;|
|00004a90| 0a 58 20 20 20 66 72 69 | 65 6e 64 20 52 65 74 75 |.X fri|end Retu|
|00004aa0| 72 6e 4d 61 74 72 69 78 | 3b 0a 58 7d 3b 0a 58 0a |rnMatrix|;.X};.X.|
|00004ab0| 58 63 6c 61 73 73 20 4d | 61 74 72 69 78 20 3a 20 |Xclass M|atrix : |
|00004ac0| 70 75 62 6c 69 63 20 47 | 65 6e 65 72 61 6c 4d 61 |public G|eneralMa|
|00004ad0| 74 72 69 78 20 20 20 20 | 20 20 20 20 20 20 20 20 |trix | |
|00004ae0| 20 2f 2f 20 75 73 75 61 | 6c 20 72 65 63 74 61 6e | // usua|l rectan|
|00004af0| 67 75 6c 61 72 20 6d 61 | 74 72 69 78 0a 58 7b 0a |gular ma|trix.X{.|
|00004b00| 58 70 75 62 6c 69 63 3a | 0a 58 20 20 20 4d 61 74 |Xpublic:|.X Mat|
|00004b10| 72 69 78 28 29 20 7b 7d | 0a 58 20 20 20 4d 61 74 |rix() {}|.X Mat|
|00004b20| 72 69 78 28 69 6e 74 2c | 20 69 6e 74 29 3b 20 20 |rix(int,| int); |
|00004b30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004b40| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 73 74 61 | | // sta|
|00004b50| 6e 64 61 72 64 20 64 65 | 63 6c 61 72 61 74 69 6f |ndard de|claratio|
|00004b60| 6e 0a 58 20 20 20 4d 61 | 74 72 69 78 28 42 61 73 |n.X Ma|trix(Bas|
|00004b70| 65 4d 61 74 72 69 78 26 | 29 3b 20 20 20 20 20 20 |eMatrix&|); |
|00004b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004b90| 20 20 20 2f 2f 20 65 76 | 61 6c 75 61 74 65 20 42 | // ev|aluate B|
|00004ba0| 61 73 65 4d 61 74 72 69 | 78 0a 58 20 20 20 76 6f |aseMatri|x.X vo|
|00004bb0| 69 64 20 6f 70 65 72 61 | 74 6f 72 3d 28 42 61 73 |id opera|tor=(Bas|
|00004bc0| 65 4d 61 74 72 69 78 26 | 29 3b 0a 58 20 20 20 76 |eMatrix&|);.X v|
|00004bd0| 6f 69 64 20 6f 70 65 72 | 61 74 6f 72 3d 28 72 65 |oid oper|ator=(re|
|00004be0| 61 6c 20 66 29 20 7b 20 | 47 65 6e 65 72 61 6c 4d |al f) { |GeneralM|
|00004bf0| 61 74 72 69 78 3a 3a 6f | 70 65 72 61 74 6f 72 3d |atrix::o|perator=|
|00004c00| 28 66 29 3b 20 7d 0a 58 | 20 20 20 4d 61 74 72 69 |(f); }.X| Matri|
|00004c10| 78 54 79 70 65 20 54 79 | 70 65 28 29 20 63 6f 6e |xType Ty|pe() con|
|00004c20| 73 74 3b 0a 58 20 20 20 | 72 65 61 6c 26 20 6f 70 |st;.X |real& op|
|00004c30| 65 72 61 74 6f 72 28 29 | 28 69 6e 74 2c 20 69 6e |erator()|(int, in|
|00004c40| 74 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |t); | |
|00004c50| 20 20 20 20 20 2f 2f 20 | 61 63 63 65 73 73 20 65 | // |access e|
|00004c60| 6c 65 6d 65 6e 74 0a 58 | 20 20 20 72 65 61 6c 26 |lement.X| real&|
|00004c70| 20 65 6c 65 6d 65 6e 74 | 28 69 6e 74 2c 20 69 6e | element|(int, in|
|00004c80| 74 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |t); | |
|00004c90| 20 20 20 20 20 20 20 20 | 2f 2f 20 61 63 63 65 73 | |// acces|
|00004ca0| 73 20 65 6c 65 6d 65 6e | 74 0a 58 20 20 20 4d 61 |s elemen|t.X Ma|
|00004cb0| 74 72 69 78 28 4d 61 74 | 72 69 78 26 20 67 6d 29 |trix(Mat|rix& gm)|
|00004cc0| 20 7b 20 47 65 74 4d 61 | 74 72 69 78 28 26 67 6d | { GetMa|trix(&gm|
|00004cd0| 29 3b 20 7d 0a 58 23 69 | 66 6e 64 65 66 20 5f 5f |); }.X#i|fndef __|
|00004ce0| 5a 54 43 5f 5f 0a 58 20 | 20 20 72 65 61 6c 20 6f |ZTC__.X | real o|
|00004cf0| 70 65 72 61 74 6f 72 28 | 29 28 69 6e 74 2c 20 69 |perator(|)(int, i|
|00004d00| 6e 74 29 20 63 6f 6e 73 | 74 3b 20 20 20 20 20 20 |nt) cons|t; |
|00004d10| 20 20 20 20 20 20 20 2f | 2f 20 61 63 63 65 73 73 | /|/ access|
|00004d20| 20 65 6c 65 6d 65 6e 74 | 0a 58 20 20 20 4d 61 74 | element|.X Mat|
|00004d30| 72 69 78 28 63 6f 6e 73 | 74 20 4d 61 74 72 69 78 |rix(cons|t Matrix|
|00004d40| 26 20 67 6d 29 20 7b 20 | 47 65 74 4d 61 74 72 69 |& gm) { |GetMatri|
|00004d50| 78 43 28 26 67 6d 29 3b | 20 7d 0a 58 23 65 6e 64 |xC(&gm);| }.X#end|
|00004d60| 69 66 0a 58 20 20 20 47 | 65 6e 65 72 61 6c 4d 61 |if.X G|eneralMa|
|00004d70| 74 72 69 78 2a 20 4d 61 | 6b 65 53 6f 6c 76 65 72 |trix* Ma|keSolver|
|00004d80| 28 29 3b 0a 58 20 20 20 | 72 65 61 6c 20 54 72 61 |();.X |real Tra|
|00004d90| 63 65 28 29 3b 0a 58 20 | 20 20 76 6f 69 64 20 47 |ce();.X | void G|
|00004da0| 65 74 52 6f 77 28 4d 61 | 74 72 69 78 52 6f 77 43 |etRow(Ma|trixRowC|
|00004db0| 6f 6c 26 29 3b 0a 58 20 | 20 20 76 6f 69 64 20 47 |ol&);.X | void G|
|00004dc0| 65 74 43 6f 6c 28 4d 61 | 74 72 69 78 52 6f 77 43 |etCol(Ma|trixRowC|
|00004dd0| 6f 6c 26 29 3b 0a 58 20 | 20 20 76 6f 69 64 20 52 |ol&);.X | void R|
|00004de0| 65 73 74 6f 72 65 43 6f | 6c 28 4d 61 74 72 69 78 |estoreCo|l(Matrix|
|00004df0| 52 6f 77 43 6f 6c 26 29 | 3b 0a 58 20 20 20 76 6f |RowCol&)|;.X vo|
|00004e00| 69 64 20 4e 65 78 74 52 | 6f 77 28 4d 61 74 72 69 |id NextR|ow(Matri|
|00004e10| 78 52 6f 77 43 6f 6c 26 | 29 3b 0a 58 20 20 20 76 |xRowCol&|);.X v|
|00004e20| 6f 69 64 20 4e 65 78 74 | 43 6f 6c 28 4d 61 74 72 |oid Next|Col(Matr|
|00004e30| 69 78 52 6f 77 43 6f 6c | 26 29 3b 0a 58 20 20 20 |ixRowCol|&);.X |
|00004e40| 76 6f 69 64 20 52 65 44 | 69 6d 65 6e 73 69 6f 6e |void ReD|imension|
|00004e50| 28 69 6e 74 2c 69 6e 74 | 29 3b 20 20 20 20 20 20 |(int,int|); |
|00004e60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00004e70| 63 68 61 6e 67 65 20 64 | 69 6d 65 6e 73 69 6f 6e |change d|imension|
|00004e80| 73 0a 58 7d 3b 0a 58 0a | 58 63 6c 61 73 73 20 6e |s.X};.X.|Xclass n|
|00004e90| 72 69 63 4d 61 74 72 69 | 78 20 3a 20 70 75 62 6c |ricMatri|x : publ|
|00004ea0| 69 63 20 4d 61 74 72 69 | 78 20 20 20 20 20 20 20 |ic Matri|x |
|00004eb0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 66 6f 72 20 | | // for |
|00004ec0| 75 73 65 20 77 69 74 68 | 20 4e 75 6d 65 72 69 63 |use with| Numeric|
|00004ed0| 61 6c 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |al.X | |
|00004ee0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004ef0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004f00| 20 20 20 20 2f 2f 20 52 | 65 63 69 70 65 73 20 69 | // R|ecipes i|
|00004f10| 6e 20 43 0a 58 7b 0a 58 | 20 20 20 72 65 61 6c 2a |n C.X{.X| real*|
|00004f20| 2a 20 72 6f 77 5f 70 6f | 69 6e 74 65 72 3b 20 20 |* row_po|inter; |
|00004f30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004f40| 20 20 20 20 20 20 20 20 | 2f 2f 20 70 6f 69 6e 74 | |// point|
|00004f50| 73 20 74 6f 20 72 6f 77 | 73 0a 58 20 20 20 76 6f |s to row|s.X vo|
|00004f60| 69 64 20 4d 61 6b 65 52 | 6f 77 50 6f 69 6e 74 65 |id MakeR|owPointe|
|00004f70| 72 28 29 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |r(); | |
|00004f80| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 62 75 | | // bu|
|00004f90| 69 6c 64 20 72 6f 77 70 | 6f 69 6e 74 65 72 0a 58 |ild rowp|ointer.X|
|00004fa0| 20 20 20 76 6f 69 64 20 | 44 65 6c 65 74 65 52 6f | void |DeleteRo|
|00004fb0| 77 50 6f 69 6e 74 65 72 | 28 29 3b 0a 58 70 75 62 |wPointer|();.Xpub|
|00004fc0| 6c 69 63 3a 0a 58 20 20 | 20 6e 72 69 63 4d 61 74 |lic:.X | nricMat|
|00004fd0| 72 69 78 28 29 20 7b 7d | 0a 58 20 20 20 6e 72 69 |rix() {}|.X nri|
|00004fe0| 63 4d 61 74 72 69 78 28 | 69 6e 74 20 6d 2c 20 69 |cMatrix(|int m, i|
|00004ff0| 6e 74 20 6e 29 20 20 20 | 20 20 20 20 20 20 20 20 |nt n) | |
|00005000| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 73 74 61 | | // sta|
|00005010| 6e 64 61 72 64 20 64 65 | 63 6c 61 72 61 74 69 6f |ndard de|claratio|
|00005020| 6e 0a 58 20 20 20 20 20 | 20 3a 20 20 4d 61 74 72 |n.X | : Matr|
|00005030| 69 78 28 6d 2c 6e 29 20 | 7b 20 4d 61 6b 65 52 6f |ix(m,n) |{ MakeRo|
|00005040| 77 50 6f 69 6e 74 65 72 | 28 29 3b 20 7d 0a 58 20 |wPointer|(); }.X |
|00005050| 20 20 6e 72 69 63 4d 61 | 74 72 69 78 28 42 61 73 | nricMa|trix(Bas|
|00005060| 65 4d 61 74 72 69 78 26 | 20 62 6d 29 20 20 20 20 |eMatrix&| bm) |
|00005070| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|00005080| 2f 20 65 76 61 6c 75 61 | 74 65 20 42 61 73 65 4d |/ evalua|te BaseM|
|00005090| 61 74 72 69 78 0a 58 20 | 20 20 20 20 20 3a 20 20 |atrix.X | : |
|000050a0| 4d 61 74 72 69 78 28 62 | 6d 29 20 7b 20 4d 61 6b |Matrix(b|m) { Mak|
|000050b0| 65 52 6f 77 50 6f 69 6e | 74 65 72 28 29 3b 20 7d |eRowPoin|ter(); }|
|000050c0| 0a 58 20 20 20 76 6f 69 | 64 20 6f 70 65 72 61 74 |.X voi|d operat|
|000050d0| 6f 72 3d 28 42 61 73 65 | 4d 61 74 72 69 78 26 20 |or=(Base|Matrix& |
|000050e0| 62 6d 29 0a 58 20 20 20 | 20 20 20 7b 20 44 65 6c |bm).X | { Del|
|000050f0| 65 74 65 52 6f 77 50 6f | 69 6e 74 65 72 28 29 3b |eteRowPo|inter();|
|00005100| 20 4d 61 74 72 69 78 3a | 3a 6f 70 65 72 61 74 6f | Matrix:|:operato|
|00005110| 72 3d 28 62 6d 29 3b 20 | 4d 61 6b 65 52 6f 77 50 |r=(bm); |MakeRowP|
|00005120| 6f 69 6e 74 65 72 28 29 | 3b 20 7d 0a 58 20 20 20 |ointer()|; }.X |
|00005130| 76 6f 69 64 20 6f 70 65 | 72 61 74 6f 72 3d 28 72 |void ope|rator=(r|
|00005140| 65 61 6c 20 66 29 20 7b | 20 47 65 6e 65 72 61 6c |eal f) {| General|
|00005150| 4d 61 74 72 69 78 3a 3a | 6f 70 65 72 61 74 6f 72 |Matrix::|operator|
|00005160| 3d 28 66 29 3b 20 7d 0a | 58 20 20 20 76 6f 69 64 |=(f); }.|X void|
|00005170| 20 6f 70 65 72 61 74 6f | 72 3c 3c 28 42 61 73 65 | operato|r<<(Base|
|00005180| 4d 61 74 72 69 78 26 20 | 58 29 0a 58 20 20 20 20 |Matrix& |X).X |
|00005190| 20 20 7b 20 44 65 6c 65 | 74 65 52 6f 77 50 6f 69 | { Dele|teRowPoi|
|000051a0| 6e 74 65 72 28 29 3b 20 | 45 71 28 58 2c 74 68 69 |nter(); |Eq(X,thi|
|000051b0| 73 2d 3e 54 79 70 65 28 | 29 29 3b 20 4d 61 6b 65 |s->Type(|)); Make|
|000051c0| 52 6f 77 50 6f 69 6e 74 | 65 72 28 29 3b 20 7d 0a |RowPoint|er(); }.|
|000051d0| 58 20 20 20 6e 72 69 63 | 4d 61 74 72 69 78 28 6e |X nric|Matrix(n|
|000051e0| 72 69 63 4d 61 74 72 69 | 78 26 20 67 6d 29 20 7b |ricMatri|x& gm) {|
|000051f0| 20 47 65 74 4d 61 74 72 | 69 78 28 26 67 6d 29 3b | GetMatr|ix(&gm);|
|00005200| 20 4d 61 6b 65 52 6f 77 | 50 6f 69 6e 74 65 72 28 | MakeRow|Pointer(|
|00005210| 29 3b 20 7d 0a 58 23 69 | 66 6e 64 65 66 20 5f 5f |); }.X#i|fndef __|
|00005220| 5a 54 43 5f 5f 0a 58 20 | 20 20 6e 72 69 63 4d 61 |ZTC__.X | nricMa|
|00005230| 74 72 69 78 28 63 6f 6e | 73 74 20 6e 72 69 63 4d |trix(con|st nricM|
|00005240| 61 74 72 69 78 26 20 67 | 6d 29 20 7b 20 47 65 74 |atrix& g|m) { Get|
|00005250| 4d 61 74 72 69 78 43 28 | 26 67 6d 29 3b 20 4d 61 |MatrixC(|&gm); Ma|
|00005260| 6b 65 52 6f 77 50 6f 69 | 6e 74 65 72 28 29 3b 20 |keRowPoi|nter(); |
|00005270| 7d 0a 58 23 65 6e 64 69 | 66 0a 58 20 20 20 76 6f |}.X#endi|f.X vo|
|00005280| 69 64 20 52 65 44 69 6d | 65 6e 73 69 6f 6e 28 69 |id ReDim|ension(i|
|00005290| 6e 74 20 6d 2c 20 69 6e | 74 20 6e 29 20 20 20 20 |nt m, in|t n) |
|000052a0| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 63 68 | | // ch|
|000052b0| 61 6e 67 65 20 64 69 6d | 65 6e 73 69 6f 6e 73 0a |ange dim|ensions.|
|000052c0| 58 20 20 20 20 20 20 7b | 20 44 65 6c 65 74 65 52 |X {| DeleteR|
|000052d0| 6f 77 50 6f 69 6e 74 65 | 72 28 29 3b 20 4d 61 74 |owPointe|r(); Mat|
|000052e0| 72 69 78 3a 3a 52 65 44 | 69 6d 65 6e 73 69 6f 6e |rix::ReD|imension|
|000052f0| 28 6d 2c 6e 29 3b 20 4d | 61 6b 65 52 6f 77 50 6f |(m,n); M|akeRowPo|
|00005300| 69 6e 74 65 72 28 29 3b | 20 7d 0a 58 20 20 20 7e |inter();| }.X ~|
|00005310| 6e 72 69 63 4d 61 74 72 | 69 78 28 29 20 7b 20 44 |nricMatr|ix() { D|
|00005320| 65 6c 65 74 65 52 6f 77 | 50 6f 69 6e 74 65 72 28 |eleteRow|Pointer(|
|00005330| 29 3b 20 7d 0a 58 23 69 | 66 6e 64 65 66 20 5f 5f |); }.X#i|fndef __|
|00005340| 5a 54 43 5f 5f 0a 58 20 | 20 20 6f 70 65 72 61 74 |ZTC__.X | operat|
|00005350| 6f 72 20 72 65 61 6c 2a | 2a 28 29 20 63 6f 6e 73 |or real*|*() cons|
|00005360| 74 20 7b 20 43 68 65 63 | 6b 53 74 6f 72 65 28 29 |t { Chec|kStore()|
|00005370| 3b 20 72 65 74 75 72 6e | 20 72 6f 77 5f 70 6f 69 |; return| row_poi|
|00005380| 6e 74 65 72 2d 31 3b 20 | 7d 0a 58 23 65 6e 64 69 |nter-1; |}.X#endi|
|00005390| 66 0a 58 7d 3b 0a 58 0a | 58 63 6c 61 73 73 20 53 |f.X};.X.|Xclass S|
|000053a0| 79 6d 6d 65 74 72 69 63 | 4d 61 74 72 69 78 20 3a |ymmetric|Matrix :|
|000053b0| 20 70 75 62 6c 69 63 20 | 47 65 6e 65 72 61 6c 4d | public |GeneralM|
|000053c0| 61 74 72 69 78 0a 58 7b | 0a 58 70 75 62 6c 69 63 |atrix.X{|.Xpublic|
|000053d0| 3a 0a 58 20 20 20 53 79 | 6d 6d 65 74 72 69 63 4d |:.X Sy|mmetricM|
|000053e0| 61 74 72 69 78 28 29 20 | 7b 7d 0a 58 20 20 20 53 |atrix() |{}.X S|
|000053f0| 79 6d 6d 65 74 72 69 63 | 4d 61 74 72 69 78 28 69 |ymmetric|Matrix(i|
|00005400| 6e 74 29 3b 0a 58 20 20 | 20 53 79 6d 6d 65 74 72 |nt);.X | Symmetr|
|00005410| 69 63 4d 61 74 72 69 78 | 28 42 61 73 65 4d 61 74 |icMatrix|(BaseMat|
|00005420| 72 69 78 26 29 3b 0a 58 | 20 20 20 76 6f 69 64 20 |rix&);.X| void |
|00005430| 6f 70 65 72 61 74 6f 72 | 3d 28 42 61 73 65 4d 61 |operator|=(BaseMa|
|00005440| 74 72 69 78 26 29 3b 0a | 58 20 20 20 76 6f 69 64 |trix&);.|X void|
|00005450| 20 6f 70 65 72 61 74 6f | 72 3d 28 72 65 61 6c 20 | operato|r=(real |
|00005460| 66 29 20 7b 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |f) { Gen|eralMatr|
|00005470| 69 78 3a 3a 6f 70 65 72 | 61 74 6f 72 3d 28 66 29 |ix::oper|ator=(f)|
|00005480| 3b 20 7d 0a 58 20 20 20 | 72 65 61 6c 26 20 6f 70 |; }.X |real& op|
|00005490| 65 72 61 74 6f 72 28 29 | 28 69 6e 74 2c 20 69 6e |erator()|(int, in|
|000054a0| 74 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |t); | |
|000054b0| 20 20 20 20 20 2f 2f 20 | 61 63 63 65 73 73 20 65 | // |access e|
|000054c0| 6c 65 6d 65 6e 74 0a 58 | 20 20 20 72 65 61 6c 26 |lement.X| real&|
|000054d0| 20 65 6c 65 6d 65 6e 74 | 28 69 6e 74 2c 20 69 6e | element|(int, in|
|000054e0| 74 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |t); | |
|000054f0| 20 20 20 20 20 20 20 20 | 2f 2f 20 61 63 63 65 73 | |// acces|
|00005500| 73 20 65 6c 65 6d 65 6e | 74 0a 58 20 20 20 4d 61 |s elemen|t.X Ma|
|00005510| 74 72 69 78 54 79 70 65 | 20 54 79 70 65 28 29 20 |trixType| Type() |
|00005520| 63 6f 6e 73 74 3b 0a 58 | 20 20 20 53 79 6d 6d 65 |const;.X| Symme|
|00005530| 74 72 69 63 4d 61 74 72 | 69 78 28 53 79 6d 6d 65 |tricMatr|ix(Symme|
|00005540| 74 72 69 63 4d 61 74 72 | 69 78 26 20 67 6d 29 20 |tricMatr|ix& gm) |
|00005550| 7b 20 47 65 74 4d 61 74 | 72 69 78 28 26 67 6d 29 |{ GetMat|rix(&gm)|
|00005560| 3b 20 7d 0a 58 23 69 66 | 6e 64 65 66 20 5f 5f 5a |; }.X#if|ndef __Z|
|00005570| 54 43 5f 5f 0a 58 20 20 | 20 72 65 61 6c 20 6f 70 |TC__.X | real op|
|00005580| 65 72 61 74 6f 72 28 29 | 28 69 6e 74 2c 20 69 6e |erator()|(int, in|
|00005590| 74 29 20 63 6f 6e 73 74 | 3b 20 20 20 20 20 20 20 |t) const|; |
|000055a0| 20 20 20 20 20 20 2f 2f | 20 61 63 63 65 73 73 20 | //| access |
|000055b0| 65 6c 65 6d 65 6e 74 0a | 58 20 20 20 53 79 6d 6d |element.|X Symm|
|000055c0| 65 74 72 69 63 4d 61 74 | 72 69 78 28 63 6f 6e 73 |etricMat|rix(cons|
|000055d0| 74 20 53 79 6d 6d 65 74 | 72 69 63 4d 61 74 72 69 |t Symmet|ricMatri|
|000055e0| 78 26 20 67 6d 29 20 7b | 20 47 65 74 4d 61 74 72 |x& gm) {| GetMatr|
|000055f0| 69 78 43 28 26 67 6d 29 | 3b 20 7d 0a 58 23 65 6e |ixC(&gm)|; }.X#en|
|00005600| 64 69 66 0a 58 20 20 20 | 72 65 61 6c 20 53 75 6d |dif.X |real Sum|
|00005610| 53 71 75 61 72 65 28 29 | 3b 0a 58 20 20 20 72 65 |Square()|;.X re|
|00005620| 61 6c 20 53 75 6d 41 62 | 73 6f 6c 75 74 65 56 61 |al SumAb|soluteVa|
|00005630| 6c 75 65 28 29 3b 0a 58 | 20 20 20 72 65 61 6c 20 |lue();.X| real |
|00005640| 54 72 61 63 65 28 29 3b | 0a 58 20 20 20 76 6f 69 |Trace();|.X voi|
|00005650| 64 20 47 65 74 52 6f 77 | 28 4d 61 74 72 69 78 52 |d GetRow|(MatrixR|
|00005660| 6f 77 43 6f 6c 26 29 3b | 0a 58 20 20 20 76 6f 69 |owCol&);|.X voi|
|00005670| 64 20 47 65 74 43 6f 6c | 28 4d 61 74 72 69 78 52 |d GetCol|(MatrixR|
|00005680| 6f 77 43 6f 6c 26 29 3b | 0a 58 20 20 20 47 65 6e |owCol&);|.X Gen|
|00005690| 65 72 61 6c 4d 61 74 72 | 69 78 2a 20 54 72 61 6e |eralMatr|ix* Tran|
|000056a0| 73 70 6f 73 65 28 4d 61 | 74 72 69 78 54 79 70 65 |spose(Ma|trixType|
|000056b0| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 52 65 44 69 |);.X v|oid ReDi|
|000056c0| 6d 65 6e 73 69 6f 6e 28 | 69 6e 74 29 3b 20 20 20 |mension(|int); |
|000056d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000056e0| 20 20 20 20 2f 2f 20 63 | 68 61 6e 67 65 20 64 69 | // c|hange di|
|000056f0| 6d 65 6e 73 69 6f 6e 73 | 0a 58 7d 3b 0a 58 0a 58 |mensions|.X};.X.X|
|00005700| 63 6c 61 73 73 20 55 70 | 70 65 72 54 72 69 61 6e |class Up|perTrian|
|00005710| 67 75 6c 61 72 4d 61 74 | 72 69 78 20 3a 20 70 75 |gularMat|rix : pu|
|00005720| 62 6c 69 63 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |blic Gen|eralMatr|
|00005730| 69 78 0a 58 7b 0a 58 70 | 75 62 6c 69 63 3a 0a 58 |ix.X{.Xp|ublic:.X|
|00005740| 20 20 20 55 70 70 65 72 | 54 72 69 61 6e 67 75 6c | Upper|Triangul|
|00005750| 61 72 4d 61 74 72 69 78 | 28 29 20 7b 7d 0a 58 20 |arMatrix|() {}.X |
|00005760| 20 20 55 70 70 65 72 54 | 72 69 61 6e 67 75 6c 61 | UpperT|riangula|
|00005770| 72 4d 61 74 72 69 78 28 | 69 6e 74 29 3b 0a 58 20 |rMatrix(|int);.X |
|00005780| 20 20 76 6f 69 64 20 6f | 70 65 72 61 74 6f 72 3d | void o|perator=|
|00005790| 28 42 61 73 65 4d 61 74 | 72 69 78 26 29 3b 0a 58 |(BaseMat|rix&);.X|
|000057a0| 20 20 20 55 70 70 65 72 | 54 72 69 61 6e 67 75 6c | Upper|Triangul|
|000057b0| 61 72 4d 61 74 72 69 78 | 28 42 61 73 65 4d 61 74 |arMatrix|(BaseMat|
|000057c0| 72 69 78 26 29 3b 0a 58 | 20 20 20 55 70 70 65 72 |rix&);.X| Upper|
|000057d0| 54 72 69 61 6e 67 75 6c | 61 72 4d 61 74 72 69 78 |Triangul|arMatrix|
|000057e0| 28 55 70 70 65 72 54 72 | 69 61 6e 67 75 6c 61 72 |(UpperTr|iangular|
|000057f0| 4d 61 74 72 69 78 26 20 | 67 6d 29 20 7b 20 47 65 |Matrix& |gm) { Ge|
|00005800| 74 4d 61 74 72 69 78 28 | 26 67 6d 29 3b 20 7d 0a |tMatrix(|&gm); }.|
|00005810| 58 23 69 66 6e 64 65 66 | 20 5f 5f 5a 54 43 5f 5f |X#ifndef| __ZTC__|
|00005820| 0a 58 20 20 20 72 65 61 | 6c 20 6f 70 65 72 61 74 |.X rea|l operat|
|00005830| 6f 72 28 29 28 69 6e 74 | 2c 20 69 6e 74 29 20 63 |or()(int|, int) c|
|00005840| 6f 6e 73 74 3b 20 20 20 | 20 20 20 20 20 20 20 20 |onst; | |
|00005850| 20 20 2f 2f 20 61 63 63 | 65 73 73 20 65 6c 65 6d | // acc|ess elem|
|00005860| 65 6e 74 0a 58 20 20 20 | 55 70 70 65 72 54 72 69 |ent.X |UpperTri|
|00005870| 61 6e 67 75 6c 61 72 4d | 61 74 72 69 78 28 63 6f |angularM|atrix(co|
|00005880| 6e 73 74 20 55 70 70 65 | 72 54 72 69 61 6e 67 75 |nst Uppe|rTriangu|
|00005890| 6c 61 72 4d 61 74 72 69 | 78 26 20 67 6d 29 20 7b |larMatri|x& gm) {|
|000058a0| 20 47 65 74 4d 61 74 72 | 69 78 43 28 26 67 6d 29 | GetMatr|ixC(&gm)|
|000058b0| 3b 20 7d 0a 58 23 65 6e | 64 69 66 0a 58 20 20 20 |; }.X#en|dif.X |
|000058c0| 76 6f 69 64 20 6f 70 65 | 72 61 74 6f 72 3d 28 72 |void ope|rator=(r|
|000058d0| 65 61 6c 20 66 29 20 7b | 20 47 65 6e 65 72 61 6c |eal f) {| General|
|000058e0| 4d 61 74 72 69 78 3a 3a | 6f 70 65 72 61 74 6f 72 |Matrix::|operator|
|000058f0| 3d 28 66 29 3b 20 7d 0a | 58 20 20 20 72 65 61 6c |=(f); }.|X real|
|00005900| 26 20 6f 70 65 72 61 74 | 6f 72 28 29 28 69 6e 74 |& operat|or()(int|
|00005910| 2c 20 69 6e 74 29 3b 20 | 20 20 20 20 20 20 20 20 |, int); | |
|00005920| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 61 63 63 65 | | // acce|
|00005930| 73 73 20 65 6c 65 6d 65 | 6e 74 0a 58 20 20 20 72 |ss eleme|nt.X r|
|00005940| 65 61 6c 26 20 65 6c 65 | 6d 65 6e 74 28 69 6e 74 |eal& ele|ment(int|
|00005950| 2c 20 69 6e 74 29 3b 20 | 20 20 20 20 20 20 20 20 |, int); | |
|00005960| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 61 | | // a|
|00005970| 63 63 65 73 73 20 65 6c | 65 6d 65 6e 74 0a 58 20 |ccess el|ement.X |
|00005980| 20 20 4d 61 74 72 69 78 | 54 79 70 65 20 54 79 70 | Matrix|Type Typ|
|00005990| 65 28 29 20 63 6f 6e 73 | 74 3b 0a 58 20 20 20 47 |e() cons|t;.X G|
|000059a0| 65 6e 65 72 61 6c 4d 61 | 74 72 69 78 2a 20 4d 61 |eneralMa|trix* Ma|
|000059b0| 6b 65 53 6f 6c 76 65 72 | 28 29 20 7b 20 72 65 74 |keSolver|() { ret|
|000059c0| 75 72 6e 20 74 68 69 73 | 3b 20 7d 20 2f 2f 20 66 |urn this|; } // f|
|000059d0| 6f 72 20 73 6f 6c 76 69 | 6e 67 0a 58 20 20 20 76 |or solvi|ng.X v|
|000059e0| 6f 69 64 20 53 6f 6c 76 | 65 72 28 4d 61 74 72 69 |oid Solv|er(Matri|
|000059f0| 78 52 6f 77 43 6f 6c 26 | 2c 20 63 6f 6e 73 74 20 |xRowCol&|, const |
|00005a00| 4d 61 74 72 69 78 52 6f | 77 43 6f 6c 26 29 3b 0a |MatrixRo|wCol&);.|
|00005a10| 58 20 20 20 4c 6f 67 41 | 6e 64 53 69 67 6e 20 4c |X LogA|ndSign L|
|00005a20| 6f 67 44 65 74 65 72 6d | 69 6e 61 6e 74 28 29 3b |ogDeterm|inant();|
|00005a30| 0a 58 20 20 20 72 65 61 | 6c 20 54 72 61 63 65 28 |.X rea|l Trace(|
|00005a40| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 47 65 74 52 |);.X v|oid GetR|
|00005a50| 6f 77 28 4d 61 74 72 69 | 78 52 6f 77 43 6f 6c 26 |ow(Matri|xRowCol&|
|00005a60| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 47 65 74 43 |);.X v|oid GetC|
|00005a70| 6f 6c 28 4d 61 74 72 69 | 78 52 6f 77 43 6f 6c 26 |ol(Matri|xRowCol&|
|00005a80| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 52 65 73 74 |);.X v|oid Rest|
|00005a90| 6f 72 65 43 6f 6c 28 4d | 61 74 72 69 78 52 6f 77 |oreCol(M|atrixRow|
|00005aa0| 43 6f 6c 26 29 3b 0a 58 | 20 20 20 76 6f 69 64 20 |Col&);.X| void |
|00005ab0| 4e 65 78 74 52 6f 77 28 | 4d 61 74 72 69 78 52 6f |NextRow(|MatrixRo|
|00005ac0| 77 43 6f 6c 26 29 3b 0a | 58 20 20 20 76 6f 69 64 |wCol&);.|X void|
|00005ad0| 20 52 65 44 69 6d 65 6e | 73 69 6f 6e 28 69 6e 74 | ReDimen|sion(int|
|00005ae0| 29 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |); | |
|00005af0| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 63 68 61 6e | | // chan|
|00005b00| 67 65 20 64 69 6d 65 6e | 73 69 6f 6e 73 0a 58 7d |ge dimen|sions.X}|
|00005b10| 3b 0a 58 0a 58 63 6c 61 | 73 73 20 4c 6f 77 65 72 |;.X.Xcla|ss Lower|
|00005b20| 54 72 69 61 6e 67 75 6c | 61 72 4d 61 74 72 69 78 |Triangul|arMatrix|
|00005b30| 20 3a 20 70 75 62 6c 69 | 63 20 47 65 6e 65 72 61 | : publi|c Genera|
|00005b40| 6c 4d 61 74 72 69 78 0a | 58 7b 0a 58 70 75 62 6c |lMatrix.|X{.Xpubl|
|00005b50| 69 63 3a 0a 58 20 20 20 | 4c 6f 77 65 72 54 72 69 |ic:.X |LowerTri|
|00005b60| 61 6e 67 75 6c 61 72 4d | 61 74 72 69 78 28 29 20 |angularM|atrix() |
|00005b70| 7b 7d 0a 58 20 20 20 4c | 6f 77 65 72 54 72 69 61 |{}.X L|owerTria|
|00005b80| 6e 67 75 6c 61 72 4d 61 | 74 72 69 78 28 69 6e 74 |ngularMa|trix(int|
|00005b90| 29 3b 0a 58 20 20 20 4c | 6f 77 65 72 54 72 69 61 |);.X L|owerTria|
|00005ba0| 6e 67 75 6c 61 72 4d 61 | 74 72 69 78 28 4c 6f 77 |ngularMa|trix(Low|
|00005bb0| 65 72 54 72 69 61 6e 67 | 75 6c 61 72 4d 61 74 72 |erTriang|ularMatr|
|00005bc0| 69 78 26 20 67 6d 29 20 | 7b 20 47 65 74 4d 61 74 |ix& gm) |{ GetMat|
|00005bd0| 72 69 78 28 26 67 6d 29 | 3b 20 7d 0a 58 23 69 66 |rix(&gm)|; }.X#if|
|00005be0| 6e 64 65 66 20 5f 5f 5a | 54 43 5f 5f 0a 58 20 20 |ndef __Z|TC__.X |
|00005bf0| 20 72 65 61 6c 20 6f 70 | 65 72 61 74 6f 72 28 29 | real op|erator()|
|00005c00| 28 69 6e 74 2c 20 69 6e | 74 29 20 63 6f 6e 73 74 |(int, in|t) const|
|00005c10| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f |; | //|
|00005c20| 20 61 63 63 65 73 73 20 | 65 6c 65 6d 65 6e 74 0a | access |element.|
|00005c30| 58 20 20 20 4c 6f 77 65 | 72 54 72 69 61 6e 67 75 |X Lowe|rTriangu|
|00005c40| 6c 61 72 4d 61 74 72 69 | 78 28 63 6f 6e 73 74 20 |larMatri|x(const |
|00005c50| 4c 6f 77 65 72 54 72 69 | 61 6e 67 75 6c 61 72 4d |LowerTri|angularM|
|00005c60| 61 74 72 69 78 26 20 67 | 6d 29 20 7b 20 47 65 74 |atrix& g|m) { Get|
|00005c70| 4d 61 74 72 69 78 43 28 | 26 67 6d 29 3b 20 7d 0a |MatrixC(|&gm); }.|
|00005c80| 58 23 65 6e 64 69 66 0a | 58 20 20 20 4c 6f 77 65 |X#endif.|X Lowe|
|00005c90| 72 54 72 69 61 6e 67 75 | 6c 61 72 4d 61 74 72 69 |rTriangu|larMatri|
|00005ca0| 78 28 42 61 73 65 4d 61 | 74 72 69 78 26 20 4d 29 |x(BaseMa|trix& M)|
|00005cb0| 3b 0a 58 20 20 20 76 6f | 69 64 20 6f 70 65 72 61 |;.X vo|id opera|
|00005cc0| 74 6f 72 3d 28 42 61 73 | 65 4d 61 74 72 69 78 26 |tor=(Bas|eMatrix&|
|00005cd0| 29 3b 0a 58 20 20 20 76 | 6f 69 64 20 6f 70 65 72 |);.X v|oid oper|
|00005ce0| 61 74 6f 72 3d 28 72 65 | 61 6c 20 66 29 20 7b 20 |ator=(re|al f) { |
|00005cf0| 47 65 6e 65 72 61 6c 4d | 61 74 72 69 78 3a 3a 6f |GeneralM|atrix::o|
|00005d00| 70 65 72 61 74 6f 72 3d | 28 66 29 3b 20 7d 0a 58 |perator=|(f); }.X|
|00005d10| 20 20 20 72 65 61 6c 26 | 20 6f 70 65 72 61 74 6f | real&| operato|
|00005d20| 72 28 29 28 69 6e 74 2c | 20 69 6e 74 29 3b 20 20 |r()(int,| int); |
|00005d30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005d40| 2f 2f 20 61 63 63 65 73 | 73 20 65 6c 65 6d 65 6e |// acces|s elemen|
|00005d50| 74 0a 58 20 20 20 72 65 | 61 6c 26 20 65 6c 65 6d |t.X re|al& elem|
|00005d60| 65 6e 74 28 69 6e 74 2c | 20 69 6e 74 29 3b 20 20 |ent(int,| int); |
|00005d70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005d80| 20 20 20 2f 2f 20 61 63 | 63 65 73 73 20 65 6c 65 | // ac|cess ele|
|00005d90| 6d 65 6e 74 0a 58 20 20 | 20 4d 61 74 72 69 78 54 |ment.X | MatrixT|
|00005da0| 79 70 65 20 54 79 70 65 | 28 29 20 63 6f 6e 73 74 |ype Type|() const|
|00005db0| 3b 0a 58 20 20 20 47 65 | 6e 65 72 61 6c 4d 61 74 |;.X Ge|neralMat|
|00005dc0| 72 69 78 2a 20 4d 61 6b | 65 53 6f 6c 76 65 72 28 |rix* Mak|eSolver(|
|00005dd0| 29 20 7b 20 72 65 74 75 | 72 6e 20 74 68 69 73 3b |) { retu|rn this;|
|00005de0| 20 7d 20 2f 2f 20 66 6f | 72 20 73 6f 6c 76 69 6e | } // fo|r solvin|
|00005df0| 67 0a 58 20 20 20 76 6f | 69 64 20 53 6f 6c 76 65 |g.X vo|id Solve|
|00005e00| 72 28 4d 61 74 72 69 78 | 52 6f 77 43 6f 6c 26 2c |r(Matrix|RowCol&,|
|00005e10| 20 63 6f 6e 73 74 20 4d | 61 74 72 69 78 52 6f 77 | const M|atrixRow|
|00005e20| 43 6f 6c 26 29 3b 0a 58 | 20 20 20 4c 6f 67 41 6e |Col&);.X| LogAn|
|00005e30| 64 53 69 67 6e 20 4c 6f | 67 44 65 74 65 72 6d 69 |dSign Lo|gDetermi|
|00005e40| 6e 61 6e 74 28 29 3b 0a | 58 20 20 20 72 65 61 6c |nant();.|X real|
|00005e50| 20 54 72 61 63 65 28 29 | 3b 0a 58 20 20 20 76 6f | Trace()|;.X vo|
|00005e60| 69 64 20 47 65 74 52 6f | 77 28 4d 61 74 72 69 78 |id GetRo|w(Matrix|
|00005e70| 52 6f 77 43 6f 6c 26 29 | 3b 0a 58 20 20 20 76 6f |RowCol&)|;.X vo|
|00005e80| 69 64 20 47 65 74 43 6f | 6c 28 4d 61 74 72 69 78 |id GetCo|l(Matrix|
|00005e90| 52 6f 77 43 6f 6c 26 29 | 3b 0a 58 20 20 20 76 6f |RowCol&)|;.X vo|
|00005ea0| 69 64 20 52 65 73 74 6f | 72 65 43 6f 6c 28 4d 61 |id Resto|reCol(Ma|
|00005eb0| 74 72 69 78 52 6f 77 43 | 6f 6c 26 29 3b 0a 58 20 |trixRowC|ol&);.X |
|00005ec0| 20 20 76 6f 69 64 20 4e | 65 78 74 52 6f 77 28 4d | void N|extRow(M|
|00005ed0| 61 74 72 69 78 52 6f 77 | 43 6f 6c 26 29 3b 0a 58 |atrixRow|Col&);.X|
|00005ee0| 20 20 20 76 6f 69 64 20 | 52 65 44 69 6d 65 6e 73 | void |ReDimens|
|00005ef0| 69 6f 6e 28 69 6e 74 29 | 3b 20 20 20 20 20 20 20 |ion(int)|; |
|00005f00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f10| 2f 2f 20 63 68 61 6e 67 | 65 20 64 69 6d 65 6e 73 |// chang|e dimens|
|00005f20| 69 6f 6e 73 0a 58 7d 3b | 0a 58 0a 58 63 6c 61 73 |ions.X};|.X.Xclas|
|00005f30| 73 20 44 69 61 67 6f 6e | 61 6c 4d 61 74 72 69 78 |s Diagon|alMatrix|
|00005f40| 20 3a 20 70 75 62 6c 69 | 63 20 47 65 6e 65 72 61 | : publi|c Genera|
|00005f50| 6c 4d 61 74 72 69 78 0a | 58 7b 0a 58 70 75 62 6c |lMatrix.|X{.Xpubl|
|00005f60| 69 63 3a 0a 58 20 20 20 | 44 69 61 67 6f 6e 61 6c |ic:.X |Diagonal|
|00005f70| 4d 61 74 72 69 78 28 29 | 20 7b 7d 0a 58 20 20 20 |Matrix()| {}.X |
|00005f80| 44 69 61 67 6f 6e 61 6c | 4d 61 74 72 69 78 28 69 |Diagonal|Matrix(i|
|00005f90| 6e 74 29 3b 0a 58 20 20 | 20 44 69 61 67 6f 6e 61 |nt);.X | Diagona|
|00005fa0| 6c 4d 61 74 72 69 78 28 | 42 61 73 65 4d 61 74 72 |lMatrix(|BaseMatr|
|00005fb0| 69 78 26 29 3b 0a 58 20 | 20 20 44 69 61 67 6f 6e |ix&);.X | Diagon|
|00005fc0| 61 6c 4d 61 74 72 69 78 | 28 44 69 61 67 6f 6e 61 |alMatrix|(Diagona|
|00005fd0| 6c 4d 61 74 72 69 78 26 | 20 67 6d 29 20 7b 20 47 |lMatrix&| gm) { G|
|00005fe0| 65 74 4d 61 74 72 69 78 | 28 26 67 6d 29 3b 20 7d |etMatrix|(&gm); }|
|00005ff0| 0a 58 23 69 66 6e 64 65 | 66 20 5f 5f 5a 54 43 5f |.X#ifnde|f __ZTC_|
|00006000| 5f 0a 58 20 20 20 72 65 | 61 6c 20 6f 70 65 72 61 |_.X re|al opera|
|00006010| 74 6f 72 28 29 28 69 6e | 74 2c 20 69 6e 74 29 20 |tor()(in|t, int) |
|00006020| 63 6f 6e 73 74 3b 20 20 | 20 20 20 20 20 20 20 20 |const; | |
|00006030| 20 20 20 2f 2f 20 61 63 | 63 65 73 73 20 65 6c 65 | // ac|cess ele|
|00006040| 6d 65 6e 74 0a 58 20 20 | 20 72 65 61 6c 20 6f 70 |ment.X | real op|
|00006050| 65 72 61 74 6f 72 28 29 | 28 69 6e 74 29 20 63 6f |erator()|(int) co|
|00006060| 6e 73 74 3b 0a 58 20 20 | 20 44 69 61 67 6f 6e 61 |nst;.X | Diagona|
|00006070| 6c 4d 61 74 72 69 78 28 | 63 6f 6e 73 74 20 44 69 |lMatrix(|const Di|
|00006080| 61 67 6f 6e 61 6c 4d 61 | 74 72 69 78 26 20 67 6d |agonalMa|trix& gm|
|00006090| 29 20 7b 20 47 65 74 4d | 61 74 72 69 78 43 28 26 |) { GetM|atrixC(&|
|000060a0| 67 6d 29 3b 20 7d 0a 58 | 23 65 6e 64 69 66 0a 58 |gm); }.X|#endif.X|
|000060b0| 20 20 20 76 6f 69 64 20 | 6f 70 65 72 61 74 6f 72 | void |operator|
|000060c0| 3d 28 42 61 73 65 4d 61 | 74 72 69 78 26 29 3b 0a |=(BaseMa|trix&);.|
|000060d0| 58 20 20 20 76 6f 69 64 | 20 6f 70 65 72 61 74 6f |X void| operato|
|000060e0| 72 3d 28 72 65 61 6c 20 | 66 29 20 7b 20 47 65 6e |r=(real |f) { Gen|
|000060f0| 65 72 61 6c 4d 61 74 72 | 69 78 3a 3a 6f 70 65 72 |eralMatr|ix::oper|
|00006100| 61 74 6f 72 3d 28 66 29 | 3b 20 7d 0a 58 20 20 20 |ator=(f)|; }.X |
|00006110| 72 65 61 6c 26 20 6f 70 | 65 72 61 74 6f 72 28 29 |real& op|erator()|
|00006120| 28 69 6e 74 2c 20 69 6e | 74 29 3b 20 20 20 20 20 |(int, in|t); |
|00006130| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|00006140| 61 63 63 65 73 73 20 65 | 6c 65 6d 65 6e 74 0a 58 |access e|lement.X|
|00006150| 20 20 20 72 65 61 6c 26 | 20 6f 70 65 72 61 74 6f | real&| operato|
|00006160| 72 28 29 28 69 6e 74 29 | 3b 20 20 20 20 20 20 20 |r()(int)|; |
|00006170| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006180| 2f 2f 20 61 63 63 65 73 | 73 20 65 6c 65 6d 65 6e |// acces|s elemen|
|00006190| 74 0a 58 20 20 20 72 65 | 61 6c 26 20 65 6c 65 6d |t.X re|al& elem|
|000061a0| 65 6e 74 28 69 6e 74 2c | 20 69 6e 74 29 3b 20 20 |ent(int,| int); |
|000061b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000061c0| 20 20 20 2f 2f 20 61 63 | 63 65 73 73 20 65 6c 65 | // ac|cess ele|
|000061d0| 6d 65 6e 74 0a 58 20 20 | 20 72 65 61 6c 26 20 65 |ment.X | real& e|
|000061e0| 6c 65 6d 65 6e 74 28 69 | 6e 74 29 3b 20 20 20 20 |lement(i|nt); |
|000061f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006200| 20 20 20 20 20 20 2f 2f | 20 61 63 63 65 73 73 20 | //| access |
|00006210| 65 6c 65 6d 65 6e 74 0a | 58 20 20 20 4d 61 74 72 |element.|X Matr|
|00006220| 69 78 54 79 70 65 20 54 | 79 70 65 28 29 20 63 6f |ixType T|ype() co|
|00006230| 6e 73 74 3b 0a 58 0a 58 | 20 20 20 4c 6f 67 41 6e |nst;.X.X| LogAn|
|00006240| 64 53 69 67 6e 20 4c 6f | 67 44 65 74 65 72 6d 69 |dSign Lo|gDetermi|
|00006250| 6e 61 6e 74 28 29 3b 0a | 58 20 20 20 72 65 61 6c |nant();.|X real|
|00006260| 20 54 72 61 63 65 28 29 | 3b 0a 58 20 20 20 76 6f | Trace()|;.X vo|
|00006270| 69 64 20 47 65 74 52 6f | 77 28 4d 61 74 72 69 78 |id GetRo|w(Matrix|
|00006280| 52 6f 77 43 6f 6c 26 29 | 3b 0a 58 20 20 20 76 6f |RowCol&)|;.X vo|
|00006290| 69 64 20 47 65 74 43 6f | 6c 28 4d 61 74 72 69 78 |id GetCo|l(Matrix|
|000062a0| 52 6f 77 43 6f 6c 26 29 | 3b 0a 58 20 20 20 76 6f |RowCol&)|;.X vo|
|000062b0| 69 64 20 4e 65 78 74 52 | 6f 77 28 4d 61 74 72 69 |id NextR|ow(Matri|
|000062c0| 78 52 6f 77 43 6f 6c 26 | 29 3b 0a 58 20 20 20 76 |xRowCol&|);.X v|
|000062d0| 6f 69 64 20 4e 65 78 74 | 43 6f 6c 28 4d 61 74 72 |oid Next|Col(Matr|
|000062e0| 69 78 52 6f 77 43 6f 6c | 26 29 3b 0a 58 20 20 20 |ixRowCol|&);.X |
|000062f0| 47 65 6e 65 72 61 6c 4d | 61 74 72 69 78 2a 20 4d |GeneralM|atrix* M|
|00006300| 61 6b 65 53 6f 6c 76 65 | 72 28 29 20 7b 20 72 65 |akeSolve|r() { re|
|00006310| 74 75 72 6e 20 74 68 69 | 73 3b 20 7d 20 2f 2f 20 |turn thi|s; } // |
|00006320| 66 6f 72 20 73 6f 6c 76 | 69 6e 67 0a 58 20 20 20 |for solv|ing.X |
|00006330| 76 6f 69 64 20 53 6f 6c | 76 65 72 28 4d 61 74 72 |void Sol|ver(Matr|
|00006340| 69 78 52 6f 77 43 6f 6c | 26 2c 20 63 6f 6e 73 74 |ixRowCol|&, const|
|00006350| 20 4d 61 74 72 69 78 52 | 6f 77 43 6f 6c 26 29 3b | MatrixR|owCol&);|
|00006360| 0a 58 20 20 20 47 65 6e | 65 72 61 6c 4d 61 74 72 |.X Gen|eralMatr|
|00006370| 69 78 2a 20 54 72 61 6e | 73 70 6f 73 65 28 4d 61 |ix* Tran|spose(Ma|
|00006380| 74 72 69 78 54 79 70 65 | 29 3b 0a 58 20 20 20 76 |trixType|);.X v|
|00006390| 6f 69 64 20 52 65 44 69 | 6d 65 6e 73 69 6f 6e 28 |oid ReDi|mension(|
|000063a0| 69 6e 74 29 3b 20 20 20 | 20 20 20 20 20 20 20 20 |int); | |
|000063b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 63 | | // c|
|000063c0| 68 61 6e 67 65 20 64 69 | 6d 65 6e 73 69 6f 6e 73 |hange di|mensions|
|000063d0| 0a 58 23 69 66 6e 64 65 | 66 20 5f 5f 5a 54 43 5f |.X#ifnde|f __ZTC_|
|000063e0| 5f 0a 58 20 20 20 6f 70 | 65 72 61 74 6f 72 20 72 |_.X op|erator r|
|000063f0| 65 61 6c 2a 28 29 20 63 | 6f 6e 73 74 0a 58 20 20 |eal*() c|onst.X |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.