/*#include <math.h>*/
/*#include <stdio.h>*/


char * ecvt(double fn,int digits,int *dp,int *sign)
{
static char ecvt_buf[40];
char *cp;
int esign,ac,d;

digits=(digits>34?34:digits);  /* '0'+'.'+34+'e'+'-'+3*/

if (fn<0) *sign=1,fn=-fn; 
   else *sign=0;

if(fn==0 || (fn>.125 && fn<1)) digits=digits+1;  /* hack */

sprintf(ecvt_buf,"%.*e",digits-1,fn);
for(cp=ecvt_buf;*cp++!='e';);

cp[-1]=0;

if (*cp++=='-') esign=1;
   else esign=0;

ac=0;
for(;d=*cp++;) ac=ac*10+d-'0';

if (esign) ac=-ac;

if (ecvt_buf[0] != '0')
  {ecvt_buf[1]=ecvt_buf[0];
   *dp=ac+1;
   return ecvt_buf+1;}
else
  {*dp=ac;
   return ecvt_buf+2;}
}


/*
double ipow10(int p)
{
double ac,rv=1;
int sg,ck;

if(p<0) sg=1,p=-p;
  else sg=0;

while((ck=(p/2))>3)
 {ac=ipow10(ck);
  rv=rv*ac*ac;
  p=p-ck-ck;}

while(p>0)
 {rv=rv*10.0;p--;}

rv=rint(rv);
if(sg) rv=1/rv;

return rv;
}
*/





