Changeset daf33c in git
- Timestamp:
- Jun 5, 2014, 7:54:33 PM (9 years ago)
- Branches:
- (u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
- Children:
- fb0ad9ad7fb76a63141d2ac481fd0deb60a82a3e
- Parents:
- 7e66d9f27a6aaca2a6aa50d429918ff75563c038
- git-author:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2014-06-05 19:54:33+02:00
- git-committer:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2014-06-05 19:55:59+02:00
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/gentable.cc
r7e66d9 rdaf33c 112 112 #define jjWRONG2 1 113 113 #define jjWRONG3 1 114 #define XS(A) A115 116 114 117 115 #define D(A) 2 -
Singular/iparith.cc
r7e66d9 rdaf33c 5305 5305 } 5306 5306 5307 #ifdef INIT_BUG5308 #define XS(A) -((short)A)5309 #define jjstrlen (proc1)15310 #define jjpLength (proc1)25311 #define jjidElem (proc1)35312 #define jjidFreeModule (proc1)55313 #define jjidVec2Ideal (proc1)65314 #define jjrCharStr (proc1)75315 #ifndef MDEBUG5316 #define jjpHead (proc1)85317 #endif5318 #define jjidMinBase (proc1)115319 #define jjsyMinBase (proc1)125320 #define jjpMaxComp (proc1)135321 #define jjmpTrace (proc1)145322 #define jjmpTransp (proc1)155323 #define jjrOrdStr (proc1)165324 #define jjrVarStr (proc1)185325 #define jjrParStr (proc1)195326 #define jjCOUNT_RES (proc1)225327 #define jjDIM_R (proc1)235328 #define jjidTransp (proc1)245329 5330 extern struct sValCmd1 dArith1[];5331 void jjInitTab1()5332 {5333 int i=0;5334 for (;dArith1[i].cmd!=0;i++)5335 {5336 if (dArith1[i].res<0)5337 {5338 switch ((int)dArith1[i].p)5339 {5340 case (int)jjstrlen: dArith1[i].p=(proc1)strlen; break;5341 case (int)jjpLength: dArith1[i].p=(proc1)pLength; break;5342 case (int)jjidElem: dArith1[i].p=(proc1)idElem; break;5343 case (int)jjidVec2Ideal: dArith1[i].p=(proc1)idVec2Ideal; break;5344 case (int)jjidFreeModule: dArith1[i].p=(proc1)idFreeModule; break;5345 case (int)jjrCharStr: dArith1[i].p=(proc1)rCharStr; break;5346 #ifndef MDEBUG5347 case (int)jjpHead: dArith1[i].p=(proc1)pHeadProc; break;5348 #endif5349 case (int)jjidMinBase: dArith1[i].p=(proc1)idMinBase; break;5350 case (int)jjsyMinBase: dArith1[i].p=(proc1)syMinBase; break;5351 case (int)jjpMaxComp: dArith1[i].p=(proc1)pMaxCompProc; break;5352 case (int)jjmpTrace: dArith1[i].p=(proc1)mpTrace; break;5353 case (int)jjmpTransp: dArith1[i].p=(proc1)mpTransp; break;5354 case (int)jjrOrdStr: dArith1[i].p=(proc1)rOrdStr; break;5355 case (int)jjrVarStr: dArith1[i].p=(proc1)rVarStr; break;5356 case (int)jjrParStr: dArith1[i].p=(proc1)rParStr; break;5357 case (int)jjCOUNT_RES: dArith1[i].p=(proc1)sySize; break;5358 case (int)jjDIM_R: dArith1[i].p=(proc1)syDim; break;5359 case (int)jjidTransp: dArith1[i].p=(proc1)idTransp; break;5360 default: Werror("missing proc1-definition for %d",(int)(long)dArith1[i].p);5361 }5362 }5363 }5364 }5365 #else5366 #if defined(PROC_BUG)5367 #define XS(A) A5368 5307 static BOOLEAN jjstrlen(leftv res, leftv v) 5369 5308 { … … 5463 5402 return FALSE; 5464 5403 } 5465 #else5466 #define XS(A) -((short)A)5467 #define jjstrlen (proc1)strlen5468 #define jjpLength (proc1)pLength5469 #define jjidElem (proc1)idElem5470 #define jjidFreeModule (proc1)idFreeModule5471 #define jjidVec2Ideal (proc1)idVec2Ideal5472 #define jjrCharStr (proc1)rCharStr5473 #ifndef MDEBUG5474 #define jjpHead (proc1)pHeadProc5475 #endif5476 #define jjidHead (proc1)idHead5477 #define jjidMinBase (proc1)idMinBase5478 #define jjsyMinBase (proc1)syMinBase5479 #define jjpMaxComp (proc1)pMaxCompProc5480 #define jjrOrdStr (proc1)rOrdStr5481 #define jjrVarStr (proc1)rVarStr5482 #define jjrParStr (proc1)rParStr5483 #define jjCOUNT_RES (proc1)sySize5484 #define jjDIM_R (proc1)syDim5485 #define jjidTransp (proc1)idTransp5486 #endif5487 #endif5488 5404 static BOOLEAN jjnInt(leftv res, leftv u) 5489 5405 { … … 8046 7962 if (traceit&TRACE_CALL) 8047 7963 Print("call %s(%s)\n",iiTwoOps(op),Tok2Cmdname(at)); 8048 if (r<0) 8049 { 8050 res->rtyp=-r; 8051 #ifdef PROC_BUG 8052 dArith1[i].p(res,a); 8053 #else 8054 res->data=(char *)((Proc1)dArith1[i].p)((char *)a->Data()); 8055 #endif 8056 } 8057 else if ((call_failed=dArith1[i].p(res,a))) 7964 if ((call_failed=dArith1[i].p(res,a))) 8058 7965 { 8059 7966 break;// leave loop, goto error handling … … 8086 7993 if (check_valid(dArith1[i].valid_for,op)) break; 8087 7994 } 8088 if (r<0) 8089 { 8090 res->rtyp=-r; 8091 failed= iiConvert(at,dArith1[i].arg,ai,a,an); 8092 if (!failed) 8093 { 8094 if (traceit&TRACE_CALL) 8095 Print("call %s(%s)\n",iiTwoOps(op),Tok2Cmdname(dArith1[i].arg)); 8096 #ifdef PROC_BUG 8097 dArith1[i].p(res,a); 8098 #else 8099 res->data=(char *)((Proc1)dArith1[i].p)((char *)an->Data()); 8100 #endif 8101 } 8102 } 8103 else 8104 { 8105 failed= ((iiConvert(at,dArith1[i].arg,ai,a,an)) 8106 || (call_failed=dArith1[i].p(res,an))); 8107 } 7995 if (traceit&TRACE_CALL) 7996 Print("call %s(%s)\n",iiTwoOps(op),Tok2Cmdname(dArith1[i].arg)); 7997 failed= ((iiConvert(at,dArith1[i].arg,ai,a,an)) 7998 || (call_failed=dArith1[i].p(res,an))); 8108 7999 // everything done, clean up temp. variables 8109 8000 if (failed) -
Singular/ipshell.h
r7e66d9 rdaf33c 120 120 typedef BOOLEAN (*proc1)(leftv,leftv); 121 121 122 #ifdef __GNUC__123 #if (__GNUC__ < 3)124 #define INIT_BUG 1125 void jjInitTab1();126 #endif127 #endif128 129 122 #ifdef GENTABLE 130 123 typedef char * (*Proc1)(char *); -
Singular/misc_ip.cc
r7e66d9 rdaf33c 1189 1189 1190 1190 // interpreter tables etc.: ----------------------------------------------- 1191 #ifdef INIT_BUG1192 jjInitTab1();1193 #endif1194 1191 memset(&sLastPrinted,0,sizeof(sleftv)); 1195 1192 sLastPrinted.rtyp=NONE; -
Singular/table.h
r7e66d9 rdaf33c 48 48 ,{D(jjCHAR), CHARACTERISTIC_CMD, INT_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} 49 49 ,{D(jjCHARSERIES), CHAR_SERIES_CMD, MATRIX_CMD, IDEAL_CMD , NO_PLURAL |NO_RING} 50 ,{D(jjrCharStr), CHARSTR_CMD, XS(STRING_CMD),RING_CMD , ALLOW_PLURAL |ALLOW_RING}51 ,{D(jjrCharStr), CHARSTR_CMD, XS(STRING_CMD),QRING_CMD , ALLOW_PLURAL |ALLOW_RING}50 ,{D(jjrCharStr), CHARSTR_CMD, STRING_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING} 51 ,{D(jjrCharStr), CHARSTR_CMD, STRING_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} 52 52 ,{D(jjOpenClose), CLOSE_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING} 53 53 //,{ jjWRONG , COLS_CMD, 0, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} … … 62 62 ,{D(jjCOUNT_BI), COUNT_CMD, INT_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING} 63 63 ,{D(jjCOUNT_N), COUNT_CMD, INT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING} 64 ,{D(jjCOUNT_RES), COUNT_CMD, XS(INT_CMD),RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}65 ,{D(jjstrlen), COUNT_CMD, XS(INT_CMD),STRING_CMD , ALLOW_PLURAL |ALLOW_RING}66 ,{D(jjpLength), COUNT_CMD, XS(INT_CMD),POLY_CMD , ALLOW_PLURAL |ALLOW_RING}67 ,{D(jjpLength), COUNT_CMD, XS(INT_CMD),VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}68 ,{D(jjidElem), COUNT_CMD, XS(INT_CMD),IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}69 ,{D(jjidElem), COUNT_CMD, XS(INT_CMD),MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}64 ,{D(jjCOUNT_RES), COUNT_CMD, INT_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING} 65 ,{D(jjstrlen), COUNT_CMD, INT_CMD, STRING_CMD , ALLOW_PLURAL |ALLOW_RING} 66 ,{D(jjpLength), COUNT_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 67 ,{D(jjpLength), COUNT_CMD, INT_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 68 ,{D(jjidElem), COUNT_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 69 ,{D(jjidElem), COUNT_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 70 70 ,{D(jjCOUNT_M), COUNT_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING} 71 71 ,{D(jjCOUNT_IV), COUNT_CMD, INT_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING} … … 89 89 ,{D(jjDIM), DIM_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 90 90 ,{D(jjDIM), DIM_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 91 ,{D(jjDIM_R), DIM_CMD, XS(INT_CMD),RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}91 ,{D(jjDIM_R), DIM_CMD, INT_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING} 92 92 ,{D(jjDUMP), DUMP_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING} 93 93 ,{D(jjE), E_CMD, VECTOR_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} … … 96 96 ,{D(jjFAC_P), FAC_CMD, LIST_CMD, POLY_CMD , NO_PLURAL |NO_RING} 97 97 ,{D(findUniProc), FINDUNI_CMD, IDEAL_CMD, IDEAL_CMD , NO_PLURAL |NO_RING} 98 ,{D(jjidFreeModule),FREEMODULE_CMD, XS(MODUL_CMD),INT_CMD , ALLOW_PLURAL |ALLOW_RING}98 ,{D(jjidFreeModule),FREEMODULE_CMD, MODUL_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 99 99 ,{D(jjFACSTD), FACSTD_CMD, LIST_CMD, IDEAL_CMD , NO_PLURAL |NO_RING} 100 100 ,{D(jjGETDUMP), GETDUMP_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING} … … 107 107 ,{D(jjHOMOG1), HOMOG_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 108 108 ,{D(jjDUMMY), IDEAL_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 109 ,{D(jjidVec2Ideal),IDEAL_CMD, XS(IDEAL_CMD),VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}109 ,{D(jjidVec2Ideal),IDEAL_CMD, IDEAL_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 110 110 ,{D(jjIDEAL_Ma), IDEAL_CMD, IDEAL_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING} 111 111 ,{D(jjIDEAL_R), IDEAL_CMD, IDEAL_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} … … 139 139 ,{D(jjpHead), LEAD_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 140 140 #else 141 ,{D(jjpHead), LEAD_CMD, XS(POLY_CMD),POLY_CMD , ALLOW_PLURAL |ALLOW_RING}142 #endif 143 ,{D(jjidHead), LEAD_CMD, XS(IDEAL_CMD),IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}141 ,{D(jjpHead), LEAD_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 142 #endif 143 ,{D(jjidHead), LEAD_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 144 144 #ifdef MDEBUG 145 145 ,{D(jjpHead), LEAD_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 146 146 #else 147 ,{D(jjpHead), LEAD_CMD, XS(VECTOR_CMD),VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}148 #endif 149 ,{D(jjidHead), LEAD_CMD, XS(MODUL_CMD),MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}147 ,{D(jjpHead), LEAD_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 148 #endif 149 ,{D(jjidHead), LEAD_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 150 150 ,{D(jjLEADCOEF), LEADCOEF_CMD, NUMBER_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 151 151 ,{D(jjLEADCOEF), LEADCOEF_CMD, NUMBER_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} … … 160 160 ,{D(jjidMaxIdeal), MAXID_CMD, IDEAL_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 161 161 ,{D(jjMEMORY), MEMORY_CMD, BIGINT_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 162 ,{D(jjidMinBase), MINBASE_CMD, XS(IDEAL_CMD),IDEAL_CMD , NO_PLURAL |NO_RING}163 ,{D(jjidMinBase), MINBASE_CMD, XS(MODUL_CMD),MODUL_CMD , NO_PLURAL |NO_RING}162 ,{D(jjidMinBase), MINBASE_CMD, IDEAL_CMD, IDEAL_CMD , NO_PLURAL |NO_RING} 163 ,{D(jjidMinBase), MINBASE_CMD, MODUL_CMD, MODUL_CMD , NO_PLURAL |NO_RING} 164 164 ,{D(jjMINRES), MINRES_CMD, LIST_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING} 165 165 ,{D(jjMINRES_R), MINRES_CMD, RESOLUTION_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING} … … 188 188 ,{D(jjORD), ORD_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 189 189 ,{D(jjORD), ORD_CMD, INT_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 190 ,{D(jjrOrdStr), ORDSTR_CMD, XS(STRING_CMD),RING_CMD , ALLOW_PLURAL |ALLOW_RING}191 ,{D(jjrOrdStr), ORDSTR_CMD, XS(STRING_CMD),QRING_CMD , ALLOW_PLURAL |ALLOW_RING}190 ,{D(jjrOrdStr), ORDSTR_CMD, STRING_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING} 191 ,{D(jjrOrdStr), ORDSTR_CMD, STRING_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} 192 192 ,{D(jjPAR1), PAR_CMD, NUMBER_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 193 193 ,{D(jjPARDEG), PARDEG_CMD, INT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING} 194 194 ,{D(jjPARSTR1), PARSTR_CMD, STRING_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 195 ,{D(jjrParStr), PARSTR_CMD, XS(STRING_CMD),RING_CMD , ALLOW_PLURAL |ALLOW_RING}196 ,{D(jjrParStr), PARSTR_CMD, XS(STRING_CMD),QRING_CMD , ALLOW_PLURAL |ALLOW_RING}195 ,{D(jjrParStr), PARSTR_CMD, STRING_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING} 196 ,{D(jjrParStr), PARSTR_CMD, STRING_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} 197 197 ,{D(jjDUMMY), POLY_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 198 198 ,{D(jjBI2P), POLY_CMD, POLY_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING} … … 219 219 ,{D(jjLISTRING), RING_CMD, RING_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING} 220 220 //,{ jjWRONG , ROWS_CMD, 0, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} 221 ,{D(jjpMaxComp), ROWS_CMD, XS(INT_CMD),VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}221 ,{D(jjpMaxComp), ROWS_CMD, INT_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING} 222 222 ,{D(jjROWS), ROWS_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 223 223 ,{D(jjROWS), ROWS_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING} … … 247 247 ,{ jjWRONG , TRACE_CMD, 0, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 248 248 ,{D(jjTRACE_IV), TRACE_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING} 249 ,{D(jjmpTrace), TRACE_CMD, XS(POLY_CMD),MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}249 ,{D(jjmpTrace), TRACE_CMD, POLY_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING} 250 250 ,{D(jjTRANSP_IV), TRANSPOSE_CMD, INTMAT_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING} 251 251 ,{D(jjTRANSP_IV), TRANSPOSE_CMD, INTMAT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING} 252 252 ,{D(jjTRANSP_BIM), TRANSPOSE_CMD, BIGINTMAT_CMD, BIGINTMAT_CMD , ALLOW_PLURAL |ALLOW_RING} 253 ,{D(jjmpTransp), TRANSPOSE_CMD, XS(MATRIX_CMD),MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}254 ,{D(jjidTransp), TRANSPOSE_CMD, XS(MODUL_CMD),MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}253 ,{D(jjmpTransp), TRANSPOSE_CMD, MATRIX_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING} 254 ,{D(jjidTransp), TRANSPOSE_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} 255 255 ,{D(jjTYPEOF), TYPEOF_CMD, STRING_CMD, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING} 256 256 ,{D(jjUNIVARIATE), UNIVARIATE_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING} … … 263 263 ,{D(jjVAR1), VAR_CMD, POLY_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 264 264 ,{D(jjVARSTR1), VARSTR_CMD, STRING_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING} 265 ,{D(jjrVarStr), VARSTR_CMD, XS(STRING_CMD),RING_CMD , ALLOW_PLURAL |ALLOW_RING}266 ,{D(jjrVarStr), VARSTR_CMD, XS(STRING_CMD),QRING_CMD , ALLOW_PLURAL |ALLOW_RING}265 ,{D(jjrVarStr), VARSTR_CMD, STRING_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING} 266 ,{D(jjrVarStr), VARSTR_CMD, STRING_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING} 267 267 ,{D(kWeight), WEIGHT_CMD, INTVEC_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING} 268 268 ,{D(kWeight), WEIGHT_CMD, INTVEC_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING} -
kernel/mod2.h
r7e66d9 rdaf33c 28 28 #define TIME_WITH_SYS_TIME 1 29 29 #define HAVE_SYS_TIME_H 1 30 #define PROC_BUG 131 30 /* Default value for timer resolution in ticks per second */ 32 31 /* set to 10 for resolution of tenth of a second, etc */
Note: See TracChangeset
for help on using the changeset viewer.