home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / clib / progs / meschach / !Meschach / c / update < prev    next >
Unknown  |  1994-01-13  |  3.4 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was not able to be converted.
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
100% file data default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 09 4d 45 4d 5f 53 54 41 | 54 5f 52 45 47 28 74 6d |.MEM_STA|T_REG(tm|
|00000010| 70 2c 54 59 50 45 5f 4d | 41 54 29 3b 0a 09 4d 45 |p,TYPE_M|AT);..ME|
|00000020| 4d 5f 53 54 41 54 5f 52 | 45 47 28 62 2c 54 59 50 |M_STAT_R|EG(b,TYP|
|00000030| 45 5f 56 45 43 29 3b 0a | 09 4d 45 4d 5f 53 54 41 |E_VEC);.|.MEM_STA|
|00000040| 54 5f 52 45 47 28 64 69 | 61 67 2c 54 59 50 45 5f |T_REG(di|ag,TYPE_|
|00000050| 56 45 43 29 3b 0a 09 4d | 45 4d 5f 53 54 41 54 5f |VEC);..M|EM_STAT_|
|00000060| 52 45 47 28 62 65 74 61 | 2c 54 59 50 45 5f 56 45 |REG(beta|,TYPE_VE|
|00000070| 43 29 3b 0a 0a 09 48 66 | 61 63 74 6f 72 28 74 6d |C);...Hf|actor(tm|
|00000080| 70 2c 64 69 61 67 2c 62 | 65 74 61 29 3b 0a 09 69 |p,diag,b|eta);..i|
|00000090| 66 20 28 20 51 20 29 0a | 09 09 6d 61 6b 65 48 51 |f ( Q ).|..makeHQ|
|000000a0| 28 74 6d 70 2c 64 69 61 | 67 2c 62 65 74 61 2c 51 |(tmp,dia|g,beta,Q|
|000000b0| 29 3b 0a 0a 09 66 6f 72 | 20 28 20 69 20 3d 20 30 |);...for| ( i = 0|
|000000c0| 3b 20 69 20 3c 20 41 2d | 3e 6d 20 2d 20 31 3b 20 |; i < A-|>m - 1; |
|000000d0| 69 2b 2b 20 29 0a 09 7b | 0a 09 09 6f 75 74 2d 3e |i++ )..{|...out->|
|000000e0| 76 65 5b 69 5d 20 3d 20 | 74 6d 70 2d 3e 6d 65 5b |ve[i] = |tmp->me[|
|000000f0| 69 5d 5b 69 5d 3b 0a 09 | 09 62 2d 3e 76 65 5b 69 |i][i];..|.b->ve[i|
|00000100| 5d 20 3d 20 74 6d 70 2d | 3e 6d 65 5b 69 5d 5b 69 |] = tmp-|>me[i][i|
|00000110| 2b 31 5d 3b 0a 09 7d 0a | 09 6f 75 74 2d 3e 76 65 |+1];..}.|.out->ve|
|00000120| 5b 69 5d 20 3d 20 74 6d | 70 2d 3e 6d 65 5b 69 5d |[i] = tm|p->me[i]|
|00000130| 5b 69 5d 3b 0a 09 74 72 | 69 65 69 67 28 6f 75 74 |[i];..tr|ieig(out|
|00000140| 2c 62 2c 51 29 3b 0a 0a | 09 72 65 74 75 72 6e 20 |,b,Q);..|.return |
|00000150| 6f 75 74 3b 0a 7d 0a 0a | 46 69 6c 65 44 61 74 61 |out;.}..|FileData|
|00000160| 82 74 6f 72 74 75 72 65 | 00 00 00 00 25 6e 00 00 |.torture|....%n..|
|00000170| 45 ff ff ff f3 38 f6 7f | 03 00 aa dc 0a 2f 2a 2a |E....8..|...../**|
|00000180| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000190| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000001c0| 2a 2a 2a 2a 2a 2a 2a 2a | 0a 2a 2a 0a 2a 2a 20 43 |********|.**.** C|
|000001d0| 6f 70 79 72 69 67 68 74 | 20 28 43 29 20 31 39 39 |opyright| (C) 199|
|000001e0| 33 20 63 68 28 63 6f 6e | 64 5f 65 73 74 20 3d 20 |3 ch(con|d_est = |
|000001f0| 4c 55 63 6f 6e 64 65 73 | 74 28 41 2c 70 69 76 6f |LUcondes|t(A,pivo|
|00000200| 74 29 2c 22 6d 61 69 6e | 22 29 3b 0a 20 20 20 20 |t),"main|");. |
|00000210| 69 66 20 28 20 76 5f 6e | 6f 72 6d 32 28 76 5f 73 |if ( v_n|orm2(v_s|
|00000220| 75 62 28 78 2c 7a 2c 75 | 29 29 20 3e 3d 20 4d 41 |ub(x,z,u|)) >= MA|
|00000230| 43 48 45 50 53 2a 76 5f | 6e 6f 72 6d 32 28 78 29 |CHEPS*v_|norm2(x)|
|00000240| 2a 63 6f 6e 64 5f 65 73 | 74 29 0a 20 20 20 20 7b |*cond_es|t). {|
|00000250| 0a 09 65 72 72 6d 65 73 | 67 28 22 4c 55 66 61 63 |..errmes|g("LUfac|
|00000260| 74 6f 72 28 29 2f 4c 55 | 73 6f 6c 76 65 28 29 22 |tor()/LU|solve()"|
|00000270| 29 3b 0a 09 70 72 69 6e | 74 66 28 22 23 20 4c 55 |);..prin|tf("# LU|
|00000280| 20 73 6f 6c 75 74 69 6f | 6e 20 65 72 72 6f 72 20 | solutio|n error |
|00000290| 3d 20 25 67 20 5b 63 66 | 20 4d 41 43 48 45 50 53 |= %g [cf| MACHEPS|
|000002a0| 20 3d 20 25 67 5d 5c 6e | 22 2c 0a 09 20 20 20 20 | = %g]\n|",.. |
|000002b0| 20 20 20 76 5f 6e 6f 72 | 6d 32 28 76 5f 73 75 62 | v_nor|m2(v_sub|
|000002c0| 28 78 2c 7a 2c 75 29 29 | 2c 20 4d 41 43 48 45 50 |(x,z,u))|, MACHEP|
|000002d0| 53 29 3b 0a 20 20 20 20 | 7d 0a 0a 20 20 20 20 76 |S);. |}.. v|
|000002e0| 6d 5f 6d 6c 74 28 42 2c | 7a 2c 79 29 3b 0a 20 20 |m_mlt(B,|z,y);. |
|000002f0| 20 20 76 5f 63 6f 70 79 | 28 79 2c 78 29 3b 0a 20 | v_copy|(y,x);. |
|00000300| 20 20 20 74 72 61 63 65 | 63 61 74 63 68 28 4c 55 | trace|catch(LU|
|00000310| 54 73 6f 6c 76 65 28 41 | 2c 70 69 76 6f 74 2c 78 |Tsolve(A|,pivot,x|
|00000320| 2c 78 29 2c 22 6d 61 69 | 6e 22 29 3b 0a 20 20 20 |,x),"mai|n");. |
|00000330| 20 69 66 20 28 20 76 5f | 6e 6f 72 6d 32 28 76 5f | if ( v_|norm2(v_|
|00000340| 73 75 62 28 78 2c 7a 2c | 75 29 29 20 3e 3d 20 4d |sub(x,z,|u)) >= M|
|00000350| 41 43 48 45 50 53 2a 76 | 5f 6e 6f 72 6d 32 28 78 |ACHEPS*v|_norm2(x|
|00000360| 29 2a 63 6f 6e 64 5f 65 | 73 74 29 0a 20 20 20 20 |)*cond_e|st). |
|00000370| 7b 0a 09 65 72 72 6d 65 | 73 67 28 22 4c 55 66 61 |{..errme|sg("LUfa|
|00000380| 63 74 6f 72 28 29 2f 4c | 55 54 73 6f 6c 76 65 28 |ctor()/L|UTsolve(|
|00000390| 29 22 29 3b 0a 09 70 72 | 69 6e 74 66 28 22 23 20 |)");..pr|intf("# |
|000003a0| 4c 55 20 73 6f 6c 75 74 | 69 6f 6e 20 65 72 72 6f |LU solut|ion erro|
|000003b0| 72 20 3d 20 25 67 20 5b | 63 66 20 4d 41 43 48 45 |r = %g [|cf MACHE|
|000003c0| 50 53 20 3d 20 25 67 5d | 5c 6e 22 2c 0a 09 20 20 |PS = %g]|\n",.. |
|000003d0| 20 20 20 20 20 76 5f 6e | 6f 72 6d 32 28 76 5f 73 | v_n|orm2(v_s|
|000003e0| 75 62 28 78 2c 7a 2c 75 | 29 29 2c 20 4d 41 43 48 |ub(x,z,u|)), MACH|
|000003f0| 45 50 53 29 3b 0a 20 20 | 20 20 7d 0a 20 0a 20 20 |EPS);. | }. . |
|00000400| 20 20 4d 45 4d 43 48 4b | 28 29 3b 0a 0a 20 20 20 | MEMCHK|();.. |
|00000410| 20 2f 2a 20 51 52 20 66 | 61 63 74 6f 72 69 73 61 | /* QR f|actorisa|
|00000420| 74 69 6f 6e 20 2a 2f 0a | 20 20 20 20 6d 5f 63 6f |tion */.| m_co|
|00000430| 70 79 28 42 2c 41 29 3b | 0a 20 20 20 20 6d 76 5f |py(B,A);|. mv_|
|00000440| 6d 6c 74 28 42 2c 7a 2c | 79 29 3b 0a 20 20 20 20 |mlt(B,z,|y);. |
|00000450| 6e 6f 74 69 63 65 28 22 | 51 52 20 66 61 63 74 6f |notice("|QR facto|
|00000460| 72 2f 73 6f 6c 76 65 3a | 22 29 3b 0a 20 20 20 20 |r/solve:|");. |
|00000470| 64 69 61 67 20 3d 20 76 | 5f 67 65 74 28 41 2d 3e |diag = v|_get(A->|
|00000480| 6d 29 3b 0a 20 20 20 20 | 62 65 74 61 20 3d 20 76 |m);. |beta = v|
|00000490| 5f 67 65 74 28 41 2d 3e | 6d 29 3b 0a 20 20 20 20 |_get(A->|m);. |
|000004a0| 51 52 66 61 63 74 6f 72 | 28 41 2c 64 69 61 67 29 |QRfactor|(A,diag)|
|000004b0| 3b 0a 20 20 20 20 51 52 | 73 6f 6c 76 65 28 41 2c |;. QR|solve(A,|
|000004c0| 64 69 61 67 2c 79 2c 78 | 29 3b 0a 20 20 20 20 69 |diag,y,x|);. i|
|000004d0| 66 20 28 20 76 5f 6e 6f | 72 6d 32 28 76 5f 73 75 |f ( v_no|rm2(v_su|
|000004e0| 62 28 78 2c 7a 2c 75 29 | 29 20 3e 3d 20 4d 41 43 |b(x,z,u)|) >= MAC|
|000004f0| 48 45 50 53 2a 76 5f 6e | 6f 72 6d 32 28 78 29 2a |HEPS*v_n|orm2(x)*|
|00000500| 63 6f 6e 64 5f 65 73 74 | 20 29 0a 20 20 20 20 7b |cond_est| ). {|
|00000510| 0a 09 65 72 72 6d 65 73 | 67 28 22 51 52 66 61 63 |..errmes|g("QRfac|
|00000520| 74 6f 72 28 29 2f 51 52 | 73 6f 6c 76 65 28 29 22 |tor()/QR|solve()"|
|00000530| 29 3b 0a 09 70 72 69 6e | 74 66 28 22 23 20 51 52 |);..prin|tf("# QR|
|00000540| 20 73 6f 6c 75 74 69 6f | 6e 20 65 72 72 6f 72 20 | solutio|n error |
|00000550| 3d 20 25 67 20 5b 63 66 | 20 4d 41 43 48 45 50 53 |= %g [cf| MACHEPS|
|00000560| 20 3d 20 25 67 5d 5c 6e | 22 2c 0a 09 20 20 20 20 | = %g]\n|",.. |
|00000570| 20 20 20 76 5f 6e 6f 72 | 6d 32 28 76 5f 73 75 62 | v_nor|m2(v_sub|
|00000580| 28 78 2c 7a 2c 75 29 29 | 2c 20 4d 41 43 48 45 50 |(x,z,u))|, MACHEP|
|00000590| 53 29 3b 0a 20 20 20 20 | 7d 0a 20 20 20 20 51 20 |S);. |}. Q |
|000005a0| 3d 20 6d 5f 67 65 74 28 | 41 2d 3e 6d 2c 41 2d 3e |= m_get(|A->m,A->|
|000005b0| 6d 29 3b 0a 20 20 20 20 | 6d 61 6b 65 51 28 41 2c |m);. |makeQ(A,|
|000005c0| 64 69 61 67 2c 51 29 3b | 0a 20 20 20 20 6d 61 6b |diag,Q);|. mak|
|000005d0| 65 52 28 41 2c 41 29 3b | 0a 20 20 20 20 6d 5f 6d |eR(A,A);|. m_m|
|000005e0| 6c 74 28 51 2c 41 2c 43 | 29 3b 0a 20 20 20 20 6d |lt(Q,A,C|);. m|
|000005f0| 5f 73 75 62 28 42 2c 43 | 2c 43 29 3b 0a 20 20 20 |_sub(B,C|,C);. |
|00000600| 20 69 66 20 28 20 6d 5f | 6e 6f 72 6d 31 28 43 29 | if ( m_|norm1(C)|
|00000610| 20 3e 3d 20 4d 41 43 48 | 45 50 53 2a 6d 5f 6e 6f | >= MACH|EPS*m_no|
|00000620| 72 6d 31 28 51 29 2a 6d | 5f 6e 6f 72 6d 31 28 42 |rm1(Q)*m|_norm1(B|
|00000630| 29 20 29 0a 20 20 20 20 | 7b 0a 09 65 72 72 6d 65 |) ). |{..errme|
|00000640| 73 67 28 22 51 52 66 61 | 63 74 6f 72 28 29 2f 6d |sg("QRfa|ctor()/m|
|00000650| 61 6b 65 51 28 29 2f 6d | 61 6b 65 52 28 29 22 29 |akeQ()/m|akeR()")|
|00000660| 3b 0a 09 70 72 69 6e 74 | 66 28 22 23 20 51 52 20 |;..print|f("# QR |
|00000670| 72 65 63 6f 6e 73 74 72 | 75 63 74 69 6f 6e 20 65 |reconstr|uction e|
|00000680| 72 72 6f 72 20 3d 20 25 | 67 20 5b 63 66 20 4d 41 |rror = %|g [cf MA|
|00000690| 43 48 45 50 53 20 3d 20 | 25 67 5d 5c 6e 22 2c 0a |CHEPS = |%g]\n",.|
|000006a0| 09 20 20 20 20 20 20 20 | 6d 5f 6e 6f 72 6d 31 28 |. |m_norm1(|
|000006b0| 43 29 2c 20 4d 41 43 48 | 45 50 53 29 3b 0a 20 20 |C), MACH|EPS);. |
|000006c0| 20 20 7d 0a 0a 20 20 20 | 20 4d 45 4d 43 48 4b 28 | }.. | MEMCHK(|
|000006d0| 29 3b 0a 0a 20 20 20 20 | 2f 2a 20 6e 6f 77 20 74 |);.. |/* now t|
|000006e0| 72 79 20 77 69 74 68 20 | 61 20 6e 6f 6e 2d 73 71 |ry with |a non-sq|
|000006f0| 75 61 72 65 20 6d 61 74 | 72 69 78 20 2a 2f 0a 20 |uare mat|rix */. |
|00000700| 20 20 20 41 20 3d 20 6d | 5f 72 65 73 69 7a 65 28 | A = m|_resize(|
|00000710| 41 2c 31 35 2c 37 29 3b | 0a 20 20 20 20 6d 5f 72 |A,15,7);|. m_r|
|00000720| 61 6e 64 28 41 29 3b 0a | 20 20 20 20 42 20 3d 20 |and(A);.| B = |
|00000730| 6d 5f 63 6f 70 79 28 41 | 2c 42 29 3b 0a 20 20 20 |m_copy(A|,B);. |
|00000740| 20 64 69 61 67 20 3d 20 | 76 5f 72 65 73 69 7a 65 | diag = |v_resize|
|00000750| 28 64 69 61 67 2c 41 2d | 3e 6e 29 3b 0a 20 20 20 |(diag,A-|>n);. |
|00000760| 20 62 65 74 61 20 3d 20 | 76 5f 72 65 73 69 7a 65 | beta = |v_resize|
|00000770| 28 62 65 74 61 2c 41 2d | 3e 6e 29 3b 0a 20 20 20 |(beta,A-|>n);. |
|00000780| 20 78 20 3d 20 76 5f 72 | 65 73 69 7a 65 28 78 2c | x = v_r|esize(x,|
|00000790| 41 2d 3e 6e 29 3b 0a 20 | 20 20 20 79 20 3d 20 76 |A->n);. | y = v|
|000007a0| 5f 72 65 73 69 7a 65 28 | 79 2c 41 2d 3e 6d 29 3b |_resize(|y,A->m);|
|000007b0| 0a 20 20 20 20 76 5f 72 | 61 6e 64 28 79 29 3b 0a |. v_r|and(y);.|
|000007c0| 20 20 20 20 51 52 66 61 | 63 74 6f 72 28 41 2c 64 | QRfa|ctor(A,d|
|000007d0| 69 61 67 29 3b 0a 20 20 | 20 20 78 20 3d 20 51 52 |iag);. | x = QR|
|000007e0| 73 6f 6c 76 65 28 41 2c | 64 69 61 67 2c 79 2c 78 |solve(A,|diag,y,x|
|000007f0| 29 3b 0a 20 20 20 20 2f | 2a 20 7a 20 69 73 20 74 |);. /|* z is t|
|00000800| 68 65 20 72 65 73 69 64 | 75 61 6c 20 76 65 63 74 |he resid|ual vect|
|00000810| 6f 72 20 2a 2f 0a 20 20 | 20 20 6d 76 5f 6d 6c 74 |or */. | mv_mlt|
|00000820| 28 42 2c 78 2c 7a 29 3b | 09 76 5f 73 75 62 28 7a |(B,x,z);|.v_sub(z|
|00000830| 2c 79 2c 7a 29 3b 0a 20 | 20 20 20 2f 2a 20 63 68 |,y,z);. | /* ch|
|00000840| 65 63 6b 20 42 5e 54 2e | 7a 20 3d 20 30 20 2a 2f |eck B^T.|z = 0 */|
|00000850| 0a 20 20 20 20 76 6d 5f | 6d 6c 74 28 42 2c 7a 2c |. vm_|mlt(B,z,|
|00000860| 75 29 3b 0a 20 20 20 20 | 69 66 20 28 20 76 5f 6e |u);. |if ( v_n|
|00000870| 6f 72 6d 32 28 75 29 20 | 3e 3d 20 4d 41 43 48 45 |orm2(u) |>= MACHE|
|00000880| 50 53 2a 6d 5f 6e 6f 72 | 6d 31 28 42 29 2a 76 5f |PS*m_nor|m1(B)*v_|
|00000890| 6e 6f 72 6d 32 28 79 29 | 20 29 0a 20 20 20 20 7b |norm2(y)| ). {|
|000008a0| 0a 09 65 72 72 6d 65 73 | 67 28 22 51 52 66 61 63 |..errmes|g("QRfac|
|000008b0| 74 6f 72 28 29 2f 51 52 | 73 6f 6c 76 65 28 29 22 |tor()/QR|solve()"|
|000008c0| 29 3b 0a 09 70 72 69 6e | 74 66 28 22 23 20 51 52 |);..prin|tf("# QR|
|000008d0| 20 73 6f 6c 75 74 69 6f | 6e 20 65 72 72 6f 72 20 | solutio|n error |
|000008e0| 3d 20 25 67 20 5b 63 66 | 20 4d 41 43 48 45 50 53 |= %g [cf| MACHEPS|
|000008f0| 20 3d 20 25 67 5d 5c 6e | 22 2c 0a 09 20 20 20 20 | = %g]\n|",.. |
|00000900| 20 20 20 76 5f 6e 6f 72 | 6d 32 28 75 29 2c 20 4d | v_nor|m2(u), M|
|00000910| 41 43 48 45 50 53 29 3b | 0a 20 20 20 20 7d 0a 20 |ACHEPS);|. }. |
|00000920| 20 20 20 51 20 3d 20 6d | 5f 72 65 73 69 7a 65 28 | Q = m|_resize(|
|00000930| 51 2c 41 2d 3e 6d 2c 41 | 2d 3e 6d 29 3b 0a 20 20 |Q,A->m,A|->m);. |
|00000940| 20 20 6d 61 6b 65 51 28 | 41 2c 64 69 61 67 2c 51 | makeQ(|A,diag,Q|
|00000950| 29 3b 0a 20 20 20 20 6d | 61 6b 65 52 28 41 2c 41 |);. m|akeR(A,A|
|00000960| 29 3b 0a 20 20 20 20 6d | 5f 6d 6c 74 28 51 2c 41 |);. m|_mlt(Q,A|
|00000970| 2c 43 29 3b 0a 20 20 20 | 20 6d 5f 73 75 62 28 42 |,C);. | m_sub(B|
|00000980| 2c 43 2c 43 29 3b 0a 20 | 20 20 20 69 66 20 28 20 |,C,C);. | if ( |
|00000990| 6d 5f 6e 6f 72 6d 31 28 | 43 29 20 3e 3d 20 4d 41 |m_norm1(|C) >= MA|
|000009a0| 43 48 45 50 53 2a 6d 5f | 6e 6f 72 6d 31 28 51 29 |CHEPS*m_|norm1(Q)|
|000009b0| 2a 6d 5f 6e 6f 72 6d 31 | 28 42 29 20 29 0a 20 20 |*m_norm1|(B) ). |
|000009c0| 20 20 7b 0a 09 65 72 72 | 6d 65 73 67 28 22 51 52 | {..err|mesg("QR|
|000009d0| 66 61 63 74 6f 72 28 29 | 2f 6d 61 6b 65 51 28 29 |factor()|/makeQ()|
|000009e0| 2f 6d 61 6b 65 52 28 29 | 22 29 3b 0a 09 70 72 69 |/makeR()|");..pri|
|000009f0| 6e 74 66 28 22 23 20 51 | 52 20 72 65 63 6f 6e 73 |ntf("# Q|R recons|
|00000a00| 74 72 75 63 74 69 6f 6e | 20 65 72 72 6f 72 20 3d |truction| error =|
|00000a10| 20 25 67 20 5b 63 66 20 | 4d 41 43 48 45 50 53 20 | %g [cf |MACHEPS |
|00000a20| 3d 20 25 67 5d 5c 6e 22 | 2c 0a 09 20 20 20 20 20 |= %g]\n"|,.. |
|00000a30| 20 20 6d 5f 6e 6f 72 6d | 31 28 43 29 2c 20 4d 41 | m_norm|1(C), MA|
|00000a40| 43 48 45 50 53 29 3b 0a | 20 20 20 20 7d 0a 20 20 |CHEPS);.| }. |
|00000a50| 20 20 44 20 3d 20 6d 5f | 67 65 74 28 41 2d 3e 6d | D = m_|get(A->m|
|00000a60| 2c 51 2d 3e 6d 29 3b 0a | 20 20 20 20 6d 74 72 6d |,Q->m);.| mtrm|
|00000a70| 5f 6d 6c 74 28 51 2c 51 | 2c 44 29 3b 0a 20 20 20 |_mlt(Q,Q|,D);. |
|00000a80| 20 66 6f 72 20 28 20 69 | 20 3d 20 30 3b 20 69 20 | for ( i| = 0; i |
|00000a90| 3c 20 44 2d 3e 6d 3b 20 | 69 2b 2b 20 29 0a 09 6d |< D->m; |i++ )..m|
|00000aa0| 5f 73 65 74 5f 76 61 6c | 28 44 2c 69 2c 69 2c 6d |_set_val|(D,i,i,m|
|00000ab0| 5f 65 6e 74 72 79 28 44 | 2c 69 2c 69 29 2d 31 2e |_entry(D|,i,i)-1.|
|00000ac0| 30 29 3b 0a 20 20 20 20 | 69 66 20 28 20 6d 5f 6e |0);. |if ( m_n|
|00000ad0| 6f 72 6d 31 28 44 29 20 | 3e 3d 20 4d 41 43 48 45 |orm1(D) |>= MACHE|
|00000ae0| 50 53 2a 6d 5f 6e 6f 72 | 6d 31 28 51 29 2a 6d 5f |PS*m_nor|m1(Q)*m_|
|00000af0| 6e 6f 72 6d 5f 69 6e 66 | 28 51 29 20 29 0a 20 20 |norm_inf|(Q) ). |
|00000b00| 20 20 7b 0a 09 65 72 72 | 6d 65 73 67 28 22 51 52 | {..err|mesg("QR|
|00000b10| 66 61 63 74 6f 72 28 29 | 2f 6d 61 6b 65 51 28 29 |factor()|/makeQ()|
|00000b20| 2f 6d 61 6b 65 52 28 29 | 22 29 3b 0a 09 70 72 69 |/makeR()|");..pri|
|00000b30| 6e 74 66 28 22 23 20 51 | 52 20 6f 72 74 68 6f 67 |ntf("# Q|R orthog|
|00000b40| 6f 6e 61 6c 69 74 79 20 | 65 72 72 6f 72 20 3d 20 |onality |error = |
|00000b50| 25 67 20 5b 63 66 20 4d | 41 43 48 45 50 53 20 3d |%g [cf M|ACHEPS =|
|00000b60| 20 25 67 5d 5c 6e 22 2c | 0a 09 20 20 20 20 20 20 | %g]\n",|.. |
|00000b70| 20 6d 5f 6e 6f 72 6d 31 | 28 44 29 2c 20 4d 41 43 | m_norm1|(D), MAC|
|00000b80| 48 45 50 53 29 3b 0a 20 | 20 20 20 7d 0a 0a 20 20 |HEPS);. | }.. |
|00000b90| 20 20 4d 45 4d 43 48 4b | 28 29 3b 0a 0a 20 20 20 | MEMCHK|();.. |
|00000ba0| 20 2f 2a 20 51 52 43 50 | 20 66 61 63 74 6f 72 69 | /* QRCP| factori|
|00000bb0| 73 61 74 69 6f 6e 20 2a | 2f 0a 20 20 20 20 6d 5f |sation *|/. m_|
|00000bc0| 63 6f 70 79 28 42 2c 41 | 29 3b 0a 20 20 20 20 6e |copy(B,A|);. n|
|00000bd0| 6f 74 69 63 65 28 22 51 | 52 20 66 61 63 74 6f 72 |otice("Q|R factor|
|00000be0| 2f 73 6f 6c 76 65 20 77 | 69 74 68 20 63 6f 6c 75 |/solve w|ith colu|
|00000bf0| 6d 6e 20 70 69 76 6f 74 | 69 6e 67 22 29 3b 0a 20 |mn pivot|ing");. |
|00000c00| 20 20 20 70 69 76 6f 74 | 20 3d 20 70 78 5f 72 65 | pivot| = px_re|
|00000c10| 73 69 7a 65 28 70 69 76 | 6f 74 2c 41 2d 3e 6e 29 |size(piv|ot,A->n)|
|00000c20| 3b 0a 20 20 20 20 51 52 | 43 50 66 61 63 74 6f 72 |;. QR|CPfactor|
|00000c30| 28 41 2c 64 69 61 67 2c | 70 69 76 6f 74 29 3b 0a |(A,diag,|pivot);.|
|00000c40| 20 20 20 20 7a 20 3d 20 | 76 5f 72 65 73 69 7a 65 | z = |v_resize|
|00000c50| 28 7a 2c 41 2d 3e 6e 29 | 3b 0a 20 20 20 20 51 52 |(z,A->n)|;. QR|
|00000c60| 43 50 73 6f 6c 76 65 28 | 41 2c 64 69 61 67 2c 70 |CPsolve(|A,diag,p|
|00000c70| 69 76 6f 74 2c 79 2c 7a | 29 3b 0a 20 20 20 20 2f |ivot,y,z|);. /|
|00000c80| 2a 20 70 78 69 6e 76 5f | 76 65 63 28 70 69 76 6f |* pxinv_|vec(pivo|
|00000c90| 74 2c 7a 2c 78 29 3b 20 | 2a 2f 0a 20 20 20 20 2f |t,z,x); |*/. /|
|00000ca0| 2a 20 6e 6f 77 20 63 6f | 6d 70 75 74 65 20 72 65 |* now co|mpute re|
|00000cb0| 73 69 64 75 61 6c 20 28 | 7a 29 20 76 65 63 74 6f |sidual (|z) vecto|
|00000cc0| 72 20 2a 2f 0a 20 20 20 | 20 6d 76 5f 6d 6c 74 28 |r */. | mv_mlt(|
|00000cd0| 42 2c 78 2c 7a 29 3b 09 | 76 5f 73 75 62 28 7a 2c |B,x,z);.|v_sub(z,|
|00000ce0| 79 2c 7a 29 3b 0a 20 20 | 20 20 2f 2a 20 63 68 65 |y,z);. | /* che|
|00000cf0| 63 6b 20 42 5e 54 2e 7a | 20 3d 20 30 20 2a 2f 0a |ck B^T.z| = 0 */.|
|00000d00| 20 20 20 20 76 6d 5f 6d | 6c 74 28 42 2c 7a 2c 75 | vm_m|lt(B,z,u|
|00000d10| 29 3b 0a 20 20 20 20 69 | 66 20 28 20 76 5f 6e 6f |);. i|f ( v_no|
|00000d20| 72 6d 32 28 75 29 20 3e | 3d 20 4d 41 43 48 45 50 |rm2(u) >|= MACHEP|
|00000d30| 53 2a 6d 5f 6e 6f 72 6d | 31 28 42 29 2a 76 5f 6e |S*m_norm|1(B)*v_n|
|00000d40| 6f 72 6d 32 28 79 29 20 | 29 0a 20 20 20 20 7b 0a |orm2(y) |). {.|
|00000d50| 09 65 72 72 6d 65 73 67 | 28 22 51 52 43 50 66 61 |.errmesg|("QRCPfa|
|00000d60| 63 74 6f 72 28 29 2f 51 | 52 73 6f 6c 76 65 28 29 |ctor()/Q|Rsolve()|
|00000d70| 22 | |" | |
+--------+-------------------------+-------------------------+--------+--------+