mirror of
https://github.com/holub/mame
synced 2025-10-04 08:28:39 +03:00
Merge me later
This commit is contained in:
parent
afbb4b6581
commit
2762b9f5ac
@ -15,8 +15,8 @@ NETLIST_START(dummy)
|
||||
PARAM(Solver.GS_LOOPS, 1)
|
||||
PARAM(Solver.GS_THRESHOLD, 6)
|
||||
//PARAM(Solver.ITERATIVE, "W")
|
||||
PARAM(Solver.ITERATIVE, "MAT_CR")
|
||||
//PARAM(Solver.ITERATIVE, "MAT")
|
||||
//PARAM(Solver.ITERATIVE, "MAT_CR")
|
||||
PARAM(Solver.ITERATIVE, "MAT")
|
||||
//PARAM(Solver.ITERATIVE, "GMRES")
|
||||
//PARAM(Solver.ITERATIVE, "SOR")
|
||||
PARAM(Solver.DYNAMIC_TS, 0)
|
||||
|
@ -247,6 +247,612 @@ void matrix_solver_direct_t<m_N, _storage_N>::do_work(const int id, void *param)
|
||||
template <unsigned m_N, unsigned _storage_N>
|
||||
void matrix_solver_direct_t<m_N, _storage_N>::LE_solve()
|
||||
{
|
||||
#if 0
|
||||
// Static matrix compilation
|
||||
const double fd0 = 1.0 / A(0,0);
|
||||
const double f1 = -fd0 * A(23,0);
|
||||
A(23,23) += f1 * A(0,23);
|
||||
RHS(23) += f1 * RHS(0);
|
||||
const double fd1 = 1.0 / A(1,1);
|
||||
const double f2 = -fd1 * A(39,1);
|
||||
A(39,39) += f2 * A(1,39);
|
||||
RHS(39) += f2 * RHS(1);
|
||||
const double fd2 = 1.0 / A(2,2);
|
||||
const double f3 = -fd2 * A(31,2);
|
||||
A(31,31) += f3 * A(2,31);
|
||||
RHS(31) += f3 * RHS(2);
|
||||
const double fd3 = 1.0 / A(3,3);
|
||||
const double f4 = -fd3 * A(19,3);
|
||||
A(19,19) += f4 * A(3,19);
|
||||
RHS(19) += f4 * RHS(3);
|
||||
const double fd4 = 1.0 / A(4,4);
|
||||
const double f5 = -fd4 * A(29,4);
|
||||
A(29,29) += f5 * A(4,29);
|
||||
RHS(29) += f5 * RHS(4);
|
||||
const double fd5 = 1.0 / A(5,5);
|
||||
const double f6 = -fd5 * A(32,5);
|
||||
A(32,32) += f6 * A(5,32);
|
||||
RHS(32) += f6 * RHS(5);
|
||||
const double fd6 = 1.0 / A(6,6);
|
||||
const double f7 = -fd6 * A(69,6);
|
||||
A(69,69) += f7 * A(6,69);
|
||||
RHS(69) += f7 * RHS(6);
|
||||
const double fd7 = 1.0 / A(7,7);
|
||||
const double f8 = -fd7 * A(22,7);
|
||||
A(22,22) += f8 * A(7,22);
|
||||
RHS(22) += f8 * RHS(7);
|
||||
const double fd8 = 1.0 / A(8,8);
|
||||
const double f9 = -fd8 * A(28,8);
|
||||
A(28,28) += f9 * A(8,28);
|
||||
RHS(28) += f9 * RHS(8);
|
||||
const double fd9 = 1.0 / A(9,9);
|
||||
const double f10 = -fd9 * A(82,9);
|
||||
A(82,82) += f10 * A(9,82);
|
||||
RHS(82) += f10 * RHS(9);
|
||||
const double fd10 = 1.0 / A(10,10);
|
||||
const double f11 = -fd10 * A(82,10);
|
||||
A(82,82) += f11 * A(10,82);
|
||||
RHS(82) += f11 * RHS(10);
|
||||
const double fd11 = 1.0 / A(11,11);
|
||||
const double f12 = -fd11 * A(38,11);
|
||||
A(38,38) += f12 * A(11,38);
|
||||
RHS(38) += f12 * RHS(11);
|
||||
const double fd12 = 1.0 / A(12,12);
|
||||
const double f13 = -fd12 * A(43,12);
|
||||
A(43,84) += f13 * A(12,84);
|
||||
RHS(43) += f13 * RHS(12);
|
||||
const double f14 = -fd12 * A(84,12);
|
||||
A(84,84) += f14 * A(12,84);
|
||||
RHS(84) += f14 * RHS(12);
|
||||
const double fd13 = 1.0 / A(13,13);
|
||||
const double f15 = -fd13 * A(48,13);
|
||||
A(48,48) += f15 * A(13,48);
|
||||
RHS(48) += f15 * RHS(13);
|
||||
const double fd14 = 1.0 / A(14,14);
|
||||
const double f16 = -fd14 * A(56,14);
|
||||
A(56,56) += f16 * A(14,56);
|
||||
RHS(56) += f16 * RHS(14);
|
||||
const double fd15 = 1.0 / A(15,15);
|
||||
const double f17 = -fd15 * A(60,15);
|
||||
A(60,60) += f17 * A(15,60);
|
||||
RHS(60) += f17 * RHS(15);
|
||||
const double fd16 = 1.0 / A(16,16);
|
||||
const double f18 = -fd16 * A(81,16);
|
||||
A(81,81) += f18 * A(16,81);
|
||||
A(81,85) = f18 * A(16,85);
|
||||
RHS(81) += f18 * RHS(16);
|
||||
const double f19 = -fd16 * A(85,16);
|
||||
A(85,81) = f19 * A(16,81);
|
||||
A(85,85) += f19 * A(16,85);
|
||||
RHS(85) += f19 * RHS(16);
|
||||
const double fd17 = 1.0 / A(17,17);
|
||||
const double f20 = -fd17 * A(72,17);
|
||||
A(72,72) += f20 * A(17,72);
|
||||
A(72,85) = f20 * A(17,85);
|
||||
RHS(72) += f20 * RHS(17);
|
||||
const double f21 = -fd17 * A(85,17);
|
||||
A(85,72) = f21 * A(17,72);
|
||||
A(85,85) += f21 * A(17,85);
|
||||
RHS(85) += f21 * RHS(17);
|
||||
const double fd18 = 1.0 / A(18,18);
|
||||
const double f22 = -fd18 * A(72,18);
|
||||
A(72,72) += f22 * A(18,72);
|
||||
A(72,78) += f22 * A(18,78);
|
||||
RHS(72) += f22 * RHS(18);
|
||||
const double f23 = -fd18 * A(78,18);
|
||||
A(78,72) += f23 * A(18,72);
|
||||
A(78,78) += f23 * A(18,78);
|
||||
RHS(78) += f23 * RHS(18);
|
||||
const double fd19 = 1.0 / A(19,19);
|
||||
const double f24 = -fd19 * A(87,19);
|
||||
A(87,87) += f24 * A(19,87);
|
||||
RHS(87) += f24 * RHS(19);
|
||||
const double fd20 = 1.0 / A(20,20);
|
||||
const double f25 = -fd20 * A(71,20);
|
||||
A(71,69) += f25 * A(20,69);
|
||||
A(71,85) = f25 * A(20,85);
|
||||
RHS(71) += f25 * RHS(20);
|
||||
const double fd21 = 1.0 / A(21,21);
|
||||
const double f26 = -fd21 * A(24,21);
|
||||
A(24,63) = f26 * A(21,63);
|
||||
A(24,74) += f26 * A(21,74);
|
||||
RHS(24) += f26 * RHS(21);
|
||||
const double f27 = -fd21 * A(63,21);
|
||||
A(63,63) += f27 * A(21,63);
|
||||
A(63,74) += f27 * A(21,74);
|
||||
RHS(63) += f27 * RHS(21);
|
||||
const double f28 = -fd21 * A(74,21);
|
||||
A(74,63) += f28 * A(21,63);
|
||||
A(74,74) += f28 * A(21,74);
|
||||
RHS(74) += f28 * RHS(21);
|
||||
const double fd22 = 1.0 / A(22,22);
|
||||
const double f29 = -fd22 * A(63,22);
|
||||
A(63,63) += f29 * A(22,63);
|
||||
RHS(63) += f29 * RHS(22);
|
||||
const double fd23 = 1.0 / A(23,23);
|
||||
const double f30 = -fd23 * A(87,23);
|
||||
A(87,87) += f30 * A(23,87);
|
||||
RHS(87) += f30 * RHS(23);
|
||||
const double fd24 = 1.0 / A(24,24);
|
||||
const double f31 = -fd24 * A(74,24);
|
||||
A(74,63) += f31 * A(24,63);
|
||||
A(74,74) += f31 * A(24,74);
|
||||
RHS(74) += f31 * RHS(24);
|
||||
const double fd25 = 1.0 / A(25,25);
|
||||
const double f32 = -fd25 * A(77,25);
|
||||
A(77,26) += f32 * A(25,26);
|
||||
A(77,77) += f32 * A(25,77);
|
||||
RHS(77) += f32 * RHS(25);
|
||||
const double fd26 = 1.0 / A(26,26);
|
||||
const double f33 = -fd26 * A(62,26);
|
||||
A(62,62) += f33 * A(26,62);
|
||||
A(62,77) += f33 * A(26,77);
|
||||
RHS(62) += f33 * RHS(26);
|
||||
const double f34 = -fd26 * A(77,26);
|
||||
A(77,62) += f34 * A(26,62);
|
||||
A(77,77) += f34 * A(26,77);
|
||||
RHS(77) += f34 * RHS(26);
|
||||
const double fd27 = 1.0 / A(27,27);
|
||||
const double f35 = -fd27 * A(62,27);
|
||||
A(62,62) += f35 * A(27,62);
|
||||
A(62,68) = f35 * A(27,68);
|
||||
RHS(62) += f35 * RHS(27);
|
||||
const double f36 = -fd27 * A(68,27);
|
||||
A(68,62) = f36 * A(27,62);
|
||||
A(68,68) += f36 * A(27,68);
|
||||
RHS(68) += f36 * RHS(27);
|
||||
const double fd28 = 1.0 / A(28,28);
|
||||
const double f37 = -fd28 * A(30,28);
|
||||
A(30,68) += f37 * A(28,68);
|
||||
RHS(30) += f37 * RHS(28);
|
||||
const double f38 = -fd28 * A(68,28);
|
||||
A(68,68) += f38 * A(28,68);
|
||||
RHS(68) += f38 * RHS(28);
|
||||
const double fd29 = 1.0 / A(29,29);
|
||||
const double f39 = -fd29 * A(87,29);
|
||||
A(87,87) += f39 * A(29,87);
|
||||
RHS(87) += f39 * RHS(29);
|
||||
const double fd30 = 1.0 / A(30,30);
|
||||
const double f40 = -fd30 * A(68,30);
|
||||
A(68,68) += f40 * A(30,68);
|
||||
RHS(68) += f40 * RHS(30);
|
||||
const double fd31 = 1.0 / A(31,31);
|
||||
const double f41 = -fd31 * A(87,31);
|
||||
A(87,87) += f41 * A(31,87);
|
||||
RHS(87) += f41 * RHS(31);
|
||||
const double fd32 = 1.0 / A(32,32);
|
||||
const double f42 = -fd32 * A(87,32);
|
||||
A(87,87) += f42 * A(32,87);
|
||||
RHS(87) += f42 * RHS(32);
|
||||
const double fd33 = 1.0 / A(33,33);
|
||||
const double f43 = -fd33 * A(79,33);
|
||||
A(79,79) += f43 * A(33,79);
|
||||
A(79,85) = f43 * A(33,85);
|
||||
RHS(79) += f43 * RHS(33);
|
||||
const double f44 = -fd33 * A(85,33);
|
||||
A(85,79) = f44 * A(33,79);
|
||||
A(85,85) += f44 * A(33,85);
|
||||
RHS(85) += f44 * RHS(33);
|
||||
const double fd34 = 1.0 / A(34,34);
|
||||
const double f45 = -fd34 * A(50,34);
|
||||
A(50,65) = f45 * A(34,65);
|
||||
A(50,79) += f45 * A(34,79);
|
||||
RHS(50) += f45 * RHS(34);
|
||||
const double f46 = -fd34 * A(65,34);
|
||||
A(65,65) += f46 * A(34,65);
|
||||
A(65,79) += f46 * A(34,79);
|
||||
RHS(65) += f46 * RHS(34);
|
||||
const double f47 = -fd34 * A(79,34);
|
||||
A(79,65) += f47 * A(34,65);
|
||||
A(79,79) += f47 * A(34,79);
|
||||
RHS(79) += f47 * RHS(34);
|
||||
const double fd35 = 1.0 / A(35,35);
|
||||
const double f48 = -fd35 * A(36,35);
|
||||
A(36,36) += f48 * A(35,36);
|
||||
A(36,66) = f48 * A(35,66);
|
||||
RHS(36) += f48 * RHS(35);
|
||||
const double f49 = -fd35 * A(66,35);
|
||||
A(66,36) = f49 * A(35,36);
|
||||
A(66,66) += f49 * A(35,66);
|
||||
RHS(66) += f49 * RHS(35);
|
||||
const double fd36 = 1.0 / A(36,36);
|
||||
const double f50 = -fd36 * A(37,36);
|
||||
A(37,37) += f50 * A(36,37);
|
||||
A(37,66) = f50 * A(36,66);
|
||||
RHS(37) += f50 * RHS(36);
|
||||
const double f51 = -fd36 * A(66,36);
|
||||
A(66,37) = f51 * A(36,37);
|
||||
A(66,66) += f51 * A(36,66);
|
||||
RHS(66) += f51 * RHS(36);
|
||||
const double fd37 = 1.0 / A(37,37);
|
||||
const double f52 = -fd37 * A(38,37);
|
||||
A(38,38) += f52 * A(37,38);
|
||||
A(38,66) = f52 * A(37,66);
|
||||
RHS(38) += f52 * RHS(37);
|
||||
const double f53 = -fd37 * A(66,37);
|
||||
A(66,38) = f53 * A(37,38);
|
||||
A(66,66) += f53 * A(37,66);
|
||||
RHS(66) += f53 * RHS(37);
|
||||
const double fd38 = 1.0 / A(38,38);
|
||||
const double f54 = -fd38 * A(66,38);
|
||||
A(66,66) += f54 * A(38,66);
|
||||
RHS(66) += f54 * RHS(38);
|
||||
const double fd39 = 1.0 / A(39,39);
|
||||
const double f55 = -fd39 * A(87,39);
|
||||
A(87,87) += f55 * A(39,87);
|
||||
RHS(87) += f55 * RHS(39);
|
||||
const double fd40 = 1.0 / A(40,40);
|
||||
const double f56 = -fd40 * A(41,40);
|
||||
A(41,41) += f56 * A(40,41);
|
||||
A(41,86) = f56 * A(40,86);
|
||||
RHS(41) += f56 * RHS(40);
|
||||
const double f57 = -fd40 * A(86,40);
|
||||
A(86,41) = f57 * A(40,41);
|
||||
A(86,86) += f57 * A(40,86);
|
||||
RHS(86) += f57 * RHS(40);
|
||||
const double fd41 = 1.0 / A(41,41);
|
||||
const double f58 = -fd41 * A(42,41);
|
||||
A(42,42) += f58 * A(41,42);
|
||||
A(42,86) = f58 * A(41,86);
|
||||
RHS(42) += f58 * RHS(41);
|
||||
const double f59 = -fd41 * A(86,41);
|
||||
A(86,42) = f59 * A(41,42);
|
||||
A(86,86) += f59 * A(41,86);
|
||||
RHS(86) += f59 * RHS(41);
|
||||
const double fd42 = 1.0 / A(42,42);
|
||||
const double f60 = -fd42 * A(86,42);
|
||||
A(86,43) = f60 * A(42,43);
|
||||
A(86,86) += f60 * A(42,86);
|
||||
RHS(86) += f60 * RHS(42);
|
||||
const double fd43 = 1.0 / A(43,43);
|
||||
const double f61 = -fd43 * A(86,43);
|
||||
A(86,84) = f61 * A(43,84);
|
||||
RHS(86) += f61 * RHS(43);
|
||||
const double fd44 = 1.0 / A(44,44);
|
||||
const double f62 = -fd44 * A(84,44);
|
||||
A(84,84) += f62 * A(44,84);
|
||||
A(84,87) = f62 * A(44,87);
|
||||
RHS(84) += f62 * RHS(44);
|
||||
const double f63 = -fd44 * A(87,44);
|
||||
A(87,84) = f63 * A(44,84);
|
||||
A(87,87) += f63 * A(44,87);
|
||||
RHS(87) += f63 * RHS(44);
|
||||
const double fd45 = 1.0 / A(45,45);
|
||||
const double f64 = -fd45 * A(46,45);
|
||||
A(46,46) += f64 * A(45,46);
|
||||
A(46,67) = f64 * A(45,67);
|
||||
RHS(46) += f64 * RHS(45);
|
||||
const double f65 = -fd45 * A(67,45);
|
||||
A(67,46) = f65 * A(45,46);
|
||||
A(67,67) += f65 * A(45,67);
|
||||
RHS(67) += f65 * RHS(45);
|
||||
const double fd46 = 1.0 / A(46,46);
|
||||
const double f66 = -fd46 * A(47,46);
|
||||
A(47,47) += f66 * A(46,47);
|
||||
A(47,67) = f66 * A(46,67);
|
||||
RHS(47) += f66 * RHS(46);
|
||||
const double f67 = -fd46 * A(67,46);
|
||||
A(67,47) = f67 * A(46,47);
|
||||
A(67,67) += f67 * A(46,67);
|
||||
RHS(67) += f67 * RHS(46);
|
||||
const double fd47 = 1.0 / A(47,47);
|
||||
const double f68 = -fd47 * A(48,47);
|
||||
A(48,48) += f68 * A(47,48);
|
||||
A(48,67) = f68 * A(47,67);
|
||||
RHS(48) += f68 * RHS(47);
|
||||
const double f69 = -fd47 * A(67,47);
|
||||
A(67,48) = f69 * A(47,48);
|
||||
A(67,67) += f69 * A(47,67);
|
||||
RHS(67) += f69 * RHS(47);
|
||||
const double fd48 = 1.0 / A(48,48);
|
||||
const double f70 = -fd48 * A(67,48);
|
||||
A(67,67) += f70 * A(48,67);
|
||||
RHS(67) += f70 * RHS(48);
|
||||
const double fd49 = 1.0 / A(49,49);
|
||||
const double f71 = -fd49 * A(80,49);
|
||||
A(80,80) += f71 * A(49,80);
|
||||
A(80,84) += f71 * A(49,84);
|
||||
RHS(80) += f71 * RHS(49);
|
||||
const double f72 = -fd49 * A(84,49);
|
||||
A(84,80) += f72 * A(49,80);
|
||||
A(84,84) += f72 * A(49,84);
|
||||
RHS(84) += f72 * RHS(49);
|
||||
const double fd50 = 1.0 / A(50,50);
|
||||
const double f73 = -fd50 * A(79,50);
|
||||
A(79,65) += f73 * A(50,65);
|
||||
A(79,79) += f73 * A(50,79);
|
||||
RHS(79) += f73 * RHS(50);
|
||||
const double fd51 = 1.0 / A(51,51);
|
||||
const double f74 = -fd51 * A(83,51);
|
||||
A(83,83) += f74 * A(51,83);
|
||||
A(83,85) = f74 * A(51,85);
|
||||
RHS(83) += f74 * RHS(51);
|
||||
const double f75 = -fd51 * A(85,51);
|
||||
A(85,83) = f75 * A(51,83);
|
||||
A(85,85) += f75 * A(51,85);
|
||||
RHS(85) += f75 * RHS(51);
|
||||
const double fd52 = 1.0 / A(52,52);
|
||||
const double f76 = -fd52 * A(76,52);
|
||||
A(76,76) += f76 * A(52,76);
|
||||
A(76,83) += f76 * A(52,83);
|
||||
RHS(76) += f76 * RHS(52);
|
||||
const double f77 = -fd52 * A(83,52);
|
||||
A(83,76) += f77 * A(52,76);
|
||||
A(83,83) += f77 * A(52,83);
|
||||
RHS(83) += f77 * RHS(52);
|
||||
const double fd53 = 1.0 / A(53,53);
|
||||
const double f78 = -fd53 * A(54,53);
|
||||
A(54,54) += f78 * A(53,54);
|
||||
A(54,64) = f78 * A(53,64);
|
||||
RHS(54) += f78 * RHS(53);
|
||||
const double f79 = -fd53 * A(64,53);
|
||||
A(64,54) = f79 * A(53,54);
|
||||
A(64,64) += f79 * A(53,64);
|
||||
RHS(64) += f79 * RHS(53);
|
||||
const double fd54 = 1.0 / A(54,54);
|
||||
const double f80 = -fd54 * A(64,54);
|
||||
A(64,64) += f80 * A(54,64);
|
||||
A(64,83) = f80 * A(54,83);
|
||||
RHS(64) += f80 * RHS(54);
|
||||
const double f81 = -fd54 * A(83,54);
|
||||
A(83,64) = f81 * A(54,64);
|
||||
A(83,83) += f81 * A(54,83);
|
||||
RHS(83) += f81 * RHS(54);
|
||||
const double fd55 = 1.0 / A(55,55);
|
||||
const double f82 = -fd55 * A(56,55);
|
||||
A(56,56) += f82 * A(55,56);
|
||||
A(56,64) = f82 * A(55,64);
|
||||
RHS(56) += f82 * RHS(55);
|
||||
const double f83 = -fd55 * A(64,55);
|
||||
A(64,56) = f83 * A(55,56);
|
||||
A(64,64) += f83 * A(55,64);
|
||||
RHS(64) += f83 * RHS(55);
|
||||
const double fd56 = 1.0 / A(56,56);
|
||||
const double f84 = -fd56 * A(64,56);
|
||||
A(64,64) += f84 * A(56,64);
|
||||
RHS(64) += f84 * RHS(56);
|
||||
const double fd57 = 1.0 / A(57,57);
|
||||
const double f85 = -fd57 * A(78,57);
|
||||
A(78,78) += f85 * A(57,78);
|
||||
A(78,80) = f85 * A(57,80);
|
||||
RHS(78) += f85 * RHS(57);
|
||||
const double f86 = -fd57 * A(80,57);
|
||||
A(80,78) = f86 * A(57,78);
|
||||
A(80,80) += f86 * A(57,80);
|
||||
RHS(80) += f86 * RHS(57);
|
||||
const double fd58 = 1.0 / A(58,58);
|
||||
const double f87 = -fd58 * A(75,58);
|
||||
A(75,75) += f87 * A(58,75);
|
||||
A(75,81) += f87 * A(58,81);
|
||||
RHS(75) += f87 * RHS(58);
|
||||
const double f88 = -fd58 * A(81,58);
|
||||
A(81,75) += f88 * A(58,75);
|
||||
A(81,81) += f88 * A(58,81);
|
||||
RHS(81) += f88 * RHS(58);
|
||||
const double fd59 = 1.0 / A(59,59);
|
||||
const double f89 = -fd59 * A(60,59);
|
||||
A(60,60) += f89 * A(59,60);
|
||||
A(60,70) = f89 * A(59,70);
|
||||
RHS(60) += f89 * RHS(59);
|
||||
const double f90 = -fd59 * A(70,59);
|
||||
A(70,60) = f90 * A(59,60);
|
||||
A(70,70) += f90 * A(59,70);
|
||||
RHS(70) += f90 * RHS(59);
|
||||
const double fd60 = 1.0 / A(60,60);
|
||||
const double f91 = -fd60 * A(70,60);
|
||||
A(70,70) += f91 * A(60,70);
|
||||
RHS(70) += f91 * RHS(60);
|
||||
const double fd61 = 1.0 / A(61,61);
|
||||
const double f92 = -fd61 * A(73,61);
|
||||
A(73,73) += f92 * A(61,73);
|
||||
A(73,75) = f92 * A(61,75);
|
||||
RHS(73) += f92 * RHS(61);
|
||||
const double f93 = -fd61 * A(75,61);
|
||||
A(75,73) = f93 * A(61,73);
|
||||
A(75,75) += f93 * A(61,75);
|
||||
RHS(75) += f93 * RHS(61);
|
||||
const double fd62 = 1.0 / A(62,62);
|
||||
const double f94 = -fd62 * A(68,62);
|
||||
A(68,68) += f94 * A(62,68);
|
||||
A(68,77) = f94 * A(62,77);
|
||||
RHS(68) += f94 * RHS(62);
|
||||
const double f95 = -fd62 * A(77,62);
|
||||
A(77,68) = f95 * A(62,68);
|
||||
A(77,77) += f95 * A(62,77);
|
||||
RHS(77) += f95 * RHS(62);
|
||||
const double fd63 = 1.0 / A(63,63);
|
||||
const double f96 = -fd63 * A(74,63);
|
||||
A(74,74) += f96 * A(63,74);
|
||||
RHS(74) += f96 * RHS(63);
|
||||
const double fd64 = 1.0 / A(64,64);
|
||||
const double f97 = -fd64 * A(76,64);
|
||||
A(76,76) += f97 * A(64,76);
|
||||
A(76,83) += f97 * A(64,83);
|
||||
RHS(76) += f97 * RHS(64);
|
||||
const double f98 = -fd64 * A(83,64);
|
||||
A(83,76) += f98 * A(64,76);
|
||||
A(83,83) += f98 * A(64,83);
|
||||
RHS(83) += f98 * RHS(64);
|
||||
const double fd65 = 1.0 / A(65,65);
|
||||
const double f99 = -fd65 * A(79,65);
|
||||
A(79,79) += f99 * A(65,79);
|
||||
A(79,86) = f99 * A(65,86);
|
||||
RHS(79) += f99 * RHS(65);
|
||||
const double f100 = -fd65 * A(86,65);
|
||||
A(86,79) = f100 * A(65,79);
|
||||
A(86,86) += f100 * A(65,86);
|
||||
RHS(86) += f100 * RHS(65);
|
||||
const double fd66 = 1.0 / A(66,66);
|
||||
const double f101 = -fd66 * A(86,66);
|
||||
A(86,86) += f101 * A(66,86);
|
||||
RHS(86) += f101 * RHS(66);
|
||||
const double fd67 = 1.0 / A(67,67);
|
||||
const double f102 = -fd67 * A(86,67);
|
||||
A(86,86) += f102 * A(67,86);
|
||||
RHS(86) += f102 * RHS(67);
|
||||
const double fd68 = 1.0 / A(68,68);
|
||||
const double f103 = -fd68 * A(77,68);
|
||||
A(77,77) += f103 * A(68,77);
|
||||
RHS(77) += f103 * RHS(68);
|
||||
const double fd69 = 1.0 / A(69,69);
|
||||
const double f104 = -fd69 * A(71,69);
|
||||
A(71,71) += f104 * A(69,71);
|
||||
A(71,85) += f104 * A(69,85);
|
||||
RHS(71) += f104 * RHS(69);
|
||||
const double f105 = -fd69 * A(85,69);
|
||||
A(85,71) = f105 * A(69,71);
|
||||
A(85,85) += f105 * A(69,85);
|
||||
RHS(85) += f105 * RHS(69);
|
||||
const double fd70 = 1.0 / A(70,70);
|
||||
const double f106 = -fd70 * A(73,70);
|
||||
A(73,73) += f106 * A(70,73);
|
||||
A(73,78) = f106 * A(70,78);
|
||||
RHS(73) += f106 * RHS(70);
|
||||
const double f107 = -fd70 * A(78,70);
|
||||
A(78,73) = f107 * A(70,73);
|
||||
A(78,78) += f107 * A(70,78);
|
||||
RHS(78) += f107 * RHS(70);
|
||||
const double fd71 = 1.0 / A(71,71);
|
||||
const double f108 = -fd71 * A(82,71);
|
||||
A(82,82) += f108 * A(71,82);
|
||||
A(82,85) = f108 * A(71,85);
|
||||
RHS(82) += f108 * RHS(71);
|
||||
const double f109 = -fd71 * A(85,71);
|
||||
A(85,82) = f109 * A(71,82);
|
||||
A(85,85) += f109 * A(71,85);
|
||||
RHS(85) += f109 * RHS(71);
|
||||
const double fd72 = 1.0 / A(72,72);
|
||||
const double f110 = -fd72 * A(78,72);
|
||||
A(78,78) += f110 * A(72,78);
|
||||
A(78,85) = f110 * A(72,85);
|
||||
RHS(78) += f110 * RHS(72);
|
||||
const double f111 = -fd72 * A(85,72);
|
||||
A(85,78) = f111 * A(72,78);
|
||||
A(85,85) += f111 * A(72,85);
|
||||
RHS(85) += f111 * RHS(72);
|
||||
const double fd73 = 1.0 / A(73,73);
|
||||
const double f112 = -fd73 * A(75,73);
|
||||
A(75,75) += f112 * A(73,75);
|
||||
A(75,78) = f112 * A(73,78);
|
||||
A(75,81) += f112 * A(73,81);
|
||||
RHS(75) += f112 * RHS(73);
|
||||
const double f113 = -fd73 * A(78,73);
|
||||
A(78,75) = f113 * A(73,75);
|
||||
A(78,78) += f113 * A(73,78);
|
||||
A(78,81) = f113 * A(73,81);
|
||||
RHS(78) += f113 * RHS(73);
|
||||
const double f114 = -fd73 * A(81,73);
|
||||
A(81,75) += f114 * A(73,75);
|
||||
A(81,78) = f114 * A(73,78);
|
||||
A(81,81) += f114 * A(73,81);
|
||||
RHS(81) += f114 * RHS(73);
|
||||
const double fd74 = 1.0 / A(74,74);
|
||||
const double f115 = -fd74 * A(82,74);
|
||||
A(82,82) += f115 * A(74,82);
|
||||
RHS(82) += f115 * RHS(74);
|
||||
const double fd75 = 1.0 / A(75,75);
|
||||
const double f116 = -fd75 * A(78,75);
|
||||
A(78,78) += f116 * A(75,78);
|
||||
A(78,81) += f116 * A(75,81);
|
||||
RHS(78) += f116 * RHS(75);
|
||||
const double f117 = -fd75 * A(81,75);
|
||||
A(81,78) += f117 * A(75,78);
|
||||
A(81,81) += f117 * A(75,81);
|
||||
RHS(81) += f117 * RHS(75);
|
||||
const double fd76 = 1.0 / A(76,76);
|
||||
const double f118 = -fd76 * A(83,76);
|
||||
A(83,83) += f118 * A(76,83);
|
||||
RHS(83) += f118 * RHS(76);
|
||||
const double fd77 = 1.0 / A(77,77);
|
||||
const double f119 = -fd77 * A(82,77);
|
||||
A(82,82) += f119 * A(77,82);
|
||||
RHS(82) += f119 * RHS(77);
|
||||
const double fd78 = 1.0 / A(78,78);
|
||||
const double f120 = -fd78 * A(80,78);
|
||||
A(80,80) += f120 * A(78,80);
|
||||
A(80,81) = f120 * A(78,81);
|
||||
A(80,85) = f120 * A(78,85);
|
||||
RHS(80) += f120 * RHS(78);
|
||||
const double f121 = -fd78 * A(81,78);
|
||||
A(81,80) = f121 * A(78,80);
|
||||
A(81,81) += f121 * A(78,81);
|
||||
A(81,85) += f121 * A(78,85);
|
||||
RHS(81) += f121 * RHS(78);
|
||||
const double f122 = -fd78 * A(85,78);
|
||||
A(85,80) = f122 * A(78,80);
|
||||
A(85,81) += f122 * A(78,81);
|
||||
A(85,85) += f122 * A(78,85);
|
||||
RHS(85) += f122 * RHS(78);
|
||||
const double fd79 = 1.0 / A(79,79);
|
||||
const double f123 = -fd79 * A(85,79);
|
||||
A(85,85) += f123 * A(79,85);
|
||||
A(85,86) = f123 * A(79,86);
|
||||
RHS(85) += f123 * RHS(79);
|
||||
const double f124 = -fd79 * A(86,79);
|
||||
A(86,85) = f124 * A(79,85);
|
||||
A(86,86) += f124 * A(79,86);
|
||||
RHS(86) += f124 * RHS(79);
|
||||
const double fd80 = 1.0 / A(80,80);
|
||||
const double f125 = -fd80 * A(81,80);
|
||||
A(81,81) += f125 * A(80,81);
|
||||
A(81,84) = f125 * A(80,84);
|
||||
A(81,85) += f125 * A(80,85);
|
||||
RHS(81) += f125 * RHS(80);
|
||||
const double f126 = -fd80 * A(84,80);
|
||||
A(84,81) = f126 * A(80,81);
|
||||
A(84,84) += f126 * A(80,84);
|
||||
A(84,85) = f126 * A(80,85);
|
||||
RHS(84) += f126 * RHS(80);
|
||||
const double f127 = -fd80 * A(85,80);
|
||||
A(85,81) += f127 * A(80,81);
|
||||
A(85,84) = f127 * A(80,84);
|
||||
A(85,85) += f127 * A(80,85);
|
||||
RHS(85) += f127 * RHS(80);
|
||||
const double fd81 = 1.0 / A(81,81);
|
||||
const double f128 = -fd81 * A(84,81);
|
||||
A(84,84) += f128 * A(81,84);
|
||||
A(84,85) += f128 * A(81,85);
|
||||
RHS(84) += f128 * RHS(81);
|
||||
const double f129 = -fd81 * A(85,81);
|
||||
A(85,84) += f129 * A(81,84);
|
||||
A(85,85) += f129 * A(81,85);
|
||||
RHS(85) += f129 * RHS(81);
|
||||
const double fd82 = 1.0 / A(82,82);
|
||||
const double f130 = -fd82 * A(85,82);
|
||||
A(85,85) += f130 * A(82,85);
|
||||
RHS(85) += f130 * RHS(82);
|
||||
const double fd83 = 1.0 / A(83,83);
|
||||
const double f131 = -fd83 * A(85,83);
|
||||
A(85,85) += f131 * A(83,85);
|
||||
RHS(85) += f131 * RHS(83);
|
||||
const double fd84 = 1.0 / A(84,84);
|
||||
const double f132 = -fd84 * A(85,84);
|
||||
A(85,85) += f132 * A(84,85);
|
||||
A(85,87) = f132 * A(84,87);
|
||||
RHS(85) += f132 * RHS(84);
|
||||
const double f133 = -fd84 * A(86,84);
|
||||
A(86,85) += f133 * A(84,85);
|
||||
A(86,87) = f133 * A(84,87);
|
||||
RHS(86) += f133 * RHS(84);
|
||||
const double f134 = -fd84 * A(87,84);
|
||||
A(87,85) = f134 * A(84,85);
|
||||
A(87,87) += f134 * A(84,87);
|
||||
RHS(87) += f134 * RHS(84);
|
||||
const double fd85 = 1.0 / A(85,85);
|
||||
const double f135 = -fd85 * A(86,85);
|
||||
A(86,86) += f135 * A(85,86);
|
||||
A(86,87) += f135 * A(85,87);
|
||||
RHS(86) += f135 * RHS(85);
|
||||
const double f136 = -fd85 * A(87,85);
|
||||
A(87,86) = f136 * A(85,86);
|
||||
A(87,87) += f136 * A(85,87);
|
||||
RHS(87) += f136 * RHS(85);
|
||||
const double fd86 = 1.0 / A(86,86);
|
||||
const double f137 = -fd86 * A(87,86);
|
||||
A(87,87) += f137 * A(86,87);
|
||||
RHS(87) += f137 * RHS(86);
|
||||
return;
|
||||
#endif
|
||||
const unsigned kN = N();
|
||||
|
||||
for (unsigned i = 0; i < kN; i++) {
|
||||
@ -322,6 +928,7 @@ void matrix_solver_direct_t<m_N, _storage_N>::LE_solve()
|
||||
do_work(0, NULL);
|
||||
}
|
||||
#else
|
||||
|
||||
/* FIXME: Singular matrix? */
|
||||
const nl_double f = 1.0 / A(i,i);
|
||||
const auto &nzrd = m_terms[i]->m_nzrd;
|
||||
|
@ -69,21 +69,33 @@ void matrix_solver_GCR_t<m_N, _storage_N>::vsetup(analog_net_t::list_t &nets)
|
||||
touched[k][j] = true;
|
||||
}
|
||||
|
||||
unsigned fc = 0;
|
||||
|
||||
unsigned ops = 0;
|
||||
|
||||
const bool static_compile = false;
|
||||
for (unsigned k = 0; k < iN; k++)
|
||||
{
|
||||
ops++; // 1/A(k,k)
|
||||
if (static_compile) printf("const double fd%d = 1.0 / A(%d,%d); \n", k, k, k);
|
||||
for (unsigned row = k + 1; row < iN; row++)
|
||||
{
|
||||
if (touched[row][k])
|
||||
{
|
||||
ops++;
|
||||
fc++;
|
||||
if (static_compile) printf(" const double f%d = -fd%d * A(%d,%d); \n", fc, k, row, k);
|
||||
for (unsigned col = k + 1; col < iN; col++)
|
||||
if (touched[k][col])
|
||||
{
|
||||
if (touched[row][col])
|
||||
if (static_compile) printf(" A(%d,%d) += f%d * A(%d,%d); \n", row, col, fc, k, col);
|
||||
else
|
||||
if (static_compile) printf(" A(%d,%d) = f%d * A(%d,%d); \n", row, col, fc, k, col);
|
||||
touched[row][col] = true;
|
||||
ops += 2;
|
||||
}
|
||||
if (static_compile) printf(" RHS(%d) += f%d * RHS(%d); \n", row, fc, k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user