[petsc-dev] PetscFindInt

Matthew Knepley knepley at gmail.com
Sat Sep 22 14:54:49 CDT 2012


On Sat, Sep 22, 2012 at 3:47 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> http://petsc.cs.iit.edu/petsc/petsc-dev/rev/6eccf13462a8
>
> Since when did we start using assert()?
>

Its commented out.


> When we discussed this in chat, I specifically asked you to use
>
> PetscInt imid = imin + (imax - imin)/2;
>
> but then you went off and wrote this crap
>
> PetscInt imid = (imin+imax)/2;
>
> which overflows prematurely.
> http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
>

Changed to mid = ((unsigned int)low + (unsigned int)high)) >> 1;, which is
in the comment above.


> Your implementation also does unnecessary arithmetic, but due to possible
> overflow, the compiler may not be able to remove it. Why not use the tight
> structure I suggested?
>

http://en.wikipedia.org/wiki/Binary_search

   Matt

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120922/e5ed6bea/attachment.html>


More information about the petsc-dev mailing list