1570af302Sopenharmony_ci#define _GNU_SOURCE 2570af302Sopenharmony_ci#include <stdlib.h> 3570af302Sopenharmony_ci#include <stdio.h> 4570af302Sopenharmony_ci 5570af302Sopenharmony_cichar *ecvt(double x, int n, int *dp, int *sign) 6570af302Sopenharmony_ci{ 7570af302Sopenharmony_ci static char buf[16]; 8570af302Sopenharmony_ci char tmp[32]; 9570af302Sopenharmony_ci int i, j; 10570af302Sopenharmony_ci 11570af302Sopenharmony_ci if (n-1U > 15) n = 15; 12570af302Sopenharmony_ci sprintf(tmp, "%.*e", n-1, x); 13570af302Sopenharmony_ci i = *sign = (tmp[0]=='-'); 14570af302Sopenharmony_ci for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.')) 15570af302Sopenharmony_ci buf[j] = tmp[i]; 16570af302Sopenharmony_ci buf[j] = 0; 17570af302Sopenharmony_ci *dp = atoi(tmp+i+1)+1; 18570af302Sopenharmony_ci 19570af302Sopenharmony_ci return buf; 20570af302Sopenharmony_ci} 21