static int soergeldist(bytea *a, bytea *b) { if (ISALLTRUE(a)) { if (ISALLTRUE(b)) return 0; else return SIGLENBIT(b) - sizebitvec(b); } else if (ISALLTRUE(b)) { return SIGLENBIT(a) - sizebitvec(a); } return soergeldistsign(a, b); }
static int soergeldist(bytea *a, bytea *b) { double d; if (ISALLTRUE(a)) { if (ISALLTRUE(b)) return 0; else // FIXME shouldn't it be double(sizebitvec(b))/SIGLENBIT(b); ? return SIGLENBIT(b) - bitstringWeight(SIGLEN(b), (uint8 *)VARDATA(b)); } else if (ISALLTRUE(b)) { // FIXME shouldn't it be double(sizebitvec(a))/SIGLENBIT(a); ? return SIGLENBIT(a) - bitstringWeight(SIGLEN(a), (uint8 *)VARDATA(a)); } return (int) floor(10000*soergeldistsign(a, b)); }