Re: [PATCH] diff: round down similarity index
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jun 24, 2007, 23:27 UTC
- Message-ID
- <Pine.LNX.4.64.0706250026400.4059@racer.site>
- In-Reply-To
- <Pine.LNX.4.64.0706250021250.4059@racer.site>
Hi,
On Mon, 25 Jun 2007, Johannes Schindelin wrote:
Show 28 quoted lines
> On Mon, 25 Jun 2007, Ren� Scharfe wrote:
>
> > 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.Just ignore that, please.
> Besides, AFAIR p->score is not even calculated if the files are identical, > because that hits a different code path.
But this still holds true.
Ciao, Dscho