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]); } } }
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]); } }
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; }
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; }
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"); }
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); }