In case it helps, see
http://www.gnu.org/software/gsl/design/gsl-design.html#SEC31
for why the loop is constructed that way.
On Sun, Apr 20, 2008 at 3:58 AM, Julian Seward <[EMAIL PROTECTED]> wrote:
>
> > for (j = N; j > 0 && j--;)
>
> This is an extremely strange for-loop header, and I wonder if
> it is what the author(s) really intended. I _think_ it might
> be equivalent to
>
> for (j = N; j > 0 && j != 0; /*no step action*/) {
> j--;
> /* now the rest of the loop body */
> }
> j--; /* because the condition is consulted 1 more time than the
> loop body runs */
>
> so there isn't necessarily an overrun at j = N.
>
> I wonder if it would not be cleaner to use a standard idiom:
>
> for (j = N-1; j >= 0; j--)
>
> IMO even a C language lawyer would have a hard time figuring out
> what the exact behaviour is here, which doesn't bode well for
> end-user understanding of the code.
>
> You might want to try Valgrind's Memcheck tool to see if there
> are in fact any overruns happening.
>
>
>
> J
>
>
> _______________________________________________
> Bug-gsl mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/bug-gsl
>
_______________________________________________
Bug-gsl mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gsl