mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
changes for complex numbers
This commit is contained in:
parent
0bfd6c33fa
commit
8a5c5d277e
3 changed files with 111 additions and 1 deletions
|
@ -39,6 +39,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#define TYPE_NONE 'N'
|
||||
#define TYPE_INT 'i'
|
||||
#define TYPE_FLOAT 'f'
|
||||
#define TYPE_COMPLEX 'x'
|
||||
#define TYPE_LONG 'l'
|
||||
#define TYPE_STRING 's'
|
||||
#define TYPE_TUPLE '('
|
||||
|
@ -150,6 +151,26 @@ w_object(v, p)
|
|||
w_byte(n, p);
|
||||
w_string(buf, n, p);
|
||||
}
|
||||
#ifndef WITHOUT_COMPLEX
|
||||
else if (is_complexobject(v)) {
|
||||
extern void float_buf_repr PROTO((char *, floatobject *));
|
||||
char buf[256]; /* Plenty to format any double */
|
||||
floatobject *temp;
|
||||
w_byte(TYPE_COMPLEX, p);
|
||||
temp = (floatobject*)newfloatobject(PyComplex_RealAsDouble(v));
|
||||
float_buf_repr(buf, temp);
|
||||
DECREF(temp);
|
||||
n = strlen(buf);
|
||||
w_byte(n, p);
|
||||
w_string(buf, n, p);
|
||||
temp = (floatobject*)newfloatobject(PyComplex_ImagAsDouble(v));
|
||||
float_buf_repr(buf, temp);
|
||||
DECREF(temp);
|
||||
n = strlen(buf);
|
||||
w_byte(n, p);
|
||||
w_string(buf, n, p);
|
||||
}
|
||||
#endif
|
||||
else if (is_stringobject(v)) {
|
||||
w_byte(TYPE_STRING, p);
|
||||
n = getstringsize(v);
|
||||
|
@ -329,6 +350,32 @@ r_object(p)
|
|||
return newfloatobject(atof(buf));
|
||||
}
|
||||
|
||||
#ifndef WITHOUT_COMPLEX
|
||||
case TYPE_COMPLEX:
|
||||
{
|
||||
extern double atof PROTO((const char *));
|
||||
char buf[256];
|
||||
complex c;
|
||||
n = r_byte(p);
|
||||
if (r_string(buf, (int)n, p) != n) {
|
||||
err_setstr(EOFError,
|
||||
"EOF read where object expected");
|
||||
return NULL;
|
||||
}
|
||||
buf[n] = '\0';
|
||||
c.real = atof(buf);
|
||||
n = r_byte(p);
|
||||
if (r_string(buf, (int)n, p) != n) {
|
||||
err_setstr(EOFError,
|
||||
"EOF read where object expected");
|
||||
return NULL;
|
||||
}
|
||||
buf[n] = '\0';
|
||||
c.imag = atof(buf);
|
||||
return newcomplexobject(c);
|
||||
}
|
||||
#endif
|
||||
|
||||
case TYPE_STRING:
|
||||
n = r_long(p);
|
||||
v = newsizedstringobject((char *)NULL, n);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue