int main() { int ret; const int m = 10; const int n = 3; double *x, *tx, *truth; printf("# Transpose: "); x = gen_runif2(m*n); truth = zeromat2(m*n); xpose_naive(m, n, x, truth); tx = zeromat2(m*n); xpose(m, n, x, tx); ret = all_equal(true, n, m, tx, truth); free(x); free(tx); free(truth); return ret; }
int main() { std::cout << (all_equal(4, 4, 4)) << '\n'; // std::cout << (increasing % 1/10/100) << '\n'; // std::cout << (decreasing % 1/-10/-100) << '\n'; // std::cout << (strictly_increasing % 1/1/2/3/60) << '\n'; // std::cout << (strictly_decreasing % 3/2/1) << '\n'; }
int main() { int ret; const int n = 10; double *x, *sym, *truth; printf("# Symmetrize: "); x = gen_boring2(n*n); truth = cpalloc2(n*n, x); symmetrize_naive(n, truth); sym = cpalloc2(n*n, x); symmetrize(n, sym); ret = all_equal(true, n, n, sym, truth); free(x); free(sym); free(truth); return ret; }
bool all_equal(Head &&head, Head2 &&head2, Tail&&... tail) { return head == head2 && all_equal(std::forward<Tail>(tail)...); }
inline bool all_from() const { return all_equal(sort_by_side::dir_from); }
inline bool all_to() const { return all_equal(sort_by_side::dir_to); }