Skip to content

Commit bf28864

Browse files
authored
Merge pull request #247 from SwayamInSync/refac
Refactor: General refactors + quad2quad inter-backend fixes
2 parents db1ee6a + c8175c8 commit bf28864

9 files changed

Lines changed: 309 additions & 234 deletions

File tree

quaddtype/numpy_quaddtype/src/casts.cpp

Lines changed: 159 additions & 145 deletions
Large diffs are not rendered by default.

quaddtype/numpy_quaddtype/src/constants.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ extern "C" {
1212

1313
// Quad precision constants using sleef_q macro
1414
#define QUAD_PRECISION_ZERO sleef_q(+0x0000000000000LL, 0x0000000000000000ULL, -16383)
15+
#define QUAD_PRECISION_NEG_ZERO sleef_q(-0x0000000000000LL, 0x0000000000000000ULL, -16383)
1516
#define QUAD_PRECISION_ONE sleef_q(+0x1000000000000LL, 0x0000000000000000ULL, 0)
1617
#define QUAD_PRECISION_INF sleef_q(+0x1000000000000LL, 0x0000000000000000ULL, 16384)
1718
#define QUAD_PRECISION_NINF sleef_q(-0x1000000000000LL, 0x0000000000000000ULL, 16384)
1819
#define QUAD_PRECISION_NAN sleef_q(+0x1ffffffffffffLL, 0xffffffffffffffffULL, 16384)
20+
#define QUAD_PRECISION_NEG_NAN sleef_q(-0x1ffffffffffffLL, 0xffffffffffffffffULL, 16384)
1921

2022
// Additional constants
2123
#define QUAD_PRECISION_MAX_FINITE SLEEF_QUAD_MAX

quaddtype/numpy_quaddtype/src/dragon4.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -974,22 +974,22 @@ PrintInfNan(char *buffer, npy_uint32 bufferSize, npy_uint64 mantissa, npy_uint32
974974

975975
DEBUG_ASSERT(bufferSize > 0);
976976

977+
/* Print sign for both inf and nan values */
978+
if (signbit == '+') {
979+
if (pos < maxPrintLen - 1) {
980+
buffer[pos++] = '+';
981+
}
982+
}
983+
else if (signbit == '-') {
984+
if (pos < maxPrintLen - 1) {
985+
buffer[pos++] = '-';
986+
}
987+
}
988+
977989
/* Check for infinity */
978990
if (mantissa == 0) {
979991
npy_uint32 printLen;
980992

981-
/* only print sign for inf values (though nan can have a sign set) */
982-
if (signbit == '+') {
983-
if (pos < maxPrintLen - 1) {
984-
buffer[pos++] = '+';
985-
}
986-
}
987-
else if (signbit == '-') {
988-
if (pos < maxPrintLen - 1) {
989-
buffer[pos++] = '-';
990-
}
991-
}
992-
993993
/* copy and make sure the buffer is terminated */
994994
printLen = (3 < maxPrintLen - pos) ? 3 : maxPrintLen - pos;
995995
memcpy(buffer + pos, "inf", printLen);

0 commit comments

Comments
 (0)