public void image (Vector d, Vector r) { if (! r.getSpace().equals(A.getRange())) { System.err.println("Operator A range differs from space of r"); } r.zero(); A.image(d,r); r.sub(b); }This fails:
public void image (Vector d, Vector r) { if (! r.getSpace().equals(A.getRange())) { System.err.println("Operator A range differs from space of r"); } r.zero(); r = A.image(d); r.sub(b); }You pass a reference r ... than you reset the reference (which at that point looses track of the original r).
This works because, r is created within the object and not passed by reference:
public Vector image ( Vector d) { Vector r = range.newMember(); r = A.image(d); r.sub(b); return r; }
matt@hessen