diff options
-rw-r--r-- | macros/FunctionAnnotation/FA_MAX.sci | 5 | ||||
-rw-r--r-- | macros/FunctionAnnotation/FA_MIN.sci | 45 | ||||
-rw-r--r-- | macros/FunctionAnnotation/FA_SZ_OPSLASH.sci | 48 |
3 files changed, 68 insertions, 30 deletions
diff --git a/macros/FunctionAnnotation/FA_MAX.sci b/macros/FunctionAnnotation/FA_MAX.sci index 8b947cec..2ecfc6ac 100644 --- a/macros/FunctionAnnotation/FA_MAX.sci +++ b/macros/FunctionAnnotation/FA_MAX.sci @@ -25,7 +25,7 @@ function opout = FA_MAX(in1,in2) // ------------------------------
SCI2CNInArgCheck(argn(2),2,2);
-SCI2Cerror('Not allowed to use FA_MAX in this release.');
+//SCI2Cerror('Not allowed to use FA_MAX in this release.');
// ------------------------
// --- Generate Output. ---
@@ -47,5 +47,6 @@ if (SCI2Cisnum(in1)) end
else
opout = string(in1);
-end
+end +
endfunction
diff --git a/macros/FunctionAnnotation/FA_MIN.sci b/macros/FunctionAnnotation/FA_MIN.sci new file mode 100644 index 00000000..874cee8a --- /dev/null +++ b/macros/FunctionAnnotation/FA_MIN.sci @@ -0,0 +1,45 @@ +function opout = FA_MIN(in1,in2)
+// function opout = FA_MIN(in1,in2)
+// -----------------------------------------------------------------
+// Minimum function for Function Annotations.
+// When in1 and in2 are both symbols this function returns
+// in1.
+//
+// Input data:
+// in1: string specifying a number or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed result.
+
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),2,2);
+
+
+// ------------------------
+// --- Generate Output. ---
+// ------------------------
+if (SCI2Cisnum(in1))
+ in1num = eval(in1);
+ if (SCI2Cisnum(in2))
+ in2num = eval(in2);
+ outnum = min(in1num,in2num);
+ if isnan(outnum)
+ opout = '__SCI2CNANSIZE';
+ else
+ opout = string(outnum);
+ end
+ else
+ if (in1num == 1)
+ opout = string(in2);
+ end
+ end
+else
+ opout = string(in1);
+end +
+endfunction diff --git a/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci b/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci index 78ddecec..a44057d9 100644 --- a/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci +++ b/macros/FunctionAnnotation/FA_SZ_OPSLASH.sci @@ -3,43 +3,35 @@ function opoutsize = FA_SZ_OPSLASH(in1size,in2size) // -----------------------------------------------------------------
// Returns the size of the output computed by OPSLASH operator.
//
+// Assuming:
+// size(in1) = [in1r,in1c]
+// size(in2) = [in2r,in2c]
+// size(out) = [outr,outc]
//
-// Status:
-// 28-May-2008 -- Alberto Morea: Author.
-// 28-May-2008 -- Raffaele Nutricato: Test Ok.
-//
-// Copyright 2008 Raffaele Nutricato & Alberto Morea.
-// Contact: raffaele.nutricato@tiscali.it
-// -----------------------------------------------------------------
+
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
SCI2CNInArgCheck(argn(2),2,2);
+in1size = string(in1size);
+in2size = string(in2size);
+
// ------------------------
// --- Generate Output. ---
// ------------------------
-in1size=string(in1size);
-in2size=string(in2size);
-
-// knowing that
-// b/a = (a' \ b')' -
-// a'
-in1sizetmp(1) = in1size(2);
-in1sizetmp(2) = in1size(1);
-
-// b'
-in2sizetmp(1) = in2size(2);
-in2sizetmp(2) = in2size(1);
-
-// a'\b'
-opoutsizetmp = FA_SZ_OPBACKSLASH(in2sizetmp,in1sizetmp);
-
-// (a'\b')'
-opoutsize(1) = opoutsizetmp(2);
-opoutsize(2) = opoutsizetmp(1);
-
+// --- Get dimensions of input arguments. ---
+in1dim = GetSymbolDimension(in1size);
+in2dim = GetSymbolDimension(in2size);
+
+if (in1dim == 0)
+ opoutsize = in2size;
+elseif (in2dim == 0)
+ opoutsize = in1size;
+else
+ opoutsize(1) = in1size(1);
+ opoutsize(2) = in2size(1);
+end
endfunction
|