summaryrefslogtreecommitdiff
path: root/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci
diff options
context:
space:
mode:
Diffstat (limited to 'macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci')
-rw-r--r--macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci85
1 files changed, 85 insertions, 0 deletions
diff --git a/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci b/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci
new file mode 100644
index 0000000..ca1d262
--- /dev/null
+++ b/macros/FunctionAnnotation/FA_SZ_ROW_COLUMN.sci
@@ -0,0 +1,85 @@
+function opoutsize = FA_SZ_ROW_COLUMN(in1size,in2size)
+// function opoutsize = FA_SZ_OPPLUSA(in1size,in2size)
+// -----------------------------------------------------------------
+// Returns the size of the output computed by OPPLUS operator
+// restricted to arithmetic operations (string operations not supported.)
+//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
+//
+// we have the following combinations:
+// in1 in2 outr outc
+// -----------------------
+// S S in2r in2c
+// S M in2r in2c
+// M S in1r in1c
+// M M in1r in1c
+//
+// Where S means that the input is a scalar
+// and M means that the input is a matrix.
+// There is also the case related to the string catenation!
+// This is the main difference between - and + operators.
+//
+// Input data:
+// in1size: size of input number 1. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// in2size: size of input number 2. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Output data:
+// opoutsize: size of output. It is an array of 2 strings.
+// The first string specifies the number of rows.
+// The second string specifies the number of columns.
+//
+// Status:
+// 18-Mar-2008 -- Raffaele Nutricato: Author.
+// 18-Mar-2008 -- Alberto Morea: Test Ok.
+//
+// Copyright 2008 Raffaele Nutricato & Alberto Morea.
+// Contact: raffaele.nutricato@tiscali.it
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+// --- Get dimensions of input arguments. ---
+in1size = string(in1size);
+in2size = string(in2size);
+in1type = string(in1type);
+in2type = string(in2type);
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+if (isnum(in2size(2))) then
+ if(in2size(2) == '3') then
+ in1num_c = eval(in1size(2));
+ in1num_r = eval(in2size(1));
+ opoutsize(1) = string(in1num_r);
+ opoutsize(2) = string(in1num_c);
+ else
+
+ in2num_r = eval(in1size(1));
+ in2num_c = eval(in2size(1));
+ opoutsize(1) = string(in2num_r);
+ opoutsize(2) = string(in2num_c);
+ end
+else
+ if(in2size(2) == 3)
+ opoutsize(2) = '('+string(in1size(2))+')';
+
+ else
+ opoutsize(1) = '('+string(in1size(1))+')';
+
+ end
+end
+
+endfunction