fix parsing of complex numbers with special single flonums
Closes PR 12839
This commit is contained in:
parent
9d6cb8e50e
commit
4345045b52
|
@ -117,6 +117,14 @@
|
|||
(500000000 "#e1/2#e10")
|
||||
(16140901064495857664-50176i "#e#x+e#s+e@-e#l-e")
|
||||
|
||||
(,(make-rectangular -inf.f 3.1415927f0) "-inf.f+3.1415927f0i")
|
||||
(,(make-rectangular -inf.0 3.1415927) "-inf.f+3.1415927i")
|
||||
(,(make-rectangular 3.1415927f0 -inf.f) "3.1415927f0-inf.fi")
|
||||
(,(make-rectangular 3.1415927 -inf.0) "3.1415927-inf.fi")
|
||||
(,(make-rectangular +inf.f -inf.f) "+inf.f-inf.fi")
|
||||
(,(make-rectangular +inf.0 -inf.0) "+inf.0-inf.fi")
|
||||
(,(make-rectangular +inf.0 -inf.0) "+inf.f-inf.0i")
|
||||
|
||||
(#f "d")
|
||||
(D "D")
|
||||
(#f "i")
|
||||
|
|
|
@ -500,7 +500,7 @@ Scheme_Object *scheme_read_number(const mzchar *str, intptr_t len,
|
|||
}
|
||||
|
||||
/* look for +inf.0, etc: */
|
||||
if (len -delta == 6) {
|
||||
if (len - delta == 6) {
|
||||
Scheme_Object *special;
|
||||
special = read_special_number(str, delta);
|
||||
if (special) {
|
||||
|
@ -525,7 +525,7 @@ Scheme_Object *scheme_read_number(const mzchar *str, intptr_t len,
|
|||
s2 = (mzchar *)scheme_malloc_atomic((len - delta - 6 + 4 + 1) * sizeof(mzchar));
|
||||
s2[0] = '+';
|
||||
s2[1] = '0';
|
||||
s2[2] = '.';
|
||||
s2[2] = (SCHEME_DBLP(special) ? '.' : 's');
|
||||
s2[3] = '0';
|
||||
memcpy(s2 + 4, str + delta + 6, (len - delta - 5) * sizeof(mzchar));
|
||||
} else {
|
||||
|
@ -536,7 +536,7 @@ Scheme_Object *scheme_read_number(const mzchar *str, intptr_t len,
|
|||
memcpy(s2, str + delta, (len - delta - 7) * sizeof(mzchar));
|
||||
s2[len - delta - 7] = '+';
|
||||
s2[len - delta - 7 + 1] = '0';
|
||||
s2[len - delta - 7 + 2] = '.';
|
||||
s2[len - delta - 7 + 2] = (SCHEME_DBLP(special) ? '.' : 's');
|
||||
s2[len - delta - 7 + 3] = '0';
|
||||
s2[len - delta - 7 + 4] = 'i';
|
||||
s2[len - delta - 7 + 5] = 0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user