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 }