# HG changeset patch # User jwe # Date 845142999 0 # Node ID d9147efd1a9348370ead28b3f97db21903b05460 # Parent 09652906683810a66c702920daf52fe1423e17f3 [project @ 1996-10-12 17:56:38 by jwe] diff --git a/liboctave/CMatrix.cc b/liboctave/CMatrix.cc --- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -163,16 +163,16 @@ elem (i, j) = a.elem (i, j); } -int +bool ComplexMatrix::operator == (const ComplexMatrix& a) const { if (rows () != a.rows () || cols () != a.cols ()) - return 0; + return false; return equal (data (), a.data (), length ()); } -int +bool ComplexMatrix::operator != (const ComplexMatrix& a) const { return !(*this == a); @@ -1668,8 +1668,7 @@ int a_len = a.length (); if (len != a_len) - (*current_liboctave_error_handler) - ("nonconformant vector multiplication attempted"); + gripe_nonconformant ("operator *", len, 1, 1, a_len); else { if (len != 0) @@ -1785,10 +1784,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = rows (); + int a_nc = cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix += operation attempted"); + gripe_nonconformant ("operator +=", nr, nc, a_nr, a_nc); return *this; } @@ -1803,10 +1805,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = rows (); + int a_nc = cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix -= operation attempted"); + gripe_nonconformant ("operator -=", nr, nc, a_nr, a_nc); return *this; } @@ -1821,10 +1826,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = rows (); + int a_nc = cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix += operation attempted"); + gripe_nonconformant ("operator +=", nr, nc, a_nr, a_nc); return *this; } @@ -1839,10 +1847,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = rows (); + int a_nc = cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix -= operation attempted"); + gripe_nonconformant ("operator -=", nr, nc, a_nr, a_nc); return *this; } @@ -1857,10 +1868,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -1879,10 +1893,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -1908,8 +1925,7 @@ int a_nc = a.cols (); if (nc != a_nr) - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); else { if (nr == 0 || nc == 0 || a_nc == 0) @@ -1960,10 +1976,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -1982,10 +2001,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2004,12 +2026,13 @@ { int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); + if (nc != a_nr) { - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2052,10 +2075,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2074,10 +2100,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2096,12 +2125,13 @@ { int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); + if (nc != a_nr) { - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2144,10 +2174,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2166,10 +2199,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2188,12 +2224,13 @@ { int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); + if (nc != a_nr) { - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2238,10 +2275,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix += operation attempted"); + gripe_nonconformant ("operator +=", nr, nc, a_nr, a_nc); return *this; } @@ -2259,10 +2299,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix -= operation attempted"); + gripe_nonconformant ("operator -=", nr, nc, a_nr, a_nc); return *this; } @@ -2280,10 +2323,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix += operation attempted"); + gripe_nonconformant ("operator +=", nr, nc, a_nr, a_nc); return *this; } @@ -2301,10 +2347,13 @@ { int nr = rows (); int nc = cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix -= operation attempted"); + gripe_nonconformant ("operator -=", nr, nc, a_nr, a_nc); return *this; } @@ -2448,10 +2497,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2470,10 +2522,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2495,11 +2550,11 @@ int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); - if (nc != a.rows ()) - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + if (nc != a_nr) + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); else { if (nr == 0 || nc == 0 || a_nc == 0) @@ -2547,10 +2602,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2569,10 +2627,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2594,11 +2655,11 @@ int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); - if (nc != a.rows ()) - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + if (nc != a_nr) + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); else { if (nr == 0 || nc == 0 || a_nc == 0) @@ -2648,10 +2709,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2666,10 +2730,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2684,10 +2751,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix addition attempted"); + gripe_nonconformant ("operator +", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2699,10 +2769,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix subtraction attempted"); + gripe_nonconformant ("operator -", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2734,11 +2807,11 @@ int nr = m.rows (); int nc = m.cols (); + int a_nr = a.rows (); int a_nc = a.cols (); - if (nc != a.rows ()) - (*current_liboctave_error_handler) - ("nonconformant matrix multiplication attempted"); + if (nc != a_nr) + gripe_nonconformant ("operator *", nr, nc, a_nr, a_nc); else { if (nr == 0 || nc == 0 || a_nc == 0) @@ -2769,10 +2842,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix product attempted"); + gripe_nonconformant ("product", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2787,10 +2863,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix quotient attempted"); + gripe_nonconformant ("quotient", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2805,10 +2884,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix product attempted"); + gripe_nonconformant ("product", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2823,10 +2905,13 @@ { int nr = m.rows (); int nc = m.cols (); - if (nr != a.rows () || nc != a.cols ()) + + int a_nr = a.rows (); + int a_nc = a.cols (); + + if (nr != a_nr || nc != a_nc) { - (*current_liboctave_error_handler) - ("nonconformant matrix quotient attempted"); + gripe_nonconformant ("quotient", nr, nc, a_nr, a_nc); return ComplexMatrix (); } @@ -2854,15 +2939,32 @@ elem (i, j) = f (elem (i, j)); } +bool +ComplexMatrix::any_element_is_inf_or_nan (void) const +{ + int nr = rows (); + int nc = cols (); + + for (int j = 0; j < nc; j++) + for (int i = 0; i < nr; i++) + { + Complex val = elem (i, j); + if (xisinf (val) || xisnan (val)) + return true; + } + + return false; +} + // Return nonzero if any element of CM has a non-integer real or // imaginary part. Also extract the largest and smallest (real or // imaginary) values and return them in MAX_VAL and MIN_VAL. -int +bool ComplexMatrix::all_integers (double& max_val, double& min_val) const { int nr = rows (); - int nc = columns (); + int nc = cols (); if (nr > 0 && nc > 0) { @@ -2881,7 +2983,7 @@ min_val = i_val; } else - return 0; + return false; for (int j = 0; j < nc; j++) for (int i = 0; i < nr; i++) @@ -2904,16 +3006,17 @@ min_val = i_val; if (D_NINT (r_val) != r_val || D_NINT (i_val) != i_val) - return 0; + return false; } - return 1; + + return true; } -int +bool ComplexMatrix::too_large_for_float (void) const { int nr = rows (); - int nc = columns (); + int nc = cols (); for (int j = 0; j < nc; j++) for (int i = 0; i < nr; i++) @@ -2927,10 +3030,10 @@ || i_val > FLT_MAX || r_val < FLT_MIN || i_val < FLT_MIN) - return 1; + return true; } - return 0; + return false; } Matrix diff --git a/liboctave/CMatrix.h b/liboctave/CMatrix.h --- a/liboctave/CMatrix.h +++ b/liboctave/CMatrix.h @@ -69,8 +69,8 @@ return *this; } - int operator == (const ComplexMatrix& a) const; - int operator != (const ComplexMatrix& a) const; + bool operator == (const ComplexMatrix& a) const; + bool operator != (const ComplexMatrix& a) const; // destructive insert/delete/reorder operations @@ -320,8 +320,9 @@ friend ComplexMatrix map (c_c_Mapper f, const ComplexMatrix& a); void map (c_c_Mapper f); - int all_integers (double& max_val, double& min_val) const; - int too_large_for_float (void) const; + bool any_element_is_inf_or_nan (void) const; + bool all_integers (double& max_val, double& min_val) const; + bool too_large_for_float (void) const; Matrix all (void) const; Matrix any (void) const; diff --git a/liboctave/chMatrix.cc b/liboctave/chMatrix.cc --- a/liboctave/chMatrix.cc +++ b/liboctave/chMatrix.cc @@ -73,7 +73,7 @@ } } -int +bool charMatrix::operator == (const charMatrix& a) const { if (rows () != a.rows () || cols () != a.cols ()) @@ -82,7 +82,7 @@ return equal (data (), a.data (), length ()); } -int +bool charMatrix::operator != (const charMatrix& a) const { return !(*this == a); diff --git a/liboctave/chMatrix.h b/liboctave/chMatrix.h --- a/liboctave/chMatrix.h +++ b/liboctave/chMatrix.h @@ -59,8 +59,8 @@ return *this; } - int operator == (const charMatrix& a) const; - int operator != (const charMatrix& a) const; + bool operator == (const charMatrix& a) const; + bool operator != (const charMatrix& a) const; // destructive insert/delete/reorder operations