Exemple #1
0
static void tv_iter(int nx, const PetscScalar *x, PetscScalar *y){
  // deg: degree of polynomials
  // nx: some context variable from Petsc interface
  // x: vector with which matrix A is multiplied
  // y = A*x
  const int MAT_ENTRIES = pars -> get_int("MAT_ENTRIES");
  //hard coded atm, move to parameters later
  const int DEG = pars -> get_int("DEG");
  //const int DEG = 8;
  std::vector<PetscScalar> Told(MAT_ENTRIES); 
  std::vector<PetscScalar> Tcur(MAT_ENTRIES); 
  std::vector<PetscScalar> Tnew(MAT_ENTRIES);
  std::vector<PetscScalar> tmp(MAT_ENTRIES);
  // initialize chebyshev polynomials
  tv2( nx, &x[0], &Tcur[0]);
  equal_arrays(&x[0], &Told[0]);
  // if deg is 1 or less return initialised values
  if (DEG >=1){
  // else iteratively calculate chebyshev polynomials up to deg
  // T_n(B) = 2*B(T_{n-1}(B))-T_{n-2}(B)
    for (int n = 2; n <= DEG; n++){
      // store B(Tcur(Bx)) in tmp1
      tv2(nx, &Tcur[0], &tmp[0]);
      // scale tmp1
      scale_array(2., &tmp[0], &tmp[0]);
      //calculate new polynomial
      subtract_arrays(&Told[0], &tmp[0], &y[0]);
      // overwrite new variables
      equal_arrays(&Tcur[0], &Told[0]);
      equal_arrays(&y[0], &Tcur[0]);
    }
  }
}
Exemple #2
0
ATF_TC_BODY(equal_arrays, tc)
{
    {
        const char *const exp[] = { NULL };
        char *actual[] = { NULL };

        ATF_CHECK(equal_arrays(exp, actual));
    }

    {
        const char *const exp[] = { NULL };
        char *actual[2] = { strdup("foo"), NULL };

        ATF_CHECK(!equal_arrays(exp, actual));
        free(actual[0]);
    }

    {
        const char *const exp[] = { "foo", NULL };
        char *actual[] = { NULL };

        ATF_CHECK(!equal_arrays(exp, actual));
    }

    {
        const char *const exp[] = { "foo", NULL };
        char *actual[2] = { strdup("foo"), NULL };

        ATF_CHECK(equal_arrays(exp, actual));
        free(actual[0]);
    }
}
Exemple #3
0
bool TestBoard::test_create_array(char component, int index, char direction, int* expected_array)
{
    bool success = false;
    BoardPosition** pos_array = new BoardPosition*[m_size];
    m_test_board->create_array(component, index, direction, pos_array, m_size);
    success = equal_arrays(pos_array, expected_array, m_size);
    delete []pos_array;
    return success;
}
Exemple #4
0
bool TestBoard::test_tilt_array(BoardPosition** initial_array, int* expected_array, int size, bool expected_state)
{
    bool state_changed = false;
    m_test_board->tilt_array(initial_array, size, state_changed);
    if ((equal_arrays(initial_array, expected_array, size) == true) &&
            (state_changed == expected_state))
    {
        return true;
    }
    return false;
}
Exemple #5
0
static
void
check_equal_array(const char *const *exp_array, char **actual_array)
{
    {
        const char *const *exp_ptr;
        printf("Expected arguments:");
        for (exp_ptr = exp_array; *exp_ptr != NULL; exp_ptr++)
            printf(" '%s'", *exp_ptr);
        printf("\n");
    }

    {
        char **actual_ptr;
        printf("Returned arguments:");
        for (actual_ptr = actual_array; *actual_ptr != NULL; actual_ptr++)
            printf(" '%s'", *actual_ptr);
        printf("\n");
    }

    if (!equal_arrays(exp_array, actual_array))
        atf_tc_fail_nonfatal("The constructed argv differs from the "
                             "expected values");
}
Exemple #6
0
static bool rng_record_match(rng_record_t *r, term_t *a, uint32_t n) {
  return r->num_constants == n && equal_arrays(r->cst, a, n);
}