On Fri, May 07, 2010 at 09:38:49PM +0200, Alois Schlögl wrote:
> Olaf Till wrote:
> > On Thu, May 06, 2010 at 01:35:31PM -0700, Søren Hauberg wrote:
> >> tor, 06 05 2010 kl. 22:24 +0200, skrev Alois Schlögl:
> >>> After looking further into the problem of converting octave code into
> >>> a 
> >>> matlab compatible syntax, I concluded that in some cases it is
> >>> easiest 
> >>> way to make the source code compatible. In some cases, there is just
> >>> no 
> >>> way to make an automated conversion. E.g there is no good way to
> >>> convert 
> >>>   while (k++ == N) in a automated way. Converting the source code is
> >>> a 
> >>> simpler and more straight forward way.
> >>>
> >>> The attached patch is doing this. The difficult cases like ++, --,
> >>> +=, 
> >>> -=, /=, &=, *=, |=, and do-until are replaced. Most of the octave 
> >>> specific syntax (like endfor, endwhile, ## comment, etc.) stays in
> >>> place.
> >>>
> >>> Are there are any objections on committing this patch ? 
> >> In my opinion, this is a decision to be made by individual package
> >> maintainers.
> > 
> > Søren, and Alois, I think such a decision can't be left only to the
> > individual package maintainers. Some packages (e.g. optim) have no
> > dedicated maintainer; in others the original author may be different
> > from the current maintainer; it's not guaranteed that the respective
> > authors attend to this list. These issues get weight especially since
> > such Octave->Matlab conversions are --- sorry for the hard word ---
> > anti-productive for the Octave community (IMO). They make the code
> > harder to read and more clumsy (there are cases where this is even
> > more obvious than in the proposed patch). They interfer with a widely
> > distributed Octave-mode of Emacs. They can introduce errors.
> > 
> > For the latter point (errors), there are examples in the patch (I only
> > looked in optim and do not claim I've found all there), although the
> > changes were quite trivial in the case of this patch:
> > 
> > while niter++ < something
> > 
> > is not equivalent to
> > 
> > while niter < something
> >   niter = niter + 1;
> > 
> > (in optim/inst/d2_min.m.  niter is used after the while loop, so this
> > matters.)
> > 
> > Similar with ninner in the same file.
> > 
> > Olaf
> > 
> > ------------------------------------------------------------------------------
> 
> 
> Olaf,
> 
> 
> The two loops in d2_min are the only cases in optim, that are a little 
> bit more difficult. Or do you see any other issues in optim?
> 
> Concerning the inner loop
> 
>    maxinner = 30;
>    ...
>    ninner=0;
>    while ninner++ < maxinner,
>    ...
>    if (c) break end;
>    ...
>    endwhile
> 
>    if ninner >= maxinner
>    ...
>    else
>    ...
> 
> If we apply this patch:
> 
> -  while ninner++ < maxinner
> +  while ninner < maxinner
> +    ninner = ninner + 1;
> 
> 
> There is no difference when the loop ends with the break, ninner is the 
> same. Only when the while condition is false (that is when ninner = 30 
> or larger) the increment ninner++ is not applied. However, the 
> subsequent check (ninner >= maxinner) is (30 >= 30) instead of (31>=30). 
>   So the overall outcome is the same.
> 
> 
> In case of the outer loop, the patch should be
> 
> -while niter++ <= maxout && nev(1) < maxev
> +while niter <= maxout
> +  niter = niter + 1;
> +  if nev(1) < maxev, break; end;
> 
> 
> Thanks for pointing this out.
> 
> 
> I do not agree that reaching out for a larger audience can be
> detrimental to the Octave community. I think that a more widespread use
> of Octave functions will also increase the Octave community and improve
> Octave code.

We have different opinions here. I'm not inclined to help in the
conversion, because I am against the conversion. I pointed out the
issue above only for an example that the conversion can introduce
errors.

I can not follow your argumentation that one has to make the code
worse first to get it improved later by Matlab users.

Olaf

------------------------------------------------------------------------------

_______________________________________________
Octave-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to