Esempio n. 1
0
int main(void)
{

  printf("========= Starts SBM tests 1 for SBM ========= \n");
  SparseBlockStructuredMatrix M;
  FILE *file = fopen("data/SBM1.dat", "r");
  newFromFileSBM(&M, file);
  fclose(file);
  /*alloc enough memory */
  int res = test_SBMRowToDense(&M);
  if (res)
  {
    printf("========= Failed SBM tests 1 for SBM  ========= \n");
    return 1;
  }

  SBMfree(&M, NUMERICS_SBM_FREE_BLOCK);


  SparseBlockStructuredMatrix M2;
  file = fopen("data/SBM2.dat", "r");
  newFromFileSBM(&M2, file);
  fclose(file);
  res = test_SBMRowToDense(&M2);
  if (res)
  {
    printf("========= Failed SBM tests 1 for SBM  ========= \n");
    return 1;
  }
  SBMfree(&M2, NUMERICS_SBM_FREE_BLOCK);
  printf("\n========= Succeeded SBM tests 1 for SBM  ========= \n");
  return 0;

}
Esempio n. 2
0
int main(void)
{
  int res;
  printf("========= Starts SBM tests 4 for SBM ========= \n");
  SparseBlockStructuredMatrix M;
  FILE *file = fopen("data/SBM2.dat", "r");
  newFromFileSBM(&M, file);
  printSBM(&M);
  fclose(file);
  /*alloc enough memory */
  CSparseMatrix sparseMat;
  res = SBMtoSparseInitMemory(&M, &sparseMat);
  if (res)
  {
    printf("========= Failed SBM tests 4 for SBM  ========= \n");
    return 1;
  }

  res = SBMtoSparse(&M, &sparseMat);
  if (res)
  {
    printf("========= Failed SBM tests 4 for SBM  ========= \n");
    return 1;
  }
  cs_print(&sparseMat, 1);
  cs_spfree_on_stack(&sparseMat);

  int n = M.blocksize0[M.blocknumber0 - 1];
  int m = M.blocksize1[M.blocknumber1 - 1];
  double * denseMat = (double *)malloc(n * m * sizeof(double));
  SBMtoDense(&M, denseMat);
  if (res)
  {
    printf("========= Failed SBM tests 4 for SBM  ========= \n");
    return 1;
  }
  printf("[");
  for (int i = 0; i < n * m; i++)
  {
    printf("%lf ", denseMat[i]);
    if ((i + 1) % m == 0)
      printf("\n");
  }
  printf("]");
  printf("\n (warning: column-major) \n");

  free(denseMat);
  printf("NUMERICS_SBM_FREE_BLOCK value %d", NUMERICS_SBM_FREE_BLOCK);
  SBMfree(&M, NUMERICS_SBM_FREE_BLOCK);
  printf("\n========= Succed SBM tests 4 for SBM  ========= \n");
  return 0;

}
Esempio n. 3
0
int newFromFile(NumericsMatrix* const m, FILE *file)
{
    if (! m)
    {
        fprintf(stderr, "Numerics, NumericsMatrix newFromFile failed, NULL input.\n");
        exit(EXIT_FAILURE);
    }

    int storageType;
    size_t size0;
    size_t size1;
    int info = 0;
    void* data = NULL;

    CHECK_IO(fscanf(file, "%d", &storageType), &info);
    CHECK_IO(fscanf(file, SN_SIZE_T_F, &size0), &info);
    CHECK_IO(fscanf(file, SN_SIZE_T_F, &size1), &info);

    if (storageType == NM_DENSE)
    {
        CHECK_IO(fscanf(file, SN_SIZE_T_F "\t" SN_SIZE_T_F "\n", &size0, &size1), &info);

        data = malloc(size1 * size0 * sizeof(double));
        double* data_d = (double*) data;

        for (size_t i = 0; i < size1 * size0; ++i)
        {
            CHECK_IO(fscanf(file, "%le ", &(data_d[i])), &info);
        }
    }
    else if (storageType == NM_SPARSE_BLOCK)
    {
        data = newSBM();
        newFromFileSBM((SparseBlockStructuredMatrix*)data, file);
    }

    fillNumericsMatrix(m, storageType, (int)size0, (int)size1, data);

    return info;
}