Пример #1
0
void _atoldbl(_LDOUBLE *ld, char *str)
{
    const char *EndPtr;
    _LDBL12 ld12;

    __strgtold12(&ld12, &EndPtr, str, 1, 0, 0, 0 );
    _ld12told(&ld12, ld);
}
Пример #2
0
void _atoflt(FLOAT *f, char *str)
{
    const char *EndPtr;
    _LDBL12 ld12;

    __strgtold12(&ld12, &EndPtr, str, 0, 0, 0, 0 );
    _ld12tof(&ld12, f);
}
Пример #3
0
void _atodbl(DOUBLE_s *d, char *str)
{
    const char *EndPtr;
    _LDBL12 ld12;

    __strgtold12(&ld12, &EndPtr, str, 0, 0, 0, 0 );
    _ld12tod(&ld12, d);
}
Пример #4
0
FLT __cdecl _fltin(const char *str, int len_ignore, int scale_ignore, int radix_ignore)
#endif
{
    _LDBL12 ld12;
    DOUBLE x;
    const char *EndPtr;
    unsigned flags;
    int retflags = 0;

    flags = __strgtold12(&ld12, &EndPtr, str, 0, 0, 0, 0);
    if (flags & SLD_NODIGITS) {
	retflags |= CFIN_NODIGITS;
	*(u_long *)&x = 0;
	*((u_long *)&x+1) = 0;
    }
    else {
	INTRNCVT_STATUS intrncvt;

	intrncvt = _ld12tod(&ld12, &x);

	if (flags & SLD_OVERFLOW  ||
	    intrncvt == INTRNCVT_OVERFLOW) {
	    retflags |= CFIN_OVERFLOW;
	}
	if (flags & SLD_UNDERFLOW ||
	    intrncvt == INTRNCVT_UNDERFLOW) {
	    retflags |= CFIN_UNDERFLOW;
	}
    }

    flt->flags = retflags;
    flt->nbytes = EndPtr - str;
    flt->dval = *(double *)&x;

    return flt;
}