Bug Fix #14471 - strange([]) returned [] instead of %nan as all other functions for...
[scilab.git] / scilab / modules / statistics / macros / strange.sci
index f37635c..4f10de5 100644 (file)
@@ -11,7 +11,7 @@
 // along with this program.
 //
 
-function [r]=strange(x,orien)
+function [r] = strange(x,orien)
     //
     //The range  is  the distance between   the largest  and smaller  value,
     //[r]=range(x) computes the range of vector or matrix x.
@@ -23,17 +23,25 @@ function [r]=strange(x,orien)
     //with the range of each row.
     //
     //
-    [lhs,rhs]=argn(0)
-    if rhs==0 then error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"),"strange",0,2)), end
+    [lhs,rhs] = argn(0)
+    if rhs==0 then 
+        msg = _("%s: Wrong number of input arguments: %d to %d expected.\n")
+        error(msprintf(msg,"strange",0,2))
+    end
     if rhs==1 then
-        r=max(x)-min(x)
+        if x==[]
+            r = %nan
+        else
+            r = max(x) - min(x)
+        end
     elseif rhs==2 then
-        if orien=="r"|orien==1 then
-            r=max(x,"r")-min(x,"r")
-        elseif orien=="c"|orien==2 then
-            r=max(x,"c")-min(x,"c")
+        if orien=="r" | orien==1 then
+            r = max(x,"r")-min(x,"r")
+        elseif orien=="c" | orien==2 then
+            r = max(x,"c") - min(x,"c")
         else
-            error(msprintf(gettext("%s: Wrong value for %d input argument: ''%s'', ''%s'', %d or %d expected.\n"),"strange",2,"r","c",1,2)),
+            msg = _("%s: Wrong value for %d input argument: ''%s'', ''%s'', %d or %d expected.\n")
+            error(msprintf(msg,"strange",2,"r","c",1,2))
         end
     end
 endfunction