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