diff liboctave/mx-op-defs.h @ 3504:5eef8a2294bd

[project @ 2000-02-01 10:06:51 by jwe]
author jwe
date Tue, 01 Feb 2000 10:07:26 +0000
parents fccab8e7d35f
children a93683ccc9ba
line wrap: on
line diff
--- a/liboctave/mx-op-defs.h
+++ b/liboctave/mx-op-defs.h
@@ -206,7 +206,7 @@
   BOOL_OP_DECL (mx_el_and, M, S); \
   BOOL_OP_DECL (mx_el_or,  M, S); \
 
-#define MS_BOOL_OP(F, OP, M, S) \
+#define MS_BOOL_OP(F, OP, M, S, ZERO) \
   boolMatrix \
   F (const M& m, const S& s) \
   { \
@@ -221,15 +221,15 @@
  \
         for (int j = 0; j < nc; j++) \
           for (int i = 0; i < nr; i++) \
-	    r.elem(i, j) = (m.elem(i, j) != 0) OP (s != 0); \
+	    r.elem(i, j) = (m.elem(i, j) != ZERO) OP (s != ZERO); \
       } \
  \
     return r; \
   }
 
-#define MS_BOOL_OPS(M, S) \
-  MS_BOOL_OP (mx_el_and, &&, M, S) \
-  MS_BOOL_OP (mx_el_or,  ||, M, S)
+#define MS_BOOL_OPS(M, S, ZERO) \
+  MS_BOOL_OP (mx_el_and, &&, M, S, ZERO) \
+  MS_BOOL_OP (mx_el_or,  ||, M, S, ZERO)
 
 #define MS_OP_DECLS(R, M, S) \
   MS_BIN_OP_DECLS (R, M, S) \
@@ -308,7 +308,7 @@
   BOOL_OP_DECL (mx_el_and, S, M); \
   BOOL_OP_DECL (mx_el_or,  S, M); \
 
-#define SM_BOOL_OP(F, OP, S, M) \
+#define SM_BOOL_OP(F, OP, S, M, ZERO) \
   boolMatrix \
   F (const S& s, const M& m) \
   { \
@@ -323,15 +323,15 @@
  \
         for (int j = 0; j < nc; j++) \
           for (int i = 0; i < nr; i++) \
-	    r.elem(i, j) = (s != 0) OP (m.elem(i, j) != 0); \
+	    r.elem(i, j) = (s != ZERO) OP (m.elem(i, j) != ZERO); \
       } \
  \
     return r; \
   }
 
-#define SM_BOOL_OPS(S, M) \
-  SM_BOOL_OP (mx_el_and, &&, S, M) \
-  SM_BOOL_OP (mx_el_or,  ||, S, M)
+#define SM_BOOL_OPS(S, M, ZERO) \
+  SM_BOOL_OP (mx_el_and, &&, S, M, ZERO) \
+  SM_BOOL_OP (mx_el_or,  ||, S, M, ZERO)
 
 #define SM_OP_DECLS(R, S, M) \
   SM_BIN_OP_DECLS (R, S, M) \
@@ -433,7 +433,7 @@
   BOOL_OP_DECL (mx_el_and, M1, M2); \
   BOOL_OP_DECL (mx_el_or,  M1, M2);
 
-#define MM_BOOL_OP(F, OP, M1, M2) \
+#define MM_BOOL_OP(F, OP, M1, M2, ZERO) \
   boolMatrix \
   F (const M1& m1, const M2& m2) \
   { \
@@ -453,7 +453,8 @@
  \
 	    for (int j = 0; j < m1_nc; j++) \
 	      for (int i = 0; i < m1_nr; i++) \
-		r.elem(i, j) = (m1.elem(i, j) != 0) OP (m2.elem(i, j) != 0); \
+		r.elem(i, j) = (m1.elem(i, j) != ZERO) \
+                                OP (m2.elem(i, j) != ZERO); \
 	  } \
       } \
     else \
@@ -465,9 +466,9 @@
     return r; \
   }
 
