znot.c - libzahl - big integer library
(HTM) git clone git://git.suckless.org/libzahl
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
znot.c (419B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include "internals.h"
3
4
5 void
6 znot(z_t a, z_t b)
7 {
8 size_t bits;
9
10 if (unlikely(zzero(b))) {
11 SET_SIGNUM(a, 0);
12 return;
13 }
14
15 bits = zbits(b);
16 a->used = b->used;
17 SET_SIGNUM(a, -zsignum(b));
18
19 ZMEM_1OP(a->chars, b->chars, a->used, ~);
20 bits = BITS_IN_LAST_CHAR(bits);
21 if (bits)
22 a->chars[a->used - 1] &= ((zahl_char_t)1 << bits) - 1;
23
24 TRIM_AND_ZERO(a);
25 }