old load: normalize NaN to Signaling NaN
[scilab.git] / scilab / modules / io / src / fortran / newsave.f
index 5cd5002..219c3ed 100644 (file)
@@ -756,10 +756,18 @@ c     Save a matrix of numbers
       integer fd
       character*3 fmti,fmtd
       integer sadr
+      
+      double precision dblNaN
+      
+      integer isanan
+      external isanan
+      
 c
       iadr(l)=l+l-1
       sadr(l)=(l/2)+1
 c
+      call returnananfortran(dblNaN)
+      
       fmti='il'//char(0)
       fmtd='dl'//char(0)
 
@@ -780,6 +788,14 @@ c     read matrix elements
       endif
       l=sadr(il+4)
       call mgetnc(fd,istk(il+4),mn,fmtd,ierr)
+      
+c     convert all NaN to Signaling NaN
+      do 10 i = 0, mn-1
+          if(isanan(stk(l+i)).eq.1) then
+              stk(l+i) = dblNaN
+          endif
+10    continue        
+      
 c      call mgetnc(fd,stk(l),mn,fmtd,ierr)
       n=iadr(l+mn)-il
 c      n=4+2*mn
@@ -819,10 +835,17 @@ c     Load a matrix of polynomials
       integer fd
       character*3 fmti,fmtd
       integer sadr
+      double precision dblNaN
+      
+      integer isanan
+      external isanan
+      
 c
       iadr(l)=l+l-1
       sadr(l)=(l/2)+1
 c
+      call returnananfortran(dblNaN)
+      
       fmti='il'//char(0)
       fmtd='dl'//char(0)
 
@@ -854,6 +877,14 @@ c     read polynomials coefficients
       endif
       l=sadr(il+9+mn)
       call mgetnc(fd,istk(iadr(l)),mn1,fmtd,ierr)
+      
+c     convert all NaN to Signaling NaN
+      do 10 i = 0, mn1-1
+          if(isanan(stk(l+i)).eq.1) then
+              stk(l+i) = dblNaN
+          endif
+10    continue        
+      
       n=iadr(l+mn1)-il
 c      n=9+mn+2*mn1
       return