=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/kanExport0.c,v retrieving revision 1.1 retrieving revision 1.6 diff -u -p -r1.1 -r1.6 --- OpenXM/src/kan96xx/Kan/kanExport0.c 1999/10/08 02:12:01 1.1 +++ OpenXM/src/kan96xx/Kan/kanExport0.c 2001/04/12 06:48:25 1.6 @@ -1,3 +1,4 @@ +/* $OpenXM: OpenXM/src/kan96xx/Kan/kanExport0.c,v 1.5 2000/12/28 00:07:14 takayama Exp $ */ #include #include "datatype.h" #include "stackm.h" @@ -837,6 +838,8 @@ char *key; struct object rob1,rob2; char *s; int i; + double f; + double f2; /* reports the data type */ if (key[0] == 't' || key[0] =='e') { if (strcmp(key,"type?")==0) { @@ -936,6 +939,21 @@ char *key; if (flag == -1) errorKan1("KdataConversion(): %s", "It's not number.\n"); return(rob); + }else if (strcmp(key,"double") == 0) { + /* Check the format. 2.3432 e2 is not allowed. It should be 2.3232e2.*/ + flag = 0; + for (i=0; (obj.lc.str)[i] != '\0'; i++) { + if ((obj.lc.str)[i] > ' ' && flag == 0) flag=1; + else if ((obj.lc.str)[i] <= ' ' && flag == 1) flag = 2; + else if ((obj.lc.str)[i] > ' ' && flag == 2) flag=3; + } + if (flag == 3) errorKan1("KdataConversion(): %s","The data for the double contains blanck(s)"); + /* Read the double. */ + if (sscanf(obj.lc.str,"%lf",&f) <= 0) { + errorKan1("KdataConversion(): %s","It cannot be translated to double."); + } + rob = KpoDouble(f); + return(rob); }else if (strcmp(key,"null") == 0) { rob = NullObject; return(rob); @@ -967,6 +985,7 @@ char *key; break; case Spoly: if (strcmp(key,"poly")==0) { + rob = obj; return(rob); }else if (strcmp(key,"integer")==0) { if (obj.lc.poly == ZERO) return(KpoInteger(0)); @@ -1358,7 +1377,7 @@ int c,l,m,n,cc,ll,mm,nn; if (!(cc<=ll && ll<=mm && mm<=nn && nn <= n)) return(1); if (!(cc