void NeighListLike::test_against(struct params *input) { int nedge=0; for (int ii=0; ii<inum; ii++) { int i = ilist[ii]; nedge += numneigh[i]; } assert(nedge == input->nedge); int edge_ptr = 0; int *edge = new int[nedge*2]; double *shear = new double[nedge*3]; for (int ii=0; ii<inum; ii++) { int i = ilist[ii]; for (int jj=0; jj<numneigh[i]; jj++) { int j = firstneigh[i][jj]; edge[(edge_ptr*2) ] = i; edge[(edge_ptr*2)+1] = j; double *s = &(firstdouble[i][3*jj]); shear[(edge_ptr*3) ] = s[0]; shear[(edge_ptr*3)+1] = s[1]; shear[(edge_ptr*3)+2] = s[2]; edge_ptr++; assert(firsttouch[i][jj] == 1); } } assert(edge_ptr == nedge); for (int e=0; e<input->nedge; e++) { assert(edge[(e*2) ] == input->edge[(e*2) ]); assert(edge[(e*2)+1] == input->edge[(e*2)+1]); assert(bitwise_equal(shear[(e*3) ], input->shear[(e*3) ])); assert(bitwise_equal(shear[(e*3)+1], input->shear[(e*3)+1])); assert(bitwise_equal(shear[(e*3)+2], input->shear[(e*3)+2])); } delete[] edge; delete[] shear; }
int main(void) { { float zerof = 0.0f; float minus_zerof = -0.0f; assert(!bitwise_equalf(zerof, minus_zerof)); /* some constant folding */ assert(bitwise_equalf(minus_zerof + 20.f, 20.f)); assert(bitwise_equalf(minus_zerof + zerof, zerof)); assert(bitwise_equalf(zerof + minus_zerof, zerof)); assert(bitwise_equalf(zerof + zerof, zerof)); assert(bitwise_equalf(minus_zerof + minus_zerof, minus_zerof)); /* ensure optimisation did not mess up */ assert(!bitwise_equalf(add_zerof(minus_zerof), minus_zerof)); assert(bitwise_equalf(add_minus_zerof(minus_zerof), minus_zerof)); assert(bitwise_equalf(add_minus_zerof(zerof), zerof)); assert(bitwise_equalf(sub_zerof(minus_zerof), minus_zerof)); assert(bitwise_equalf(sub_minus_zerof(minus_zerof), zerof)); } { double zero = 0.0; double minus_zero = -0.0; assert(!bitwise_equal(zero, minus_zero)); /* some constant folding */ assert(!bitwise_equal(zero, minus_zero)); assert(bitwise_equal(minus_zero + 20., 20.)); assert(bitwise_equal(minus_zero + zero, zero)); assert(bitwise_equal(zero + minus_zero, zero)); assert(bitwise_equal(zero + zero, zero)); assert(bitwise_equal(minus_zero + minus_zero, minus_zero)); /* ensure optimisation did not mess up */ assert(!bitwise_equal(add_zero(minus_zero), minus_zero)); assert(bitwise_equal(add_minus_zero(minus_zero), minus_zero)); assert(bitwise_equal(add_minus_zero(zero), zero)); assert(bitwise_equal(sub_zero(minus_zero), minus_zero)); assert(bitwise_equal(sub_minus_zero(minus_zero), zero)); } return 0; }