double avpriv_strtod(char *restrict nptr, char **restrict endptr)

{

    char *end;

    double res;



    /* Skip leading spaces */

    while (isspace(*nptr))

        nptr++;



    if (!av_strncasecmp(nptr, "infinity", 8)) {

        end = nptr + 8;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "inf", 3)) {

        end = nptr + 3;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "+infinity", 9)) {

        end = nptr + 9;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "+inf", 4)) {

        end = nptr + 4;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "-infinity", 9)) {

        end = nptr + 9;

        res = -INFINITY;

    } else if (!av_strncasecmp(nptr, "-inf", 4)) {

        end = nptr + 4;

        res = -INFINITY;

    } else if (!av_strncasecmp(nptr, "nan", 3)) {

        end = check_nan_suffix(nptr + 3);

        res = NAN;

    } else if (!av_strncasecmp(nptr, "+nan", 4) ||

               !av_strncasecmp(nptr, "-nan", 4)) {

        end = check_nan_suffix(nptr + 4);

        res = NAN;

    } else if (!av_strncasecmp(nptr, "0x", 2) ||

               !av_strncasecmp(nptr, "-0x", 3) ||

               !av_strncasecmp(nptr, "+0x", 3)) {

        /* FIXME this doesn't handle exponents, non-integers (float/double)

         * and numbers too large for long long */

        res = strtoll(nptr, &end, 16);

    } else {

        res = strtod(nptr, &end);

    }



    if (endptr)

        *endptr = end;



    return res;

}

double avpriv_strtod(char *restrict nptr, char **restrict endptr)

{

    char *end;

    double res;



    

    while (isspace(*nptr))

        nptr++;



    if (!av_strncasecmp(nptr, "infinity", 8)) {

        end = nptr + 8;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "inf", 3)) {

        end = nptr + 3;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "+infinity", 9)) {

        end = nptr + 9;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "+inf", 4)) {

        end = nptr + 4;

        res = INFINITY;

    } else if (!av_strncasecmp(nptr, "-infinity", 9)) {

        end = nptr + 9;

        res = -INFINITY;

    } else if (!av_strncasecmp(nptr, "-inf", 4)) {

        end = nptr + 4;

        res = -INFINITY;

    } else if (!av_strncasecmp(nptr, "nan", 3)) {

        end = check_nan_suffix(nptr + 3);

        res = NAN;

    } else if (!av_strncasecmp(nptr, "+nan", 4) ||

               !av_strncasecmp(nptr, "-nan", 4)) {

        end = check_nan_suffix(nptr + 4);

        res = NAN;

    } else if (!av_strncasecmp(nptr, "0x", 2) ||

               !av_strncasecmp(nptr, "-0x", 3) ||

               !av_strncasecmp(nptr, "+0x", 3)) {

        



        res = strtoll(nptr, &end, 16);

    } else {

        res = strtod(nptr, &end);

    }



    if (endptr)

        *endptr = end;



    return res;

}

double FUNC_0(char *restrict VAR_0, char **restrict VAR_1)

{

    char *VAR_2;

    double VAR_3;



    

    while (isspace(*VAR_0))

        VAR_0++;



    if (!av_strncasecmp(VAR_0, "infinity", 8)) {

        VAR_2 = VAR_0 + 8;

        VAR_3 = INFINITY;

    } else if (!av_strncasecmp(VAR_0, "inf", 3)) {

        VAR_2 = VAR_0 + 3;

        VAR_3 = INFINITY;

    } else if (!av_strncasecmp(VAR_0, "+infinity", 9)) {

        VAR_2 = VAR_0 + 9;

        VAR_3 = INFINITY;

    } else if (!av_strncasecmp(VAR_0, "+inf", 4)) {

        VAR_2 = VAR_0 + 4;

        VAR_3 = INFINITY;

    } else if (!av_strncasecmp(VAR_0, "-infinity", 9)) {

        VAR_2 = VAR_0 + 9;

        VAR_3 = -INFINITY;

    } else if (!av_strncasecmp(VAR_0, "-inf", 4)) {

        VAR_2 = VAR_0 + 4;

        VAR_3 = -INFINITY;

    } else if (!av_strncasecmp(VAR_0, "nan", 3)) {

        VAR_2 = check_nan_suffix(VAR_0 + 3);

        VAR_3 = NAN;

    } else if (!av_strncasecmp(VAR_0, "+nan", 4) ||

               !av_strncasecmp(VAR_0, "-nan", 4)) {

        VAR_2 = check_nan_suffix(VAR_0 + 4);

        VAR_3 = NAN;

    } else if (!av_strncasecmp(VAR_0, "0x", 2) ||

               !av_strncasecmp(VAR_0, "-0x", 3) ||

               !av_strncasecmp(VAR_0, "+0x", 3)) {

        



        VAR_3 = strtoll(VAR_0, &VAR_2, 16);

    } else {

        VAR_3 = strtod(VAR_0, &VAR_2);

    }



    if (VAR_1)

        *VAR_1 = VAR_2;



    return VAR_3;

}

double FUNC_0(char *restrict VAR_0, char **restrict VAR_1)
{ char *VAR_2; double VAR_3; while (isspace(*VAR_0))
VAR_0++; if (!av_strncasecmp(VAR_0, "infinity", 8)) { VAR_2 = VAR_0 + 8; VAR_3 = INFINITY; } else if (!av_strncasecmp(VAR_0, "inf", 3)) { VAR_2 = VAR_0 + 3; VAR_3 = INFINITY; } else if (!av_strncasecmp(VAR_0, "+infinity", 9)) { VAR_2 = VAR_0 + 9; VAR_3 = INFINITY; } else if (!av_strncasecmp(VAR_0, "+inf", 4)) { VAR_2 = VAR_0 + 4; VAR_3 = INFINITY; } else if (!av_strncasecmp(VAR_0, "-infinity", 9)) { VAR_2 = VAR_0 + 9; VAR_3 = -INFINITY; } else if (!av_strncasecmp(VAR_0, "-inf", 4)) { VAR_2 = VAR_0 + 4; VAR_3 = -INFINITY; } else if (!av_strncasecmp(VAR_0, "nan", 3)) { VAR_2 = check_nan_suffix(VAR_0 + 3); VAR_3 = NAN; } else if (!av_strncasecmp(VAR_0, "+nan", 4) || !av_strncasecmp(VAR_0, "-nan", 4)) { VAR_2 = check_nan_suffix(VAR_0 + 4); VAR_3 = NAN; } else if (!av_strncasecmp(VAR_0, "0x", 2) || !av_strncasecmp(VAR_0, "-0x", 3) ||
!av_strncasecmp(VAR_0, "+0x", 3)) { VAR_3 = strtoll(VAR_0, &VAR_2, 16); } else { VAR_3 = strtod(VAR_0, &VAR_2); } if (VAR_1)
*VAR_1 = VAR_2; return VAR_3; }