| 247 | } |
| 248 | |
| 249 | intvec * ivAdd(intvec * a, intvec * b) |
| 250 | { |
| 251 | intvec * iv; |
| 252 | int mn, ma, i; |
| 253 | if (a->cols() != b->cols()) return NULL; |
| 254 | mn = si_min(a->rows(),b->rows()); |
| 255 | ma = si_max(a->rows(),b->rows()); |
| 256 | if (a->cols() == 1) |
| 257 | { |
| 258 | iv = new intvec(ma); |
| 259 | for (i=0; i<mn; i++) (*iv)[i] = (*a)[i] + (*b)[i]; |
| 260 | if (ma > mn) |
| 261 | { |
| 262 | if (ma == a->rows()) |
| 263 | { |
| 264 | for(i=mn; i<ma; i++) (*iv)[i] = (*a)[i]; |
| 265 | } |
| 266 | else |
| 267 | { |
| 268 | for(i=mn; i<ma; i++) (*iv)[i] = (*b)[i]; |
| 269 | } |
| 270 | } |
| 271 | return iv; |
| 272 | } |
| 273 | if (mn != ma) return NULL; |
| 274 | iv = new intvec(a); |
| 275 | for (i=0; i<mn*a->cols(); i++) { (*iv)[i] += (*b)[i]; } |
| 276 | return iv; |
| 277 | } |
| 278 | |
| 279 | intvec * ivAddShift(intvec * a, intvec * b, int s) |
| 280 | { |