FIX MacosX implementation for isinf does not return -1 value. 17/13717/1
Bruno JOFRET [Wed, 12 Feb 2014 18:51:47 +0000 (19:51 +0100)]
Change-Id: I6c358e2c4af55a297385f29ddb7e20d3abdce4fe

scilab/modules/linear_algebra/sci_gateway/c/sci_norm.c
scilab/modules/linear_algebra/src/c/norm.c

index fe4b9b4..c1d57c7 100644 (file)
@@ -204,7 +204,7 @@ int C2F(intnorm)(char *fname, unsigned long fname_len)
         }
 
         // Call the norm functions.
-        if (isinf(flagVal) == 1) // flag = %inf
+        if (isinf(flagVal) == 1 && flagVal > 0) // flag = %inf
         {
             if (isComplex)
             {
index d8b17b1..84faba3 100644 (file)
@@ -116,8 +116,12 @@ double normP (double *A, int iRows, int iCols, double p)
         return ret;
     }
 
-    if (isinf(p) == -1) // p = -%inf is a special case, return min(abs(A)).
+    //
+    // /!\ isinf return only 0 or 1 on non Linux platforms
+    //
+    if (isinf(p) != 0 && p < 0) // p = -%inf is a special case, return min(abs(A)).
     {
+      
         minA = Abs(A[0]);
         for (i = 0; i < iRows; ++i)
         {
@@ -234,7 +238,8 @@ double normPC (doublecomplex *A, int iRows, int iCols, double p)
         ret = (a - b) / (a - b);
         return ret;
     }
-    if (isinf(p) == -1) // p = -%inf is a special case, return min(abs(A)).
+    
+    if (isinf(p) != 0 && p < 0) // p = -%inf is a special case, return min(abs(A)).
     {
         minA = sqrt(A[0].r * A[0].r + A[0].i * A[0].i); // Retrieving A[0] modulus.
         for (i = 0; i < iRows; ++i)