Есть процедура в которую передается два вектора b_row и b_col. Процедура возвращает матрицу matrix. Нужно ускорить работу этой процедуры.
void solve_matrix( const int n_row, const double* b_row, const int n_col, const double* b_col, ..., double* matrix)
{
int i,j;
double xip0,xip1,xin0,xin1,...;
double xjp0,xjp1,xjn0,xjn1,...;
...
for(i=0; i<n_row-1; ++i) {
xip0=*(b_row+2*i);
xip1=*(b_row+2*i+1);
xin0=*(b_row+2*i+2);
xin1=*(b_row+2*i+3);
for(j=0; j<n_col-1; ++j){
xjp0=*(b_col+2*j);
xjp1=*(b_col+2*j+1);
xjn0=*(b_col+2*j+2);
xjn1=*(b_col+2*j+3);
...
*(matrix+i*(n_col-1)+j)= ...;
}
....
}
1. пробую избавиться от вычисления адреса, но почему-то не работает:
...
xin0 = *(b_row++);
xin1 = *(b_row++);
for(i=0; i<n_row-1; ++i) {
xip0=xin0;
xip1=xin1;
xin0=*(b_row++);
xin1=*(b_row++);
...
double ptr_j = b_col;
xjn0=*(ptr_j++);
xjn1=*(ptr_j++);
for(j=0; j<n_col-1; ++j){
xjp0=xjn0;
xjp1=xjn1;
xjn0=*(ptr_j++);
xjn1=*(ptr_j++);
...
*(matrix++) = ... ;
2. как еще можно ускорить эту процедуру?