mirror of https://github.com/python/cpython
Reuse Py_MIN and Py_MAX macros: remove duplicate MIN/MAX macros
multiprocessing.h: remove unused MIN and MAX macros
This commit is contained in:
parent
e0b99ba140
commit
640c35ce13
|
@ -36,8 +36,6 @@
|
||||||
#define RELEASE_LOCK(obj)
|
#define RELEASE_LOCK(obj)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
@ -157,7 +155,7 @@ compress(BZ2Compressor *c, char *data, size_t len, int action)
|
||||||
/* On a 64-bit system, len might not fit in avail_in (an unsigned int).
|
/* On a 64-bit system, len might not fit in avail_in (an unsigned int).
|
||||||
Do compression in chunks of no more than UINT_MAX bytes each. */
|
Do compression in chunks of no more than UINT_MAX bytes each. */
|
||||||
if (c->bzs.avail_in == 0 && len > 0) {
|
if (c->bzs.avail_in == 0 && len > 0) {
|
||||||
c->bzs.avail_in = MIN(len, UINT_MAX);
|
c->bzs.avail_in = Py_MIN(len, UINT_MAX);
|
||||||
len -= c->bzs.avail_in;
|
len -= c->bzs.avail_in;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +171,7 @@ compress(BZ2Compressor *c, char *data, size_t len, int action)
|
||||||
c->bzs.next_out = PyBytes_AS_STRING(result) + data_size;
|
c->bzs.next_out = PyBytes_AS_STRING(result) + data_size;
|
||||||
buffer_left = PyBytes_GET_SIZE(result) - data_size;
|
buffer_left = PyBytes_GET_SIZE(result) - data_size;
|
||||||
}
|
}
|
||||||
c->bzs.avail_out = MIN(buffer_left, UINT_MAX);
|
c->bzs.avail_out = Py_MIN(buffer_left, UINT_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
@ -370,7 +368,7 @@ decompress(BZ2Decompressor *d, char *data, size_t len)
|
||||||
d->bzs.next_in = data;
|
d->bzs.next_in = data;
|
||||||
/* On a 64-bit system, len might not fit in avail_in (an unsigned int).
|
/* On a 64-bit system, len might not fit in avail_in (an unsigned int).
|
||||||
Do decompression in chunks of no more than UINT_MAX bytes each. */
|
Do decompression in chunks of no more than UINT_MAX bytes each. */
|
||||||
d->bzs.avail_in = MIN(len, UINT_MAX);
|
d->bzs.avail_in = Py_MIN(len, UINT_MAX);
|
||||||
len -= d->bzs.avail_in;
|
len -= d->bzs.avail_in;
|
||||||
d->bzs.next_out = PyBytes_AS_STRING(result);
|
d->bzs.next_out = PyBytes_AS_STRING(result);
|
||||||
d->bzs.avail_out = PyBytes_GET_SIZE(result);
|
d->bzs.avail_out = PyBytes_GET_SIZE(result);
|
||||||
|
@ -399,7 +397,7 @@ decompress(BZ2Decompressor *d, char *data, size_t len)
|
||||||
if (d->bzs.avail_in == 0) {
|
if (d->bzs.avail_in == 0) {
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
break;
|
break;
|
||||||
d->bzs.avail_in = MIN(len, UINT_MAX);
|
d->bzs.avail_in = Py_MIN(len, UINT_MAX);
|
||||||
len -= d->bzs.avail_in;
|
len -= d->bzs.avail_in;
|
||||||
}
|
}
|
||||||
if (d->bzs.avail_out == 0) {
|
if (d->bzs.avail_out == 0) {
|
||||||
|
@ -410,7 +408,7 @@ decompress(BZ2Decompressor *d, char *data, size_t len)
|
||||||
d->bzs.next_out = PyBytes_AS_STRING(result) + data_size;
|
d->bzs.next_out = PyBytes_AS_STRING(result) + data_size;
|
||||||
buffer_left = PyBytes_GET_SIZE(result) - data_size;
|
buffer_left = PyBytes_GET_SIZE(result) - data_size;
|
||||||
}
|
}
|
||||||
d->bzs.avail_out = MIN(buffer_left, UINT_MAX);
|
d->bzs.avail_out = Py_MIN(buffer_left, UINT_MAX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data_size != PyBytes_GET_SIZE(result))
|
if (data_size != PyBytes_GET_SIZE(result))
|
||||||
|
|
|
@ -168,10 +168,6 @@ static char *screen_encoding = NULL;
|
||||||
"must call start_color() first"); \
|
"must call start_color() first"); \
|
||||||
return 0; }
|
return 0; }
|
||||||
|
|
||||||
#ifndef MIN
|
|
||||||
#define MIN(x,y) ((x) < (y) ? (x) : (y))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Utility Functions */
|
/* Utility Functions */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1212,7 +1208,7 @@ PyCursesWindow_GetStr(PyCursesWindowObject *self, PyObject *args)
|
||||||
if (!PyArg_ParseTuple(args,"i;n", &n))
|
if (!PyArg_ParseTuple(args,"i;n", &n))
|
||||||
return NULL;
|
return NULL;
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
rtn2 = wgetnstr(self->win,rtn,MIN(n, 1023));
|
rtn2 = wgetnstr(self->win, rtn, Py_MIN(n, 1023));
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -1232,11 +1228,11 @@ PyCursesWindow_GetStr(PyCursesWindowObject *self, PyObject *args)
|
||||||
#ifdef STRICT_SYSV_CURSES
|
#ifdef STRICT_SYSV_CURSES
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
rtn2 = wmove(self->win,y,x)==ERR ? ERR :
|
rtn2 = wmove(self->win,y,x)==ERR ? ERR :
|
||||||
wgetnstr(self->win, rtn, MIN(n, 1023));
|
wgetnstr(self->win, rtn, Py_MIN(n, 1023));
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
#else
|
#else
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
rtn2 = mvwgetnstr(self->win, y, x, rtn, MIN(n, 1023));
|
rtn2 = mvwgetnstr(self->win, y, x, rtn, Py_MIN(n, 1023));
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
@ -1374,7 +1370,7 @@ PyCursesWindow_InStr(PyCursesWindowObject *self, PyObject *args)
|
||||||
case 1:
|
case 1:
|
||||||
if (!PyArg_ParseTuple(args,"i;n", &n))
|
if (!PyArg_ParseTuple(args,"i;n", &n))
|
||||||
return NULL;
|
return NULL;
|
||||||
rtn2 = winnstr(self->win,rtn,MIN(n,1023));
|
rtn2 = winnstr(self->win, rtn, Py_MIN(n, 1023));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!PyArg_ParseTuple(args,"ii;y,x",&y,&x))
|
if (!PyArg_ParseTuple(args,"ii;y,x",&y,&x))
|
||||||
|
@ -1384,7 +1380,7 @@ PyCursesWindow_InStr(PyCursesWindowObject *self, PyObject *args)
|
||||||
case 3:
|
case 3:
|
||||||
if (!PyArg_ParseTuple(args, "iii;y,x,n", &y, &x, &n))
|
if (!PyArg_ParseTuple(args, "iii;y,x,n", &y, &x, &n))
|
||||||
return NULL;
|
return NULL;
|
||||||
rtn2 = mvwinnstr(self->win, y, x, rtn, MIN(n,1023));
|
rtn2 = mvwinnstr(self->win, y, x, rtn, Py_MIN(n,1023));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PyErr_SetString(PyExc_TypeError, "instr requires 0 or 3 arguments");
|
PyErr_SetString(PyExc_TypeError, "instr requires 0 or 3 arguments");
|
||||||
|
|
|
@ -99,13 +99,4 @@ PyObject *_PyMp_SetError(PyObject *Type, int num);
|
||||||
|
|
||||||
extern PyTypeObject _PyMp_SemLockType;
|
extern PyTypeObject _PyMp_SemLockType;
|
||||||
|
|
||||||
/*
|
|
||||||
* Miscellaneous
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MIN
|
|
||||||
# define MIN(x, y) ((x) < (y) ? x : y)
|
|
||||||
# define MAX(x, y) ((x) > (y) ? x : y)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* MULTIPROCESSING_H */
|
#endif /* MULTIPROCESSING_H */
|
||||||
|
|
|
@ -91,10 +91,6 @@ typedef struct {
|
||||||
(y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
|
(y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \
|
||||||
(y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
|
(y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); }
|
||||||
|
|
||||||
#ifndef MIN
|
|
||||||
#define MIN(x, y) ( ((x)<(y))?(x):(y) )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* MD5 macros */
|
/* MD5 macros */
|
||||||
|
|
||||||
|
@ -244,7 +240,7 @@ md5_process(struct md5_state *md5, const unsigned char *in, Py_ssize_t inlen)
|
||||||
in += MD5_BLOCKSIZE;
|
in += MD5_BLOCKSIZE;
|
||||||
inlen -= MD5_BLOCKSIZE;
|
inlen -= MD5_BLOCKSIZE;
|
||||||
} else {
|
} else {
|
||||||
n = MIN(inlen, (Py_ssize_t)(MD5_BLOCKSIZE - md5->curlen));
|
n = Py_MIN(inlen, (Py_ssize_t)(MD5_BLOCKSIZE - md5->curlen));
|
||||||
memcpy(md5->buf + md5->curlen, in, (size_t)n);
|
memcpy(md5->buf + md5->curlen, in, (size_t)n);
|
||||||
md5->curlen += (MD5_INT32)n;
|
md5->curlen += (MD5_INT32)n;
|
||||||
in += n;
|
in += n;
|
||||||
|
|
|
@ -92,10 +92,6 @@ typedef struct {
|
||||||
(y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \
|
(y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \
|
||||||
(y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); }
|
(y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); }
|
||||||
|
|
||||||
#ifndef MIN
|
|
||||||
#define MIN(x, y) ( ((x)<(y))?(x):(y) )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* SHA1 macros */
|
/* SHA1 macros */
|
||||||
|
|
||||||
|
@ -220,7 +216,7 @@ sha1_process(struct sha1_state *sha1,
|
||||||
in += SHA1_BLOCKSIZE;
|
in += SHA1_BLOCKSIZE;
|
||||||
inlen -= SHA1_BLOCKSIZE;
|
inlen -= SHA1_BLOCKSIZE;
|
||||||
} else {
|
} else {
|
||||||
n = MIN(inlen, (Py_ssize_t)(SHA1_BLOCKSIZE - sha1->curlen));
|
n = Py_MIN(inlen, (Py_ssize_t)(SHA1_BLOCKSIZE - sha1->curlen));
|
||||||
memcpy(sha1->buf + sha1->curlen, in, (size_t)n);
|
memcpy(sha1->buf + sha1->curlen, in, (size_t)n);
|
||||||
sha1->curlen += (SHA1_INT32)n;
|
sha1->curlen += (SHA1_INT32)n;
|
||||||
in += n;
|
in += n;
|
||||||
|
|
|
@ -95,9 +95,6 @@ Local naming conventions:
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
#undef MAX
|
|
||||||
#define MAX(x, y) ((x) < (y) ? (y) : (x))
|
|
||||||
|
|
||||||
/* Socket object documentation */
|
/* Socket object documentation */
|
||||||
PyDoc_STRVAR(sock_doc,
|
PyDoc_STRVAR(sock_doc,
|
||||||
"socket([family[, type[, proto]]]) -> socket object\n\
|
"socket([family[, type[, proto]]]) -> socket object\n\
|
||||||
|
@ -4819,7 +4816,7 @@ socket_inet_pton(PyObject *self, PyObject *args)
|
||||||
char* ip;
|
char* ip;
|
||||||
int retval;
|
int retval;
|
||||||
#ifdef ENABLE_IPV6
|
#ifdef ENABLE_IPV6
|
||||||
char packed[MAX(sizeof(struct in_addr), sizeof(struct in6_addr))];
|
char packed[Py_MAX(sizeof(struct in_addr), sizeof(struct in6_addr))];
|
||||||
#else
|
#else
|
||||||
char packed[sizeof(struct in_addr)];
|
char packed[sizeof(struct in_addr)];
|
||||||
#endif
|
#endif
|
||||||
|
@ -4870,7 +4867,7 @@ socket_inet_ntop(PyObject *self, PyObject *args)
|
||||||
int len;
|
int len;
|
||||||
const char* retval;
|
const char* retval;
|
||||||
#ifdef ENABLE_IPV6
|
#ifdef ENABLE_IPV6
|
||||||
char ip[MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1];
|
char ip[Py_MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1];
|
||||||
#else
|
#else
|
||||||
char ip[INET_ADDRSTRLEN + 1];
|
char ip[INET_ADDRSTRLEN + 1];
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -9,11 +9,6 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
#undef MAX
|
|
||||||
#undef MIN
|
|
||||||
#define MAX(x, y) ((x) < (y) ? (y) : (x))
|
|
||||||
#define MIN(x, y) ((x) < (y) ? (x) : (y))
|
|
||||||
|
|
||||||
|
|
||||||
/* Special free list
|
/* Special free list
|
||||||
free_list is a singly-linked list of available PyFloatObjects, linked
|
free_list is a singly-linked list of available PyFloatObjects, linked
|
||||||
|
@ -1131,7 +1126,7 @@ float_hex(PyObject *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
m = frexp(fabs(x), &e);
|
m = frexp(fabs(x), &e);
|
||||||
shift = 1 - MAX(DBL_MIN_EXP - e, 0);
|
shift = 1 - Py_MAX(DBL_MIN_EXP - e, 0);
|
||||||
m = ldexp(m, shift);
|
m = ldexp(m, shift);
|
||||||
e -= shift;
|
e -= shift;
|
||||||
|
|
||||||
|
@ -1285,8 +1280,8 @@ float_fromhex(PyObject *cls, PyObject *arg)
|
||||||
fdigits = coeff_end - s_store;
|
fdigits = coeff_end - s_store;
|
||||||
if (ndigits == 0)
|
if (ndigits == 0)
|
||||||
goto parse_error;
|
goto parse_error;
|
||||||
if (ndigits > MIN(DBL_MIN_EXP - DBL_MANT_DIG - LONG_MIN/2,
|
if (ndigits > Py_MIN(DBL_MIN_EXP - DBL_MANT_DIG - LONG_MIN/2,
|
||||||
LONG_MAX/2 + 1 - DBL_MAX_EXP)/4)
|
LONG_MAX/2 + 1 - DBL_MAX_EXP)/4)
|
||||||
goto insane_length_error;
|
goto insane_length_error;
|
||||||
|
|
||||||
/* [p <exponent>] */
|
/* [p <exponent>] */
|
||||||
|
@ -1342,7 +1337,7 @@ float_fromhex(PyObject *cls, PyObject *arg)
|
||||||
|
|
||||||
/* lsb = exponent of least significant bit of the *rounded* value.
|
/* lsb = exponent of least significant bit of the *rounded* value.
|
||||||
This is top_exp - DBL_MANT_DIG unless result is subnormal. */
|
This is top_exp - DBL_MANT_DIG unless result is subnormal. */
|
||||||
lsb = MAX(top_exp, (long)DBL_MIN_EXP) - DBL_MANT_DIG;
|
lsb = Py_MAX(top_exp, (long)DBL_MIN_EXP) - DBL_MANT_DIG;
|
||||||
|
|
||||||
x = 0.0;
|
x = 0.0;
|
||||||
if (exp >= lsb) {
|
if (exp >= lsb) {
|
||||||
|
|
|
@ -7,11 +7,6 @@
|
||||||
#include "opcode.h"
|
#include "opcode.h"
|
||||||
#include "structmember.h"
|
#include "structmember.h"
|
||||||
|
|
||||||
#undef MIN
|
|
||||||
#undef MAX
|
|
||||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
||||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
||||||
|
|
||||||
#define OFF(x) offsetof(PyFrameObject, x)
|
#define OFF(x) offsetof(PyFrameObject, x)
|
||||||
|
|
||||||
static PyMemberDef frame_memberlist[] = {
|
static PyMemberDef frame_memberlist[] = {
|
||||||
|
@ -160,8 +155,8 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno)
|
||||||
|
|
||||||
/* We're now ready to look at the bytecode. */
|
/* We're now ready to look at the bytecode. */
|
||||||
PyBytes_AsStringAndSize(f->f_code->co_code, (char **)&code, &code_len);
|
PyBytes_AsStringAndSize(f->f_code->co_code, (char **)&code, &code_len);
|
||||||
min_addr = MIN(new_lasti, f->f_lasti);
|
min_addr = Py_MIN(new_lasti, f->f_lasti);
|
||||||
max_addr = MAX(new_lasti, f->f_lasti);
|
max_addr = Py_MAX(new_lasti, f->f_lasti);
|
||||||
|
|
||||||
/* You can't jump onto a line with an 'except' statement on it -
|
/* You can't jump onto a line with an 'except' statement on it -
|
||||||
* they expect to have an exception on the top of the stack, which
|
* they expect to have an exception on the top of the stack, which
|
||||||
|
@ -293,7 +288,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
min_delta_iblock = MIN(min_delta_iblock, delta_iblock);
|
min_delta_iblock = Py_MIN(min_delta_iblock, delta_iblock);
|
||||||
|
|
||||||
if (op >= HAVE_ARGUMENT) {
|
if (op >= HAVE_ARGUMENT) {
|
||||||
addr += 2;
|
addr += 2;
|
||||||
|
|
|
@ -89,11 +89,6 @@ maybe_small_long(PyLongObject *v)
|
||||||
*/
|
*/
|
||||||
#define FIVEARY_CUTOFF 8
|
#define FIVEARY_CUTOFF 8
|
||||||
|
|
||||||
#undef MIN
|
|
||||||
#undef MAX
|
|
||||||
#define MAX(x, y) ((x) < (y) ? (y) : (x))
|
|
||||||
#define MIN(x, y) ((x) > (y) ? (y) : (x))
|
|
||||||
|
|
||||||
#define SIGCHECK(PyTryBlock) \
|
#define SIGCHECK(PyTryBlock) \
|
||||||
do { \
|
do { \
|
||||||
if (PyErr_CheckSignals()) PyTryBlock \
|
if (PyErr_CheckSignals()) PyTryBlock \
|
||||||
|
@ -3029,7 +3024,7 @@ kmul_split(PyLongObject *n,
|
||||||
Py_ssize_t size_lo, size_hi;
|
Py_ssize_t size_lo, size_hi;
|
||||||
const Py_ssize_t size_n = ABS(Py_SIZE(n));
|
const Py_ssize_t size_n = ABS(Py_SIZE(n));
|
||||||
|
|
||||||
size_lo = MIN(size_n, size);
|
size_lo = Py_MIN(size_n, size);
|
||||||
size_hi = size_n - size_lo;
|
size_hi = size_n - size_lo;
|
||||||
|
|
||||||
if ((hi = _PyLong_New(size_hi)) == NULL)
|
if ((hi = _PyLong_New(size_hi)) == NULL)
|
||||||
|
@ -3300,7 +3295,7 @@ k_lopsided_mul(PyLongObject *a, PyLongObject *b)
|
||||||
nbdone = 0;
|
nbdone = 0;
|
||||||
while (bsize > 0) {
|
while (bsize > 0) {
|
||||||
PyLongObject *product;
|
PyLongObject *product;
|
||||||
const Py_ssize_t nbtouse = MIN(bsize, asize);
|
const Py_ssize_t nbtouse = Py_MIN(bsize, asize);
|
||||||
|
|
||||||
/* Multiply the next slice of b by a. */
|
/* Multiply the next slice of b by a. */
|
||||||
memcpy(bslice->ob_digit, b->ob_digit + nbdone,
|
memcpy(bslice->ob_digit, b->ob_digit + nbdone,
|
||||||
|
@ -3591,7 +3586,7 @@ long_true_divide(PyObject *v, PyObject *w)
|
||||||
goto underflow_or_zero;
|
goto underflow_or_zero;
|
||||||
|
|
||||||
/* Choose value for shift; see comments for step 1 above. */
|
/* Choose value for shift; see comments for step 1 above. */
|
||||||
shift = MAX(diff, DBL_MIN_EXP) - DBL_MANT_DIG - 2;
|
shift = Py_MAX(diff, DBL_MIN_EXP) - DBL_MANT_DIG - 2;
|
||||||
|
|
||||||
inexact = 0;
|
inexact = 0;
|
||||||
|
|
||||||
|
@ -3662,7 +3657,7 @@ long_true_divide(PyObject *v, PyObject *w)
|
||||||
x_bits = (x_size-1)*PyLong_SHIFT+bits_in_digit(x->ob_digit[x_size-1]);
|
x_bits = (x_size-1)*PyLong_SHIFT+bits_in_digit(x->ob_digit[x_size-1]);
|
||||||
|
|
||||||
/* The number of extra bits that have to be rounded away. */
|
/* The number of extra bits that have to be rounded away. */
|
||||||
extra_bits = MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG;
|
extra_bits = Py_MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG;
|
||||||
assert(extra_bits == 2 || extra_bits == 3);
|
assert(extra_bits == 2 || extra_bits == 3);
|
||||||
|
|
||||||
/* Round by directly modifying the low digit of x. */
|
/* Round by directly modifying the low digit of x. */
|
||||||
|
|
Loading…
Reference in New Issue