OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
newmat6.cpp
Go to the documentation of this file.
1 //$$ newmat6.cpp Operators, element access, submatrices
2 
3 // Copyright (C) 1991,2,3,4: R B Davies
4 
5 #include <ossim/matrix/include.h>
6 
7 #include <ossim/matrix/newmat.h>
9 
10 #ifdef use_namespace
11 namespace NEWMAT {
12 #endif
13 
14 
15 
16 #ifdef DO_REPORT
17 #define REPORT { static ExeCounter ExeCount(__LINE__,6); ++ExeCount; }
18 #else
19 #define REPORT {}
20 #endif
21 
22 /*************************** general utilities *************************/
23 
24 static int tristore(int n) // els in triangular matrix
25 { return (n*(n+1))/2; }
26 
27 
28 /****************************** operators *******************************/
29 
31 {
32  REPORT
33  if (m<=0 || m>nrows || n<=0 || n>ncols)
34  Throw(IndexException(m,n,*this));
35  return store[(m-1)*ncols+n-1];
36 }
37 
39 {
40  REPORT
41  if (m<=0 || n<=0 || m>nrows || n>ncols)
42  Throw(IndexException(m,n,*this));
43  if (m>=n) return store[tristore(m-1)+n-1];
44  else return store[tristore(n-1)+m-1];
45 }
46 
48 {
49  REPORT
50  if (m<=0 || n<m || n>ncols)
51  Throw(IndexException(m,n,*this));
52  return store[(m-1)*ncols+n-1-tristore(m-1)];
53 }
54 
56 {
57  REPORT
58  if (n<=0 || m<n || m>nrows)
59  Throw(IndexException(m,n,*this));
60  return store[tristore(m-1)+n-1];
61 }
62 
64 {
65  REPORT
66  if (n<=0 || m!=n || m>nrows || n>ncols)
67  Throw(IndexException(m,n,*this));
68  return store[n-1];
69 }
70 
72 {
73  REPORT
74  if (m<=0 || m>nrows) Throw(IndexException(m,*this));
75  return store[m-1];
76 }
77 
79 {
80  REPORT
81  if (m<=0 || m> nrows) Throw(IndexException(m,*this));
82  return store[m-1];
83 }
84 
86 {
87  REPORT
88  if (n<=0 || n> ncols) Throw(IndexException(n,*this));
89  return store[n-1];
90 }
91 
93 {
94  REPORT
95  int w = upper+lower+1; int i = lower+n-m;
96  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
97  Throw(IndexException(m,n,*this));
98  return store[w*(m-1)+i];
99 }
100 
102 {
103  REPORT
104  int w = upper+1; int i = n-m;
105  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
106  Throw(IndexException(m,n,*this));
107  return store[w*(m-1)+i];
108 }
109 
111 {
112  REPORT
113  int w = lower+1; int i = lower+n-m;
114  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
115  Throw(IndexException(m,n,*this));
116  return store[w*(m-1)+i];
117 }
118 
120 {
121  REPORT
122  int w = lower+1;
123  if (m>=n)
124  {
125  REPORT
126  int i = lower+n-m;
127  if ( m>nrows || n<=0 || i<0 )
128  Throw(IndexException(m,n,*this));
129  return store[w*(m-1)+i];
130  }
131  else
132  {
133  REPORT
134  int i = lower+m-n;
135  if ( n>nrows || m<=0 || i<0 )
136  Throw(IndexException(m,n,*this));
137  return store[w*(n-1)+i];
138  }
139 }
140 
141 
142 Real Matrix::operator()(int m, int n) const
143 {
144  REPORT
145  if (m<=0 || m>nrows || n<=0 || n>ncols)
146  Throw(IndexException(m,n,*this));
147  return store[(m-1)*ncols+n-1];
148 }
149 
151 {
152  REPORT
153  if (m<=0 || n<=0 || m>nrows || n>ncols)
154  Throw(IndexException(m,n,*this));
155  if (m>=n) return store[tristore(m-1)+n-1];
156  else return store[tristore(n-1)+m-1];
157 }
158 
160 {
161  REPORT
162  if (m<=0 || n<m || n>ncols)
163  Throw(IndexException(m,n,*this));
164  return store[(m-1)*ncols+n-1-tristore(m-1)];
165 }
166 
168 {
169  REPORT
170  if (n<=0 || m<n || m>nrows)
171  Throw(IndexException(m,n,*this));
172  return store[tristore(m-1)+n-1];
173 }
174 
176 {
177  REPORT
178  if (n<=0 || m!=n || m>nrows || n>ncols)
179  Throw(IndexException(m,n,*this));
180  return store[n-1];
181 }
182 
184 {
185  REPORT
186  if (m<=0 || m>nrows) Throw(IndexException(m,*this));
187  return store[m-1];
188 }
189 
191 {
192  REPORT
193  if (m<=0 || m> nrows) Throw(IndexException(m,*this));
194  return store[m-1];
195 }
196 
198 {
199  REPORT
200  if (n<=0 || n> ncols) Throw(IndexException(n,*this));
201  return store[n-1];
202 }
203 
204 Real BandMatrix::operator()(int m, int n) const
205 {
206  REPORT
207  int w = upper+lower+1; int i = lower+n-m;
208  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
209  Throw(IndexException(m,n,*this));
210  return store[w*(m-1)+i];
211 }
212 
214 {
215  REPORT
216  int w = upper+1; int i = n-m;
217  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
218  Throw(IndexException(m,n,*this));
219  return store[w*(m-1)+i];
220 }
221 
223 {
224  REPORT
225  int w = lower+1; int i = lower+n-m;
226  if (m<=0 || m>nrows || n<=0 || n>ncols || i<0 || i>=w)
227  Throw(IndexException(m,n,*this));
228  return store[w*(m-1)+i];
229 }
230 
232 {
233  REPORT
234  int w = lower+1;
235  if (m>=n)
236  {
237  REPORT
238  int i = lower+n-m;
239  if ( m>nrows || n<=0 || i<0 )
240  Throw(IndexException(m,n,*this));
241  return store[w*(m-1)+i];
242  }
243  else
244  {
245  REPORT
246  int i = lower+m-n;
247  if ( n>nrows || m<=0 || i<0 )
248  Throw(IndexException(m,n,*this));
249  return store[w*(n-1)+i];
250  }
251 }
252 
253 
255 {
256  REPORT
257  GeneralMatrix* gm = ((BaseMatrix&)*this).Evaluate();
258 
259  if (gm->nrows!=1 || gm->ncols!=1)
260  {
261  Tracer tr("AsScalar");
262  Try
263  { Throw(ProgramException("Cannot convert to scalar", *gm)); }
264  CatchAll { gm->tDelete(); ReThrow; }
265  }
266 
267  Real x = *(gm->store); gm->tDelete(); return x;
268 }
269 
270 
272 { REPORT return AddedMatrix(this, &bm); }
273 
274 SPMatrix SP(const BaseMatrix& bm1,const BaseMatrix& bm2)
275 { REPORT return SPMatrix(&bm1, &bm2); }
276 
277 KPMatrix KP(const BaseMatrix& bm1,const BaseMatrix& bm2)
278 { REPORT return KPMatrix(&bm1, &bm2); }
279 
281 { REPORT return MultipliedMatrix(this, &bm); }
282 
284 { REPORT return ConcatenatedMatrix(this, &bm); }
285 
287 { REPORT return StackedMatrix(this, &bm); }
288 
290 { REPORT return SolvedMatrix(bm, &bmx); }
291 
293 { REPORT return SubtractedMatrix(this, &bm); }
294 
296 { REPORT return ShiftedMatrix(this, f); }
297 
299 { REPORT return ShiftedMatrix(&BM, f); }
300 
302 { REPORT return NegShiftedMatrix(f, &bm); }
303 
305 { REPORT return ScaledMatrix(this, f); }
306 
308 { REPORT return ScaledMatrix(this, 1.0/f); }
309 
311 { REPORT return ScaledMatrix(&BM, f); }
312 
314 { REPORT return ShiftedMatrix(this, -f); }
315 
317 { REPORT return TransposedMatrix(this); }
318 
320 { REPORT return NegatedMatrix(this); }
321 
323 { REPORT return ReversedMatrix(this); }
324 
326 { REPORT return InvertedMatrix(this); }
327 
328 
330 { REPORT return RowedMatrix(this); }
331 
333 { REPORT return ColedMatrix(this); }
334 
336 { REPORT return DiagedMatrix(this); }
337 
338 MatedMatrix BaseMatrix::AsMatrix(int nrx, int ncx) const
339 { REPORT return MatedMatrix(this,nrx,ncx); }
340 
341 
343 { REPORT int i=storage; Real* s=store; while (i--) { *s++ = f; } }
344 
346 {
347  REPORT //CheckConversion(X);
348  // MatrixConversionCheck mcc;
349  Eq(X,MatrixType::Rt);
350 }
351 
353 {
354  REPORT //CheckConversion(X);
355  // MatrixConversionCheck mcc;
356  Eq(X,MatrixType::Rt);
357  if (nrows != ncols)
358  { Tracer tr("SquareMatrix(=)"); Throw(NotSquareException(*this)); }
359 }
360 
362 {
363  REPORT
364  if (m.nrows != m.ncols)
365  { Tracer tr("SquareMatrix(=Matrix)"); Throw(NotSquareException(*this)); }
366  Eq(m);
367 }
368 
370 {
371  REPORT // CheckConversion(X);
372  // MatrixConversionCheck mcc;
373  Eq(X,MatrixType::RV);
374  if (nrows!=1)
375  { Tracer tr("RowVector(=)"); Throw(VectorException(*this)); }
376 }
377 
379 {
380  REPORT //CheckConversion(X);
381  // MatrixConversionCheck mcc;
382  Eq(X,MatrixType::CV);
383  if (ncols!=1)
384  { Tracer tr("ColumnVector(=)"); Throw(VectorException(*this)); }
385 }
386 
388 {
389  REPORT // CheckConversion(X);
390  // MatrixConversionCheck mcc;
391  Eq(X,MatrixType::Sm);
392 }
393 
395 {
396  REPORT //CheckConversion(X);
397  // MatrixConversionCheck mcc;
398  Eq(X,MatrixType::UT);
399 }
400 
402 {
403  REPORT //CheckConversion(X);
404  // MatrixConversionCheck mcc;
405  Eq(X,MatrixType::LT);
406 }
407 
409 {
410  REPORT // CheckConversion(X);
411  // MatrixConversionCheck mcc;
412  Eq(X,MatrixType::Dg);
413 }
414 
416 {
417  REPORT // CheckConversion(X);
418  // MatrixConversionCheck mcc;
419  Eq(X,MatrixType::Id);
420 }
421 
423 {
424  REPORT
425  int i = storage; Real* s=store;
426  while(i--) *s++ = *r++;
427 }
428 
429 
430 void GeneralMatrix::operator<<(const int* r)
431 {
432  REPORT
433  int i = storage; Real* s=store;
434  while(i--) *s++ = *r++;
435 }
436 
437 
439 {
440  if (&bmx != this) { REPORT if (gm) delete gm; gm = bmx.gm->Image();}
441  else { REPORT }
442  gm->Protect();
443 }
444 
446 {
447  if (gm)
448  {
449  int counter=bmx.search(gm);
450  if (counter==0) { REPORT delete gm; gm=0; }
451  else { REPORT gm->Release(counter); }
452  }
453  else { REPORT }
454  GeneralMatrix* gmx = ((BaseMatrix&)bmx).Evaluate();
455  if (gmx != gm) { REPORT if (gm) delete gm; gm = gmx->Image(); }
456  else { REPORT }
457  gm->Protect();
458 }
459 
460 
461 /*************************** += etc ***************************************/
462 
463 // will also need versions for SubMatrix
464 
465 
466 
467 // GeneralMatrix operators
468 
470 {
471  REPORT
472  Tracer tr("GeneralMatrix::operator+=");
473  // MatrixConversionCheck mcc;
474  Protect(); // so it cannot get deleted
475  // during Evaluate
476  GeneralMatrix* gm = ((BaseMatrix&)X).Evaluate();
477  AddedMatrix am(this,gm);
478  if (gm==this) Release(2); else Release();
479  Eq2(am,Type());
480 }
481 
483 {
484  REPORT
485  Tracer tr("GeneralMatrix::operator-=");
486  // MatrixConversionCheck mcc;
487  Protect(); // so it cannot get deleted
488  // during Evaluate
489  GeneralMatrix* gm = ((BaseMatrix&)X).Evaluate();
490  SubtractedMatrix am(this,gm);
491  if (gm==this) Release(2); else Release();
492  Eq2(am,Type());
493 }
494 
496 {
497  REPORT
498  Tracer tr("GeneralMatrix::operator*=");
499  // MatrixConversionCheck mcc;
500  Protect(); // so it cannot get deleted
501  // during Evaluate
502  GeneralMatrix* gm = ((BaseMatrix&)X).Evaluate();
503  MultipliedMatrix am(this,gm);
504  if (gm==this) Release(2); else Release();
505  Eq2(am,Type());
506 }
507 
509 {
510  REPORT
511  Tracer tr("GeneralMatrix::operator|=");
512  // MatrixConversionCheck mcc;
513  Protect(); // so it cannot get deleted
514  // during Evaluate
515  GeneralMatrix* gm = ((BaseMatrix&)X).Evaluate();
516  ConcatenatedMatrix am(this,gm);
517  if (gm==this) Release(2); else Release();
518  Eq2(am,Type());
519 }
520 
522 {
523  REPORT
524  Tracer tr("GeneralMatrix::operator&=");
525  // MatrixConversionCheck mcc;
526  Protect(); // so it cannot get deleted
527  // during Evaluate
528  GeneralMatrix* gm = ((BaseMatrix&)X).Evaluate();
529  StackedMatrix am(this,gm);
530  if (gm==this) Release(2); else Release();
531  Eq2(am,Type());
532 }
533 
535 {
536  REPORT
537  Tracer tr("GeneralMatrix::operator+=(Real)");
538  // MatrixConversionCheck mcc;
539  ShiftedMatrix am(this,r);
540  Release(); Eq2(am,Type());
541 }
542 
544 {
545  REPORT
546  Tracer tr("GeneralMatrix::operator*=(Real)");
547  // MatrixConversionCheck mcc;
548  ScaledMatrix am(this,r);
549  Release(); Eq2(am,Type());
550 }
551 
552 
553 // Generic matrix operators
554 
556 {
557  REPORT
558  Tracer tr("GenericMatrix::operator+=");
559  if (!gm) Throw(ProgramException("GenericMatrix is null"));
560  gm->Protect(); // so it cannot get deleted during Evaluate
561  GeneralMatrix* gmx = ((BaseMatrix&)X).Evaluate();
562  AddedMatrix am(gm,gmx);
563  if (gmx==gm) gm->Release(2); else gm->Release();
564  GeneralMatrix* gmy = am.Evaluate();
565  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
566  else { REPORT }
567  gm->Protect();
568 }
569 
571 {
572  REPORT
573  Tracer tr("GenericMatrix::operator-=");
574  if (!gm) Throw(ProgramException("GenericMatrix is null"));
575  gm->Protect(); // so it cannot get deleted during Evaluate
576  GeneralMatrix* gmx = ((BaseMatrix&)X).Evaluate();
577  SubtractedMatrix am(gm,gmx);
578  if (gmx==gm) gm->Release(2); else gm->Release();
579  GeneralMatrix* gmy = am.Evaluate();
580  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
581  else { REPORT }
582  gm->Protect();
583 }
584 
586 {
587  REPORT
588  Tracer tr("GenericMatrix::operator*=");
589  if (!gm) Throw(ProgramException("GenericMatrix is null"));
590  gm->Protect(); // so it cannot get deleted during Evaluate
591  GeneralMatrix* gmx = ((BaseMatrix&)X).Evaluate();
592  MultipliedMatrix am(gm,gmx);
593  if (gmx==gm) gm->Release(2); else gm->Release();
594  GeneralMatrix* gmy = am.Evaluate();
595  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
596  else { REPORT }
597  gm->Protect();
598 }
599 
601 {
602  REPORT
603  Tracer tr("GenericMatrix::operator|=");
604  if (!gm) Throw(ProgramException("GenericMatrix is null"));
605  gm->Protect(); // so it cannot get deleted during Evaluate
606  GeneralMatrix* gmx = ((BaseMatrix&)X).Evaluate();
607  ConcatenatedMatrix am(gm,gmx);
608  if (gmx==gm) gm->Release(2); else gm->Release();
609  GeneralMatrix* gmy = am.Evaluate();
610  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
611  else { REPORT }
612  gm->Protect();
613 }
614 
616 {
617  REPORT
618  Tracer tr("GenericMatrix::operator&=");
619  if (!gm) Throw(ProgramException("GenericMatrix is null"));
620  gm->Protect(); // so it cannot get deleted during Evaluate
621  GeneralMatrix* gmx = ((BaseMatrix&)X).Evaluate();
622  StackedMatrix am(gm,gmx);
623  if (gmx==gm) gm->Release(2); else gm->Release();
624  GeneralMatrix* gmy = am.Evaluate();
625  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
626  else { REPORT }
627  gm->Protect();
628 }
629 
631 {
632  REPORT
633  Tracer tr("GenericMatrix::operator+= (Real)");
634  if (!gm) Throw(ProgramException("GenericMatrix is null"));
635  ShiftedMatrix am(gm,r);
636  gm->Release();
637  GeneralMatrix* gmy = am.Evaluate();
638  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
639  else { REPORT }
640  gm->Protect();
641 }
642 
644 {
645  REPORT
646  Tracer tr("GenericMatrix::operator*= (Real)");
647  if (!gm) Throw(ProgramException("GenericMatrix is null"));
648  ScaledMatrix am(gm,r);
649  gm->Release();
650  GeneralMatrix* gmy = am.Evaluate();
651  if (gmy != gm) { REPORT delete gm; gm = gmy->Image(); }
652  else { REPORT }
653  gm->Protect();
654 }
655 
656 
657 /************************* element access *********************************/
658 
659 Real& Matrix::element(int m, int n)
660 {
661  REPORT
662  if (m<0 || m>= nrows || n<0 || n>= ncols)
663  Throw(IndexException(m,n,*this,true));
664  return store[m*ncols+n];
665 }
666 
667 Real Matrix::element(int m, int n) const
668 {
669  REPORT
670  if (m<0 || m>= nrows || n<0 || n>= ncols)
671  Throw(IndexException(m,n,*this,true));
672  return store[m*ncols+n];
673 }
674 
676 {
677  REPORT
678  if (m<0 || n<0 || m >= nrows || n>=ncols)
679  Throw(IndexException(m,n,*this,true));
680  if (m>=n) return store[tristore(m)+n];
681  else return store[tristore(n)+m];
682 }
683 
684 Real SymmetricMatrix::element(int m, int n) const
685 {
686  REPORT
687  if (m<0 || n<0 || m >= nrows || n>=ncols)
688  Throw(IndexException(m,n,*this,true));
689  if (m>=n) return store[tristore(m)+n];
690  else return store[tristore(n)+m];
691 }
692 
694 {
695  REPORT
696  if (m<0 || n<m || n>=ncols)
697  Throw(IndexException(m,n,*this,true));
698  return store[m*ncols+n-tristore(m)];
699 }
700 
702 {
703  REPORT
704  if (m<0 || n<m || n>=ncols)
705  Throw(IndexException(m,n,*this,true));
706  return store[m*ncols+n-tristore(m)];
707 }
708 
710 {
711  REPORT
712  if (n<0 || m<n || m>=nrows)
713  Throw(IndexException(m,n,*this,true));
714  return store[tristore(m)+n];
715 }
716 
718 {
719  REPORT
720  if (n<0 || m<n || m>=nrows)
721  Throw(IndexException(m,n,*this,true));
722  return store[tristore(m)+n];
723 }
724 
726 {
727  REPORT
728  if (n<0 || m!=n || m>=nrows || n>=ncols)
729  Throw(IndexException(m,n,*this,true));
730  return store[n];
731 }
732 
733 Real DiagonalMatrix::element(int m, int n) const
734 {
735  REPORT
736  if (n<0 || m!=n || m>=nrows || n>=ncols)
737  Throw(IndexException(m,n,*this,true));
738  return store[n];
739 }
740 
742 {
743  REPORT
744  if (m<0 || m>=nrows) Throw(IndexException(m,*this,true));
745  return store[m];
746 }
747 
749 {
750  REPORT
751  if (m<0 || m>=nrows) Throw(IndexException(m,*this,true));
752  return store[m];
753 }
754 
756 {
757  REPORT
758  if (m<0 || m>= nrows) Throw(IndexException(m,*this,true));
759  return store[m];
760 }
761 
763 {
764  REPORT
765  if (m<0 || m>= nrows) Throw(IndexException(m,*this,true));
766  return store[m];
767 }
768 
770 {
771  REPORT
772  if (n<0 || n>= ncols) Throw(IndexException(n,*this,true));
773  return store[n];
774 }
775 
777 {
778  REPORT
779  if (n<0 || n>= ncols) Throw(IndexException(n,*this,true));
780  return store[n];
781 }
782 
784 {
785  REPORT
786  int w = upper+lower+1; int i = lower+n-m;
787  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
788  Throw(IndexException(m,n,*this,true));
789  return store[w*m+i];
790 }
791 
792 Real BandMatrix::element(int m, int n) const
793 {
794  REPORT
795  int w = upper+lower+1; int i = lower+n-m;
796  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
797  Throw(IndexException(m,n,*this,true));
798  return store[w*m+i];
799 }
800 
802 {
803  REPORT
804  int w = upper+1; int i = n-m;
805  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
806  Throw(IndexException(m,n,*this,true));
807  return store[w*m+i];
808 }
809 
810 Real UpperBandMatrix::element(int m, int n) const
811 {
812  REPORT
813  int w = upper+1; int i = n-m;
814  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
815  Throw(IndexException(m,n,*this,true));
816  return store[w*m+i];
817 }
818 
820 {
821  REPORT
822  int w = lower+1; int i = lower+n-m;
823  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
824  Throw(IndexException(m,n,*this,true));
825  return store[w*m+i];
826 }
827 
828 Real LowerBandMatrix::element(int m, int n) const
829 {
830  REPORT
831  int w = lower+1; int i = lower+n-m;
832  if (m<0 || m>= nrows || n<0 || n>= ncols || i<0 || i>=w)
833  Throw(IndexException(m,n,*this,true));
834  return store[w*m+i];
835 }
836 
838 {
839  REPORT
840  int w = lower+1;
841  if (m>=n)
842  {
843  REPORT
844  int i = lower+n-m;
845  if ( m>=nrows || n<0 || i<0 )
846  Throw(IndexException(m,n,*this,true));
847  return store[w*m+i];
848  }
849  else
850  {
851  REPORT
852  int i = lower+m-n;
853  if ( n>=nrows || m<0 || i<0 )
854  Throw(IndexException(m,n,*this,true));
855  return store[w*n+i];
856  }
857 }
858 
860 {
861  REPORT
862  int w = lower+1;
863  if (m>=n)
864  {
865  REPORT
866  int i = lower+n-m;
867  if ( m>=nrows || n<0 || i<0 )
868  Throw(IndexException(m,n,*this,true));
869  return store[w*m+i];
870  }
871  else
872  {
873  REPORT
874  int i = lower+m-n;
875  if ( n>=nrows || m<0 || i<0 )
876  Throw(IndexException(m,n,*this,true));
877  return store[w*n+i];
878  }
879 }
880 
881 #ifdef use_namespace
882 }
883 #endif
884 
Real & operator()(int)
Definition: newmat6.cpp:78
ossim_uint32 x
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat7.cpp:99
double Real
Definition: include.h:57
Real & element(int, int)
Definition: newmat6.cpp:819
Real & operator()(int, int)
Definition: newmat6.cpp:119
void Release()
Definition: newmat.h:440
void operator+=(const BaseMatrix &)
Definition: newmat6.cpp:469
ColedMatrix AsColumn() const
Definition: newmat6.cpp:332
Real & element(int, int)
Definition: newmat6.cpp:725
Real & element(int, int)
Definition: newmat6.cpp:709
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:408
virtual int search(const BaseMatrix *) const =0
InvertedMatrix i() const
Definition: newmat6.cpp:325
Real & element(int, int)
Definition: newmat6.cpp:693
SPMatrix SP(const BaseMatrix &bm1, const BaseMatrix &bm2)
Definition: newmat6.cpp:274
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:415
GeneralMatrix * gm
Definition: newmat.h:1185
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:401
void operator &=(const BaseMatrix &)
Real & element(int, int)
Definition: newmat6.cpp:675
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat5.cpp:94
Real & operator()(int, int)
Definition: newmat6.cpp:63
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat5.cpp:79
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat5.cpp:150
Real & element(int, int)
Definition: newmat6.cpp:659
void operator=(Real)
Definition: newmat6.cpp:342
DiagedMatrix AsDiagonal() const
Definition: newmat6.cpp:335
NegatedMatrix operator-() const
Definition: newmat6.cpp:319
Real & operator()(int, int)
Definition: newmat6.cpp:47
Real & operator()(int, int)
Definition: newmat6.cpp:55
void operator &=(const BaseMatrix &)
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat7.cpp:506
Real & element(int, int)
Definition: newmat6.cpp:783
Real & element(int, int)
Definition: newmat6.cpp:801
void operator-=(const BaseMatrix &)
Definition: newmat6.cpp:482
void operator|=(const BaseMatrix &)
Definition: newmat6.cpp:600
Real & element(int, int)
Definition: newmat6.cpp:837
StackedMatrix operator &(const BaseMatrix &) const
os2<< "> n<< " > nendobj n
#define REPORT
Definition: newmat6.cpp:19
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:394
Real AsScalar() const
Definition: newmat6.cpp:254
MatedMatrix AsMatrix(int, int) const
Definition: newmat6.cpp:338
Real & operator()(int)
Definition: newmat6.cpp:85
Definition: newmat.h:543
Real & operator()(int, int)
Definition: newmat6.cpp:30
void operator*=(const BaseMatrix &)
Definition: newmat6.cpp:585
void operator+=(const BaseMatrix &)
Definition: newmat6.cpp:555
Real & element(int)
Definition: newmat6.cpp:755
SolvedMatrix operator*(const BaseMatrix &) const
Definition: newmat6.cpp:289
Real & operator()(int, int)
Definition: newmat6.cpp:92
void operator<<(const Real *)
Definition: newmat6.cpp:422
virtual GeneralMatrix * Image() const
Definition: newmat4.cpp:838
ShiftedMatrix operator+(Real f, const BaseMatrix &BM)
Definition: newmat6.cpp:298
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:369
void operator|=(const BaseMatrix &)
Definition: newmat6.cpp:508
void operator-=(const BaseMatrix &)
Definition: newmat6.cpp:570
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:345
ScaledMatrix operator/(Real) const
Definition: newmat6.cpp:307
void operator*=(const BaseMatrix &)
Definition: newmat6.cpp:495
void operator=(const GenericMatrix &)
Definition: newmat6.cpp:438
NegShiftedMatrix operator-(Real f, const BaseMatrix &bm)
Definition: newmat6.cpp:301
Real & operator()(int, int)
Definition: newmat6.cpp:110
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat7.cpp:749
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:387
GeneralMatrix * Evaluate(MatrixType mt=MatrixTypeUnSp)
Definition: newmat7.cpp:576
KPMatrix KP(const BaseMatrix &bm1, const BaseMatrix &bm2)
Definition: newmat6.cpp:277
AddedMatrix operator+(const BaseMatrix &) const
Definition: newmat6.cpp:271
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:378
void Protect()
Definition: newmat.h:437
Real & operator()(int, int)
Definition: newmat6.cpp:38
TransposedMatrix t() const
Definition: newmat6.cpp:316
ReversedMatrix Reverse() const
Definition: newmat6.cpp:322
Real & operator()(int, int)
Definition: newmat6.cpp:101
void operator=(const BaseMatrix &)
Definition: newmat6.cpp:352
ScaledMatrix operator*(Real f, const BaseMatrix &BM)
Definition: newmat6.cpp:310
ConcatenatedMatrix operator|(const BaseMatrix &) const
Definition: newmat6.cpp:283
MultipliedMatrix operator*(const BaseMatrix &) const
Definition: newmat6.cpp:280
Real & element(int)
Definition: newmat6.cpp:769
RowedMatrix AsRow() const
Definition: newmat6.cpp:329