- avoid two hot spots: 1) sparse vector getindex() and 2) (2 * fv) allocation
- solution for (1) involves direct access to nzval
- solution for (2) involves a wrapper type for k * fv