Mercurial > hg > octave-lyh
diff liboctave/Sparse-op-defs.h @ 6708:0ce71beb1cf3
[project @ 2007-06-13 06:40:48 by jwe]
author | jwe |
---|---|
date | Wed, 13 Jun 2007 06:40:49 +0000 |
parents | 7e958a1532c6 |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/liboctave/Sparse-op-defs.h +++ b/liboctave/Sparse-op-defs.h @@ -26,22 +26,22 @@ #include "Array-util.h" #include "mx-ops.h" -#define SPARSE_BIN_OP_DECL(R, OP, X, Y) \ - extern OCTAVE_API R OP (const X&, const Y&) +#define SPARSE_BIN_OP_DECL(R, OP, X, Y, API) \ + extern API R OP (const X&, const Y&) -#define SPARSE_CMP_OP_DECL(OP, X, Y) \ - extern OCTAVE_API SparseBoolMatrix OP (const X&, const Y&) +#define SPARSE_CMP_OP_DECL(OP, X, Y, API) \ + extern API SparseBoolMatrix OP (const X&, const Y&) -#define SPARSE_BOOL_OP_DECL(OP, X, Y) \ - extern OCTAVE_API SparseBoolMatrix OP (const X&, const Y&) +#define SPARSE_BOOL_OP_DECL(OP, X, Y, API) \ + extern API SparseBoolMatrix OP (const X&, const Y&) // matrix by scalar operations. -#define SPARSE_SMS_BIN_OP_DECLS(R1, R2, M, S) \ - SPARSE_BIN_OP_DECL (R1, operator +, M, S); \ - SPARSE_BIN_OP_DECL (R1, operator -, M, S); \ - SPARSE_BIN_OP_DECL (R2, operator *, M, S); \ - SPARSE_BIN_OP_DECL (R2, operator /, M, S); +#define SPARSE_SMS_BIN_OP_DECLS(R1, R2, M, S, API) \ + SPARSE_BIN_OP_DECL (R1, operator +, M, S, API); \ + SPARSE_BIN_OP_DECL (R1, operator -, M, S, API); \ + SPARSE_BIN_OP_DECL (R2, operator *, M, S, API); \ + SPARSE_BIN_OP_DECL (R2, operator /, M, S, API); #define SPARSE_SMS_BIN_OP_1(R, F, OP, M, S) \ R \ @@ -86,17 +86,17 @@ SPARSE_SMS_BIN_OP_2 (R2, operator *, *, M, S) \ SPARSE_SMS_BIN_OP_2 (R2, operator /, /, M, S) -#define SPARSE_SMS_CMP_OP_DECLS(M, S) \ - SPARSE_CMP_OP_DECL (mx_el_lt, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_le, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_ge, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_gt, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_eq, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M, S); +#define SPARSE_SMS_CMP_OP_DECLS(M, S, API) \ + SPARSE_CMP_OP_DECL (mx_el_lt, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_le, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_ge, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_gt, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_eq, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M, S, API); -#define SPARSE_SMS_EQNE_OP_DECLS(M, S) \ - SPARSE_CMP_OP_DECL (mx_el_eq, M, S); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M, S); +#define SPARSE_SMS_EQNE_OP_DECLS(M, S, API) \ + SPARSE_CMP_OP_DECL (mx_el_eq, M, S, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M, S, API); #define SPARSE_SMS_CMP_OP(F, OP, M, MZ, MC, S, SZ, SC) \ SparseBoolMatrix \ @@ -169,9 +169,9 @@ SPARSE_SMS_CMP_OP (mx_el_eq, ==, M, MZ, , S, SZ, ) \ SPARSE_SMS_CMP_OP (mx_el_ne, !=, M, MZ, , S, SZ, ) -#define SPARSE_SMS_BOOL_OP_DECLS(M, S) \ - SPARSE_BOOL_OP_DECL (mx_el_and, M, S); \ - SPARSE_BOOL_OP_DECL (mx_el_or, M, S); +#define SPARSE_SMS_BOOL_OP_DECLS(M, S, API) \ + SPARSE_BOOL_OP_DECL (mx_el_and, M, S, API); \ + SPARSE_BOOL_OP_DECL (mx_el_or, M, S, API); #define SPARSE_SMS_BOOL_OP(F, OP, M, S, LHS_ZERO, RHS_ZERO) \ SparseBoolMatrix \ @@ -239,18 +239,18 @@ #define SPARSE_SMS_BOOL_OPS(M, S, ZERO) \ SPARSE_SMS_BOOL_OPS2(M, S, ZERO, ZERO) -#define SPARSE_SMS_OP_DECLS(R1, R2, M, S) \ - SPARSE_SMS_BIN_OP_DECLS (R1, R2, M, S) \ - SPARSE_SMS_CMP_OP_DECLS (M, S) \ - SPARSE_SMS_BOOL_OP_DECLS (M, S) +#define SPARSE_SMS_OP_DECLS(R1, R2, M, S, API) \ + SPARSE_SMS_BIN_OP_DECLS (R1, R2, M, S, API) \ + SPARSE_SMS_CMP_OP_DECLS (M, S, API) \ + SPARSE_SMS_BOOL_OP_DECLS (M, S, API) // scalar by matrix operations. -#define SPARSE_SSM_BIN_OP_DECLS(R1, R2, S, M) \ - SPARSE_BIN_OP_DECL (R1, operator +, S, M); \ - SPARSE_BIN_OP_DECL (R1, operator -, S, M); \ - SPARSE_BIN_OP_DECL (R2, operator *, S, M); \ - SPARSE_BIN_OP_DECL (R2, operator /, S, M); +#define SPARSE_SSM_BIN_OP_DECLS(R1, R2, S, M, API) \ + SPARSE_BIN_OP_DECL (R1, operator +, S, M, API); \ + SPARSE_BIN_OP_DECL (R1, operator -, S, M, API); \ + SPARSE_BIN_OP_DECL (R2, operator *, S, M, API); \ + SPARSE_BIN_OP_DECL (R2, operator /, S, M, API); #define SPARSE_SSM_BIN_OP_1(R, F, OP, S, M) \ R \ @@ -296,17 +296,17 @@ SPARSE_SSM_BIN_OP_2 (R2, operator *, *, S, M) \ SPARSE_SSM_BIN_OP_2 (R2, operator /, /, S, M) -#define SPARSE_SSM_CMP_OP_DECLS(S, M) \ - SPARSE_CMP_OP_DECL (mx_el_lt, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_le, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_ge, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_gt, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_eq, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_ne, S, M); +#define SPARSE_SSM_CMP_OP_DECLS(S, M, API) \ + SPARSE_CMP_OP_DECL (mx_el_lt, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_le, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_ge, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_gt, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_eq, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, S, M, API); -#define SPARSE_SSM_EQNE_OP_DECLS(S, M) \ - SPARSE_CMP_OP_DECL (mx_el_eq, S, M); \ - SPARSE_CMP_OP_DECL (mx_el_ne, S, M); +#define SPARSE_SSM_EQNE_OP_DECLS(S, M, API) \ + SPARSE_CMP_OP_DECL (mx_el_eq, S, M, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, S, M, API); #define SPARSE_SSM_CMP_OP(F, OP, S, SZ, SC, M, MZ, MC) \ SparseBoolMatrix \ @@ -379,9 +379,9 @@ SPARSE_SSM_CMP_OP (mx_el_eq, ==, S, SZ, , M, MZ, ) \ SPARSE_SSM_CMP_OP (mx_el_ne, !=, S, SZ, , M, MZ, ) -#define SPARSE_SSM_BOOL_OP_DECLS(S, M) \ - SPARSE_BOOL_OP_DECL (mx_el_and, S, M); \ - SPARSE_BOOL_OP_DECL (mx_el_or, S, M); \ +#define SPARSE_SSM_BOOL_OP_DECLS(S, M, API) \ + SPARSE_BOOL_OP_DECL (mx_el_and, S, M, API); \ + SPARSE_BOOL_OP_DECL (mx_el_or, S, M, API); \ #define SPARSE_SSM_BOOL_OP(F, OP, S, M, LHS_ZERO, RHS_ZERO) \ SparseBoolMatrix \ @@ -449,18 +449,18 @@ #define SPARSE_SSM_BOOL_OPS(S, M, ZERO) \ SPARSE_SSM_BOOL_OPS2(S, M, ZERO, ZERO) -#define SPARSE_SSM_OP_DECLS(R1, R2, S, M) \ - SPARSE_SSM_BIN_OP_DECLS (R1, R2, S, M) \ - SPARSE_SSM_CMP_OP_DECLS (S, M) \ - SPARSE_SSM_BOOL_OP_DECLS (S, M) \ +#define SPARSE_SSM_OP_DECLS(R1, R2, S, M, API) \ + SPARSE_SSM_BIN_OP_DECLS (R1, R2, S, M, API) \ + SPARSE_SSM_CMP_OP_DECLS (S, M, API) \ + SPARSE_SSM_BOOL_OP_DECLS (S, M, API) \ // matrix by matrix operations. -#define SPARSE_SMSM_BIN_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_BIN_OP_DECL (R1, operator +, M1, M2); \ - SPARSE_BIN_OP_DECL (R1, operator -, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, product, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, quotient, M1, M2); +#define SPARSE_SMSM_BIN_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_BIN_OP_DECL (R1, operator +, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R1, operator -, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, product, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, quotient, M1, M2, API); #define SPARSE_SMSM_BIN_OP_1(R, F, OP, M1, M2) \ R \ @@ -803,17 +803,17 @@ SPARSE_SMSM_BIN_OP_2 (R2, product, *, M1, M2) \ SPARSE_SMSM_BIN_OP_3 (R2, quotient, /, M1, M2) -#define SPARSE_SMSM_CMP_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_le, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_SMSM_CMP_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_le, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); -#define SPARSE_SMSM_EQNE_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_SMSM_EQNE_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); #define SPARSE_SMSM_CMP_OP(F, OP, M1, C1, M2, C2) \ SparseBoolMatrix \ @@ -889,9 +889,9 @@ SPARSE_SMSM_CMP_OP (mx_el_eq, ==, M1, , M2, ) \ SPARSE_SMSM_CMP_OP (mx_el_ne, !=, M1, , M2, ) -#define SPARSE_SMSM_BOOL_OP_DECLS(M1, M2) \ - SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2); \ - SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2); +#define SPARSE_SMSM_BOOL_OP_DECLS(M1, M2, API) \ + SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2, API); \ + SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2, API); #define SPARSE_SMSM_BOOL_OP(F, OP, M1, M2, LHS_ZERO, RHS_ZERO) \ SparseBoolMatrix \ @@ -964,18 +964,18 @@ #define SPARSE_SMSM_BOOL_OPS(M1, M2, ZERO) \ SPARSE_SMSM_BOOL_OPS2(M1, M2, ZERO, ZERO) -#define SPARSE_SMSM_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_SMSM_BIN_OP_DECLS (R1, R2, M1, M2) \ - SPARSE_SMSM_CMP_OP_DECLS (M1, M2) \ - SPARSE_SMSM_BOOL_OP_DECLS (M1, M2) +#define SPARSE_SMSM_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_SMSM_BIN_OP_DECLS (R1, R2, M1, M2, API) \ + SPARSE_SMSM_CMP_OP_DECLS (M1, M2, API) \ + SPARSE_SMSM_BOOL_OP_DECLS (M1, M2, API) // matrix by matrix operations. -#define SPARSE_MSM_BIN_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_BIN_OP_DECL (R1, operator +, M1, M2); \ - SPARSE_BIN_OP_DECL (R1, operator -, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, product, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, quotient, M1, M2); +#define SPARSE_MSM_BIN_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_BIN_OP_DECL (R1, operator +, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R1, operator -, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, product, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, quotient, M1, M2, API); #define SPARSE_MSM_BIN_OP_1(R, F, OP, M1, M2) \ R \ @@ -1057,17 +1057,17 @@ SPARSE_MSM_BIN_OP_2 (R2, product, *, M1, M2, 0.0) \ SPARSE_MSM_BIN_OP_2 (R2, quotient, /, M1, M2, 0.0) -#define SPARSE_MSM_CMP_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_le, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_MSM_CMP_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_le, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); -#define SPARSE_MSM_EQNE_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_MSM_EQNE_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); #define SPARSE_MSM_CMP_OP(F, OP, M1, C1, M2, C2) \ SparseBoolMatrix \ @@ -1133,9 +1133,9 @@ SPARSE_MSM_CMP_OP (mx_el_eq, ==, M1, , M2, ) \ SPARSE_MSM_CMP_OP (mx_el_ne, !=, M1, , M2, ) -#define SPARSE_MSM_BOOL_OP_DECLS(M1, M2) \ - SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2); \ - SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2); +#define SPARSE_MSM_BOOL_OP_DECLS(M1, M2, API) \ + SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2, API); \ + SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2, API); #define SPARSE_MSM_BOOL_OP(F, OP, M1, M2, LHS_ZERO, RHS_ZERO) \ SparseBoolMatrix \ @@ -1198,18 +1198,18 @@ #define SPARSE_MSM_BOOL_OPS(M1, M2, ZERO) \ SPARSE_MSM_BOOL_OPS2(M1, M2, ZERO, ZERO) -#define SPARSE_MSM_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_MSM_BIN_OP_DECLS (R1, R2, M1, M2) \ - SPARSE_MSM_CMP_OP_DECLS (M1, M2) \ - SPARSE_MSM_BOOL_OP_DECLS (M1, M2) +#define SPARSE_MSM_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_MSM_BIN_OP_DECLS (R1, R2, M1, M2, API) \ + SPARSE_MSM_CMP_OP_DECLS (M1, M2, API) \ + SPARSE_MSM_BOOL_OP_DECLS (M1, M2, API) // matrix by matrix operations. -#define SPARSE_SMM_BIN_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_BIN_OP_DECL (R1, operator +, M1, M2); \ - SPARSE_BIN_OP_DECL (R1, operator -, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, product, M1, M2); \ - SPARSE_BIN_OP_DECL (R2, quotient, M1, M2); +#define SPARSE_SMM_BIN_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_BIN_OP_DECL (R1, operator +, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R1, operator -, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, product, M1, M2, API); \ + SPARSE_BIN_OP_DECL (R2, quotient, M1, M2, API); #define SPARSE_SMM_BIN_OP_1(R, F, OP, M1, M2) \ R \ @@ -1291,17 +1291,17 @@ SPARSE_SMM_BIN_OP_2 (R2, product, *, M1, M2, 0.0) \ SPARSE_SMM_BIN_OP_2 (R2, quotient, /, M1, M2, 0.0) -#define SPARSE_SMM_CMP_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_le, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_SMM_CMP_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_lt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_le, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ge, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_gt, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); -#define SPARSE_SMM_EQNE_OP_DECLS(M1, M2) \ - SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2); \ - SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2); +#define SPARSE_SMM_EQNE_OP_DECLS(M1, M2, API) \ + SPARSE_CMP_OP_DECL (mx_el_eq, M1, M2, API); \ + SPARSE_CMP_OP_DECL (mx_el_ne, M1, M2, API); #define SPARSE_SMM_CMP_OP(F, OP, M1, C1, M2, C2) \ SparseBoolMatrix \ @@ -1367,9 +1367,9 @@ SPARSE_SMM_CMP_OP (mx_el_eq, ==, M1, , M2, ) \ SPARSE_SMM_CMP_OP (mx_el_ne, !=, M1, , M2, ) -#define SPARSE_SMM_BOOL_OP_DECLS(M1, M2) \ - SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2); \ - SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2); +#define SPARSE_SMM_BOOL_OP_DECLS(M1, M2, API) \ + SPARSE_BOOL_OP_DECL (mx_el_and, M1, M2, API); \ + SPARSE_BOOL_OP_DECL (mx_el_or, M1, M2, API); #define SPARSE_SMM_BOOL_OP(F, OP, M1, M2, LHS_ZERO, RHS_ZERO) \ SparseBoolMatrix \ @@ -1432,10 +1432,10 @@ #define SPARSE_SMM_BOOL_OPS(M1, M2, ZERO) \ SPARSE_SMM_BOOL_OPS2(M1, M2, ZERO, ZERO) -#define SPARSE_SMM_OP_DECLS(R1, R2, M1, M2) \ - SPARSE_SMM_BIN_OP_DECLS (R1, R2, M1, M2) \ - SPARSE_SMM_CMP_OP_DECLS (M1, M2) \ - SPARSE_SMM_BOOL_OP_DECLS (M1, M2) +#define SPARSE_SMM_OP_DECLS(R1, R2, M1, M2, API) \ + SPARSE_SMM_BIN_OP_DECLS (R1, R2, M1, M2, API) \ + SPARSE_SMM_CMP_OP_DECLS (M1, M2, API) \ + SPARSE_SMM_BOOL_OP_DECLS (M1, M2, API) // Avoid some code duplication. Maybe we should use templates.