Avoid use of float arithmetic in bipartite_match.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 23 Aug 2015 17:02:13 +0000 (13:02 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 23 Aug 2015 17:02:18 +0000 (13:02 -0400)
commit44ed65a545970829322098e22d10947e6d545d9a
tree80e5f5cf76d60139434a089210368637e101fca6
parent5956b7f9e858ac5613dd0214ac7fb2476f900771
Avoid use of float arithmetic in bipartite_match.c.

Since the distances used in this algorithm are small integers (not more
than the size of the U set, in fact), there is no good reason to use float
arithmetic for them.  Use short ints instead: they're smaller, faster, and
require no special portability assumptions.

Per testing by Greg Stark, which disclosed that the code got into an
infinite loop on VAX for lack of IEEE-style float infinities.  We don't
really care all that much whether Postgres can run on a VAX anymore,
but there seems sufficient reason to change this code anyway.

In passing, make a few other small adjustments to make the code match
usual Postgres coding style a bit better.
src/backend/lib/bipartite_match.c
src/include/lib/bipartite_match.h