static int
complex_print(PyComplexObject *v, FILE *fp, int flags)
{
    PyObject *formatv;
    char *buf;
    if (flags & Py_PRINT_RAW)
        formatv = complex_format(v, PyFloat_STR_PRECISION, 'g');
    else
        formatv = complex_format(v, 0, 'r');
    if (formatv == NULL)
        return -1;
    buf = PyString_AS_STRING(formatv);
    Py_BEGIN_ALLOW_THREADS
    fputs(buf, fp);
    Py_END_ALLOW_THREADS
    Py_DECREF(formatv);
    return 0;
}
static PyObject *
complex_str(PyComplexObject *v)
{
    return complex_format(v, PyFloat_STR_PRECISION, 'g');
}
static PyObject *
complex_repr(PyComplexObject *v)
{
    return complex_format(v, 0, 'r');
}