Advertisement
Guest User

Untitled

a guest
Apr 15th, 2020
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. double* my_solver(int N, double* A, double *B) {
  2.     printf("NEOPT SOLVER\n");
  3.     register int i, j, k = 0;
  4.  
  5.  
  6.     register double* Apatrat = (double*)calloc(N *N, sizeof(double));
  7.     //if(Apatrat == NULL) return NULL;
  8.  
  9.     register double* C = (double*)calloc(N *N, sizeof(double));
  10.     //  if(C == NULL) return NULL;
  11.  
  12.     //int dim = N * N;
  13.  
  14.     double* ap = Apatrat;
  15.     double* a = A;
  16.     double* au = A;
  17.     int dim = N * N;
  18.     register int t = 0;
  19.  
  20.     for (t = 0, i = 0; i < dim; i += N, ++t) {
  21.         for (j = t; j < N; j++) {
  22.             a = A + i + t;
  23.             au = A + i + j;
  24.             for (k = t; k <= j; k++) {
  25.                 *ap += (*a) * (*au);
  26.                 ++a;
  27.                 au += N;
  28.             }
  29.             ++ap;
  30.         }
  31.         ap += t + 1;
  32.     }
  33.  
  34.     // calculez B x A
  35.     double* c = C;
  36.     double* b = B;
  37.     for (i = 0; i < dim; i += N) {
  38.         for (j = 0; j < N; j++) {
  39.             b = B + i + j;
  40.             a = A + j * N + j;
  41.             for (k = j; k < N; k++) {
  42.                 *c += (*b) * (*a);
  43.                 ++b;
  44.                 ++a;
  45.             }
  46.             ++c;
  47.         }
  48.     }
  49.  
  50.     c = C;
  51.     for (t = 0, i = 0; i < N; i++, t += N) {
  52.         for (j = 0; j < N; j++) {
  53.             ap = Apatrat + t + i;
  54.             b = B + t + j;
  55.             for (k = i; k < N; k++) {
  56.                 *c += (*ap) * (*b);
  57.                 ++ap;
  58.                 b += N;
  59.             }
  60.             ++c;
  61.         }
  62.     }
  63.  
  64.     return C;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement