Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
8e23335c
Commit
8e23335c
authored
Sep 22, 2016
by
Johny Mattsson
Browse files
Removed more unused legacy code.
parent
55e8c65b
Changes
2
Hide whitespace changes
Inline
Side-by-side
components/base_nodemcu/c_stdlib.c
View file @
8e23335c
...
@@ -24,242 +24,3 @@ const char *c_getenv(const char *__string)
...
@@ -24,242 +24,3 @@ const char *c_getenv(const char *__string)
}
}
#endif
#endif
const
double
powersOf10
[]
=
/* Table giving binary powers of 10. Entry */
{
10
.,
/* is 10^2^i. Used to convert decimal */
100
.,
/* exponents into floating-point numbers. */
1.0e4
,
1.0e8
,
1.0e16
,
1.0e32
,
1.0e64
,
1.0e128
,
1.0e256
};
double
c_strtod
(
const
char
*
string
,
char
**
endPtr
)
{
int
maxExponent
=
511
;
/* Largest possible base 10 exponent. Any
* exponent larger than this will already
* produce underflow or overflow, so there's
* no need to worry about additional digits.
*/
int
sign
,
expSign
=
false
;
double
fraction
,
dblExp
;
const
double
*
d
;
register
const
char
*
p
;
register
int
c
;
int
exp
=
0
;
/* Exponent read from "EX" field. */
int
fracExp
=
0
;
/* Exponent that derives from the fractional
* part. Under normal circumstatnces, it is
* the negative of the number of digits in F.
* However, if I is very long, the last digits
* of I get dropped (otherwise a long I with a
* large negative exponent could cause an
* unnecessary overflow on I alone). In this
* case, fracExp is incremented one for each
* dropped digit. */
int
mantSize
;
/* Number of digits in mantissa. */
int
decPt
;
/* Number of mantissa digits BEFORE decimal
* point. */
const
char
*
pExp
;
/* Temporarily holds location of exponent
* in string. */
/*
* Strip off leading blanks and check for a sign.
*/
p
=
string
;
while
(
isspace
((
unsigned
char
)(
*
p
)))
{
p
+=
1
;
}
if
(
*
p
==
'-'
)
{
sign
=
true
;
p
+=
1
;
}
else
{
if
(
*
p
==
'+'
)
{
p
+=
1
;
}
sign
=
false
;
}
/*
* Count the number of digits in the mantissa (including the decimal
* point), and also locate the decimal point.
*/
decPt
=
-
1
;
for
(
mantSize
=
0
;
;
mantSize
+=
1
)
{
c
=
*
p
;
if
(
!
isdigit
(
c
))
{
if
((
c
!=
'.'
)
||
(
decPt
>=
0
))
{
break
;
}
decPt
=
mantSize
;
}
p
+=
1
;
}
/*
* Now suck up the digits in the mantissa. Use two integers to
* collect 9 digits each (this is faster than using floating-point).
* If the mantissa has more than 18 digits, ignore the extras, since
* they can't affect the value anyway.
*/
pExp
=
p
;
p
-=
mantSize
;
if
(
decPt
<
0
)
{
decPt
=
mantSize
;
}
else
{
mantSize
-=
1
;
/* One of the digits was the point. */
}
if
(
mantSize
>
18
)
{
fracExp
=
decPt
-
18
;
mantSize
=
18
;
}
else
{
fracExp
=
decPt
-
mantSize
;
}
if
(
mantSize
==
0
)
{
fraction
=
0
.
0
;
p
=
string
;
goto
done
;
}
else
{
int
frac1
,
frac2
;
frac1
=
0
;
for
(
;
mantSize
>
9
;
mantSize
-=
1
)
{
c
=
*
p
;
p
+=
1
;
if
(
c
==
'.'
)
{
c
=
*
p
;
p
+=
1
;
}
frac1
=
10
*
frac1
+
(
c
-
'0'
);
}
frac2
=
0
;
for
(;
mantSize
>
0
;
mantSize
-=
1
)
{
c
=
*
p
;
p
+=
1
;
if
(
c
==
'.'
)
{
c
=
*
p
;
p
+=
1
;
}
frac2
=
10
*
frac2
+
(
c
-
'0'
);
}
fraction
=
(
1.0e9
*
frac1
)
+
frac2
;
}
/*
* Skim off the exponent.
*/
p
=
pExp
;
if
((
*
p
==
'E'
)
||
(
*
p
==
'e'
))
{
p
+=
1
;
if
(
*
p
==
'-'
)
{
expSign
=
true
;
p
+=
1
;
}
else
{
if
(
*
p
==
'+'
)
{
p
+=
1
;
}
expSign
=
false
;
}
if
(
!
isdigit
((
unsigned
char
)(
*
p
)))
{
p
=
pExp
;
goto
done
;
}
while
(
isdigit
((
unsigned
char
)(
*
p
)))
{
exp
=
exp
*
10
+
(
*
p
-
'0'
);
p
+=
1
;
}
}
if
(
expSign
)
{
exp
=
fracExp
-
exp
;
}
else
{
exp
=
fracExp
+
exp
;
}
/*
* Generate a floating-point number that represents the exponent.
* Do this by processing the exponent one bit at a time to combine
* many powers of 2 of 10. Then combine the exponent with the
* fraction.
*/
if
(
exp
<
0
)
{
expSign
=
true
;
exp
=
-
exp
;
}
else
{
expSign
=
false
;
}
if
(
exp
>
maxExponent
)
{
exp
=
maxExponent
;
// errno = ERANGE;
}
dblExp
=
1
.
0
;
for
(
d
=
powersOf10
;
exp
!=
0
;
exp
>>=
1
,
d
+=
1
)
{
if
(
exp
&
01
)
{
dblExp
*=
*
d
;
}
}
if
(
expSign
)
{
fraction
/=
dblExp
;
}
else
{
fraction
*=
dblExp
;
}
done:
if
(
endPtr
!=
NULL
)
{
*
endPtr
=
(
char
*
)
p
;
}
if
(
sign
)
{
return
-
fraction
;
}
return
fraction
;
}
components/base_nodemcu/include/c_stdlib.h
View file @
8e23335c
...
@@ -2,6 +2,5 @@
...
@@ -2,6 +2,5 @@
#define _SDK_OVERRIDES_STDLIB_H_
#define _SDK_OVERRIDES_STDLIB_H_
extern
const
char
*
c_getenv
(
const
char
*
);
extern
const
char
*
c_getenv
(
const
char
*
);
extern
double
c_strtod
(
const
char
*
string
,
char
**
endPtr
);
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment