Am Donnerstag, den 11.04.2013, 16:08 +0200 schrieb Gilles:
> Hello.
>
> >
> > in class org.apache.commons.math3.linear.RealVector there is the
> > embedded class Entry which is protected, but it is exposed by method
> > public Iterator<Entry> iterator() ...
>
> Good catch. Thanks.
>
> >
> > My solution:
> > 1. make class Entry public
> > 2. make class RealVector implement Iterable<RealVector<Entry>>
> >
> > so one can do this:
> >
> > for (RealVector.Entry e : v) {
> > if (Double.isNaN(e.getValue()) ||
> > Double.isInfinite(e.getValue())) {
> > throw new RuntimeException("roots: inputs must not contain Inf or
> > NaN");
> > }
> > }
>
> IMO, exposing an "Entry" is a mistake: From a user point-of-view, a
> "RealVector" should be a collection of "[Dd]ouble".
> IIUC, the "Entry" was meant to allow storage or iteration optimizations
> in subclasses.
> I think that the current "iterator()" method must be deprecated and
> removed; in its place, there should be a
>
> protected Iterator<Entry> entryIterator()
>
> and a new
>
> public Iterator<Double> iterator()
>
> (that would use the above method), such that "RealVector" would
> implement "Iterable<Double>", as is appropriate for this concept.
>
> Eventually, your use-case would become:
> -----
> for (Double e : v) {
> if (e.isNaN() ||
> e.isInfinite()) {
> throw new RuntimeException("inputs must not contain Inf or NaN");
> }
> }
> -----
For me it would be handy to have a RealVector isNaNOrInfinite to avoid
one iteration - I mean handy not necessary.
>
> > JIRA + diff???
>
> A bug report mentioning the inconsistency is welcome.
> A diff is not necessary until we agree on the way to go.
>
>
> Thanks,
> Gilles
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
Arne
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]