-#define MM_BOOL_OPS(M1, M2) \
-  MM_BOOL_OP (mx_el_and, &&, M1, M2) \
-  MM_BOOL_OP (mx_el_or,  ||, M1, M2)
+#define MM_BOOL_OPS(M1, M2, ZERO) \
+  MM_BOOL_OP (mx_el_and, &&, M1, M2, ZERO) \
+  MM_BOOL_OP (mx_el_or,  ||, M1, M2, ZERO)
 
 #define MM_OP_DECLS(R, M1, M2) \
   MM_BIN_OP_DECLS (R, M1, M2) \
@@ -573,7 +574,7 @@
   return r; \
 }
 
-#define MDM_MULTIPLY_OP(R, M, DM) \
+#define MDM_MULTIPLY_OP(R, M, DM, ZERO) \
 R \
 operator * (const M& m, const DM& dm) \
 { \
@@ -589,7 +590,7 @@
     gripe_nonconformant ("operator *", m_nr, m_nc, dm_nr, dm_nc); \
   else \
     { \
-      r.resize (m_nr, dm_nc, 0.0); \
+      r.resize (m_nr, dm_nc, ZERO); \
  \
       if (m_nr > 0 && m_nc > 0 && dm_nc > 0) \
 	{ \
@@ -600,7 +601,7 @@
 		  for (int i = 0; i < m_nr; i++) \
 		    r.elem(i, j) = m.elem(i, j); \
 		} \
-	      else if (dm.elem(j, j) != 0.0) \
+	      else if (dm.elem(j, j) != ZERO) \
 		{ \
 		  for (int i = 0; i < m_nr; i++) \
 		    r.elem(i, j) = dm.elem(j, j) * m.elem(i, j); \
@@ -612,10 +613,10 @@
   return r; \
 }
 
-#define MDM_BIN_OPS(R, M, DM) \
+#define MDM_BIN_OPS(R, M, DM, ZERO) \
   MDM_BIN_OP (R, operator +, M, DM, +=) \
   MDM_BIN_OP (R, operator -, M, DM, -=) \
-  MDM_MULTIPLY_OP (R, M, DM)
+  MDM_MULTIPLY_OP (R, M, DM, ZERO)
 
 #define MDM_OP_DECLS(R, M, DM) \
   MDM_BIN_OP_DECLS(R, M, DM)
@@ -661,7 +662,7 @@
   return r; \
 }
 
-#define DMM_MULTIPLY_OP(R, DM, M) \
+#define DMM_MULTIPLY_OP(R, DM, M, ZERO) \
 R \
 operator * (const DM& dm, const M& m) \
 { \
@@ -677,7 +678,7 @@
     gripe_nonconformant ("operator *", dm_nr, dm_nc, m_nr, m_nc); \
   else \
     { \
-      r.resize (dm_nr, m_nc, 0.0); \
+      r.resize (dm_nr, m_nc, ZERO); \
  \
       if (dm_nr > 0 && dm_nc > 0 && m_nc > 0) \
 	{ \
@@ -688,7 +689,7 @@
 		  for (int j = 0; j < m_nc; j++) \
 		    r.elem(i, j) = m.elem(i, j); \
 		} \
-	      else if (dm.elem(i, i) != 0.0) \
+	      else if (dm.elem(i, i) != ZERO) \
 		{ \
 		  for (int j = 0; j < m_nc; j++) \
 		    r.elem(i, j) = dm.elem(i, i) * m.elem(i, j); \
@@ -700,10 +701,10 @@
   return r; \
 }
 
-#define DMM_BIN_OPS(R, DM, M) \
+#define DMM_BIN_OPS(R, DM, M, ZERO) \
   DMM_BIN_OP (R, operator +, DM, M, +=) \
   DMM_BIN_OP (R, operator -, DM, M, -=) \
-  DMM_MULTIPLY_OP(R, DM, M)
+  DMM_MULTIPLY_OP(R, DM, M, ZERO)
 
 #define DMM_OP_DECLS(R, DM, M) \
   DMM_BIN_OP_DECLS(R, DM, M)