You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2010/04/03 22:39:29 UTC
[jira] Updated: (MATH-326) getLInfNorm() uses wrong formula in both
ArrayRealVector and OpenMapRealVector (in different ways)
[ https://issues.apache.org/jira/browse/MATH-326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz updated MATH-326:
-----------------------------
Fix Version/s: 2.1
> getLInfNorm() uses wrong formula in both ArrayRealVector and OpenMapRealVector (in different ways)
> --------------------------------------------------------------------------------------------------
>
> Key: MATH-326
> URL: https://issues.apache.org/jira/browse/MATH-326
> Project: Commons Math
> Issue Type: Bug
> Affects Versions: 2.0
> Environment: all
> Reporter: Jake Mannix
> Fix For: 2.1
>
>
> the L_infinity norm of a finite dimensional vector is just the max of the absolute value of its entries.
> The current implementation in ArrayRealVector has a typo:
> {code}
> public double getLInfNorm() {
> double max = 0;
> for (double a : data) {
> max += Math.max(max, Math.abs(a));
> }
> return max;
> }
> {code}
> the += should just be an =.
> There is sadly a unit test assuring us that this is the correct behavior (effectively a regression-only test, not a test for correctness).
> Worse, the implementation in OpenMapRealVector is not even positive semi-definite:
> {code}
> public double getLInfNorm() {
> double max = 0;
> Iterator iter = entries.iterator();
> while (iter.hasNext()) {
> iter.advance();
> max += iter.value();
> }
> return max;
> }
> {code}
> I would suggest that this method be moved up to the AbstractRealVector superclass and implemented using the sparseIterator():
> {code}
> public double getLInfNorm() {
> double norm = 0;
> Iterator<Entry> it = sparseIterator();
> Entry e;
> while(it.hasNext() && (e = it.next()) != null) {
> norm = Math.max(norm, Math.abs(e.getValue()));
> }
> return norm;
> }
> {code}
> Unit tests with negative valued vectors would be helpful to check for this kind of thing in the future.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.