Mercurial > octave-nkf
comparison liboctave/mx-op-defs.h @ 8366:8b1a2555c4e2
implement diagonal matrix objects
* * *
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 03 Dec 2008 13:32:57 +0100 |
parents | 935be827eaf8 |
children | 445d27d79f4e |
comparison
equal
deleted
inserted
replaced
8365:65ca196fff28 | 8366:8b1a2555c4e2 |
---|---|
1050 \ | 1050 \ |
1051 if (m_nc != dm_nr) \ | 1051 if (m_nc != dm_nr) \ |
1052 gripe_nonconformant ("operator *", m_nr, m_nc, dm_nr, dm_nc); \ | 1052 gripe_nonconformant ("operator *", m_nr, m_nc, dm_nr, dm_nc); \ |
1053 else \ | 1053 else \ |
1054 { \ | 1054 { \ |
1055 r.resize (m_nr, dm_nc, R_ZERO); \ | 1055 r = R (m_nr, dm_nc); \ |
1056 \ | 1056 \ |
1057 if (m_nr > 0 && m_nc > 0 && dm_nc > 0) \ | 1057 if (m_nr > 0 && m_nc > 0 && dm_nc > 0) \ |
1058 { \ | 1058 { \ |
1059 int len = dm.length (); \ | 1059 int len = dm.length (); \ |
1060 \ | 1060 \ |
1061 for (int j = 0; j < len; j++) \ | 1061 for (int j = 0; j < len; j++) \ |
1062 { \ | 1062 { \ |
1063 const DM::element_type djj = dm.elem (j, j); \ | |
1063 for (int i = 0; i < m_nr; i++) \ | 1064 for (int i = 0; i < m_nr; i++) \ |
1064 r.elem(i, j) = dm.elem(j, j) * m.elem(i, j); \ | 1065 r.xelem (i, j) = djj * m.elem (i, j); \ |
1065 } \ | 1066 } \ |
1066 } \ | 1067 } \ |
1067 } \ | 1068 } \ |
1068 \ | 1069 \ |
1069 return r; \ | 1070 return r; \ |
1130 \ | 1131 \ |
1131 if (dm_nc != m_nr) \ | 1132 if (dm_nc != m_nr) \ |
1132 gripe_nonconformant ("operator *", dm_nr, dm_nc, m_nr, m_nc); \ | 1133 gripe_nonconformant ("operator *", dm_nr, dm_nc, m_nr, m_nc); \ |
1133 else \ | 1134 else \ |
1134 { \ | 1135 { \ |
1135 r.resize (dm_nr, m_nc, R_ZERO); \ | 1136 r = R (dm_nr, m_nc); \ |
1136 \ | 1137 \ |
1137 if (dm_nr > 0 && dm_nc > 0 && m_nc > 0) \ | 1138 if (dm_nr > 0 && dm_nc > 0 && m_nc > 0) \ |
1138 { \ | 1139 { \ |
1139 int len = dm.length (); \ | 1140 int len = dm.length (); \ |
1140 \ | 1141 \ |
1141 for (int i = 0; i < len; i++) \ | 1142 for (int i = 0; i < len; i++) \ |
1142 { \ | 1143 { \ |
1143 for (int j = 0; j < m_nc; j++) \ | 1144 for (int j = 0; j < m_nc; j++) \ |
1144 r.elem(i, j) = dm.elem(i, i) * m.elem(i, j); \ | 1145 r.xelem (i, j) = dm.elem (i, i) * m.elem (i, j); \ |
1145 } \ | 1146 } \ |
1146 } \ | 1147 } \ |
1147 } \ | 1148 } \ |
1148 \ | 1149 \ |
1149 return r; \ | 1150 return r; \ |