Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #if !defined (octave_MDiagArray2_h)
00026 #define octave_MDiagArray2_h 1
00027
00028 #include "DiagArray2.h"
00029 #include "MArray.h"
00030
00031
00032
00033
00034
00035 #include "MArray-decl.h"
00036
00037 MDIAGARRAY2_OPS_FORWARD_DECLS (MDiagArray2, )
00038
00039 template <class T>
00040 class
00041 MDiagArray2 : public DiagArray2<T>
00042 {
00043 public:
00044
00045 MDiagArray2 (void) : DiagArray2<T> () { }
00046
00047 MDiagArray2 (octave_idx_type r, octave_idx_type c) : DiagArray2<T> (r, c) { }
00048
00049 MDiagArray2 (octave_idx_type r, octave_idx_type c, const T& val) : DiagArray2<T> (r, c, val) { }
00050
00051 MDiagArray2 (const MDiagArray2<T>& a) : DiagArray2<T> (a) { }
00052
00053 MDiagArray2 (const DiagArray2<T>& a) : DiagArray2<T> (a) { }
00054
00055 template <class U>
00056 MDiagArray2 (const DiagArray2<U>& a) : DiagArray2<T> (a) { }
00057
00058 explicit MDiagArray2 (const Array<T>& a) : DiagArray2<T> (a) { }
00059
00060 MDiagArray2 (const Array<T>& a, octave_idx_type r, octave_idx_type c)
00061 : DiagArray2<T> (a, r, c) { }
00062
00063 ~MDiagArray2 (void) { }
00064
00065 MDiagArray2<T>& operator = (const MDiagArray2<T>& a)
00066 {
00067 DiagArray2<T>::operator = (a);
00068 return *this;
00069 }
00070
00071 MArray<T> array_value () const
00072 {
00073 return DiagArray2<T>::array_value ();
00074 }
00075
00076 octave_idx_type nnz (void) const
00077 {
00078 octave_idx_type retval = 0;
00079
00080 const T *d = this->data ();
00081
00082 octave_idx_type nel = this->length ();
00083
00084 for (octave_idx_type i = 0; i < nel; i++)
00085 {
00086 if (d[i] != T ())
00087 retval++;
00088 }
00089
00090 return retval;
00091 }
00092
00093 MArray<T> diag (octave_idx_type k = 0) const
00094 { return DiagArray2<T>::diag (k); }
00095
00096 MDiagArray2<T> transpose (void) const { return DiagArray2<T>::transpose (); }
00097 MDiagArray2<T> hermitian (T (*fcn) (const T&) = 0) const { return DiagArray2<T>::hermitian (fcn); }
00098
00099 bool is_multiple_of_identity (T val) const;
00100
00101
00102
00103
00104 MDIAGARRAY2_OPS_FRIEND_DECLS (MDiagArray2, )
00105
00106 };
00107
00108 #endif