Various indexing schemes are supported. The table below elaborates
the choices for the matrix-vector product example above, including the
two illustrated above. In all cases it is assumed
.
| function name | meaning | |
| 1 | QLA_V_eq_M_times_V(c,u,b) | c = u*b |
| 2 | QLA_V_veq_M_times_V(c,u,b,n) | c[i] = u[i]*b[i] |
| 3 | QLA_V_xeq_M_times_V(c,u,b,j,n) | c[j[i]] = u[j[i]]*b[j[i]] |
| 4 | QLA_V_eq_xM_times_V(c,u,ju,b,n) | c[i] = u[ju[i]]*b[i] |
| 5 | QLA_V_eq_M_times_xV(c,u,b,jb,n) | c[i] = u[i]*b[jb[i]] |
| 6 | QLA_xV_eq_M_times_V(c,jc,u,b,n) | c[jc[i]] = u[i]*b[i] |
| 7 | QLA_V_eq_xM_times_xV(c,u,ju,b,jb,n) | c[i] = u[ju[i]]*b[jb[i]] |
| 8 | QLA_xV_eq_M_times_xV(c,jc,u,b,jb,n) | c[jc[i]] = u[i]*b[jb[i]] |
| 9 | QLA_xV_eq_xM_times_V(c,jc,u,b,jb,n) | c[jc[i]] = u[ju[i]]*b[i] |
| 10 | QLA_xV_eq_xM_times_xV(c,jc,u,ju,b,jb,n) | c[jc[i]] = u[ju[i]]*b[jb[i]] |
| 11 | QLA_V_veq_pM_times_V(c,u,b,n) | c[i] = (*u[i])*b[i] |
| 12 | QLA_V_veq_M_times_pV(c,u,b,n) | c[i] = u[i]*(*b[i]) |
| 13 | QLA_V_veq_pM_times_pV(c,u,b,n) | c[i] = (*u[i])*(*b[i]) |
| 14 | QLA_V_xeq_pM_times_V(c,u,b,j,n) | c[j[i]] = (*u[j[i]])*b[j[i]] |
| 15 | QLA_V_xeq_M_times_pV(c,u,b,j,n) | c[j[i]] = (*u[i])*(*b[j[i]]) |
| 16 | QLA_V_xeq_pM_times_pV(c,u,b,j,n) | c[j[i]] = (*u[j[i]])*(*b[j[i]]) |
Gang-indexing variant 3 applies the same indexing scheme to all three arguments simultaneously. The convention is to place an ``x'' before the assignment operator. The indexing variants 4-10 apply an index to each of the operands separately in various combinations. In this case the convention places an ``x'' before the type abbreviation for the variable that is indexed. Variants 11-16 replace the array argument with an array of pointers. The symbol ``p'' before the type abbreviation identifies the affected variable.
James Osborn 2006-06-25