Re: [PATCH] diff: round down similarity index
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jun 24, 2007, 23:25 UTC
- Message-ID
- <Pine.LNX.4.64.0706250021250.4059@racer.site>
- In-Reply-To
- <467EEEE6.3090100@lsrfire.ath.cx>
Hi,
On Mon, 25 Jun 2007, René Scharfe wrote:
Show 18 quoted lines
> Rounding down the printed (dis)similarity index allows us to use
> "100%" as a special value that indicates complete rewrites and
> fully equal file contents, respectively.
>
> [...]
>
> +static int similarity_index(struct diff_filepair *p)
> +{
> + int result = p->score * 100.0 / MAX_SCORE;
> +
> + /* Paranoia: guard against floating point rounding errors. */
> + if (p->score == MAX_SCORE)
> + result = 100;
> + else if (result == 100)
> + result = 99;
> +
> + return result;
> +}That's not even properly rounding down. The correct formula (correct in the sense for "what you want") would be
p->score * 100.0 / MAX_SCORE
if p->score == MAX_SCORE, iff the files are identical. And yes, that is the old formula.
Besides, AFAIR p->score is not even calculated if the files are identical, because that hits a different code path.
Ciao, Dscho