Skip to content

Commit c295988

Browse files
committed
gix normalize
1 parent 766c911 commit c295988

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

lib/num/code.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,17 +1253,23 @@ static void num_ssm_normalize(num_p num, uint64_t pos, uint64_t n)
12531253
assert(num->chunk[pos + n - 1] <= 2)
12541254

12551255
uint64_t value = num->chunk[pos + n - 1];
1256-
if(value)
1256+
num->chunk[pos + n - 1] = 0;
1257+
num_ssm_sub_uint(num, pos, n, value);
1258+
1259+
if(num->chunk[pos + n - 1] != UINT64_MAX)
12571260
{
1258-
num->chunk[pos + n - 1] = 0;
1259-
num_ssm_sub_uint(num, pos, n, value);
1261+
return;
1262+
}
12601263

1261-
if(num->chunk[pos + n - 1] == UINT64_MAX)
1262-
{
1263-
memset(&num->chunk[pos], 0, (n - 1) * sizeof(uint64_t));
1264-
num->chunk[pos + n - 1] = 1;
1265-
}
1264+
if(value != 1)
1265+
{
1266+
num->chunk[pos + n - 1] = 0;
1267+
num_ssm_add_uint(num, pos, n, 1);
1268+
return;
12661269
}
1270+
1271+
memset(&num->chunk[pos], 0, (n - 1) * sizeof(uint64_t));
1272+
num->chunk[pos + n - 1] = 1;
12671273
}
12681274

12691275
static void num_ssm_denormalize(num_p num, uint64_t pos, uint64_t n)

0 commit comments

Comments
 (0)