#include #include #include #include "bnc.h" #define DIM 512 void get_dproblem(DMatrix a, DVector b, DVector ans, long dim) { long int i, j, k; double tmp; /* Frank Matrix */ for(i = 0; i < dim; i++) { for(j = 0; j < dim; j++) { if(i < j) set_dmatrix_ij(a, i, j, (double)(dim - j)); else set_dmatrix_ij(a, i, j, (double)(dim - i)); } } /* Answer */ for(i = 0; i < dim; i++) set_dvector_i(ans, i, (double)i); /* Make constant vector */ mul_dmatrix_dvec(b, a, ans); } int main(int argc, char *argv[]) { DMatrix da; DVector db, dx, dans; double start, dtime; long int itimes_d; /* initialize */ da = init_dmatrix(DIM, DIM); db = init_dvector(DIM); dx = init_dvector(DIM); dans = init_dvector(DIM); /* get problem */ get_dproblem(da, db, dans, DIM); /* run DCG */ start = get_secv(); itimes_d = DCG(dx, da, db, 1.0e-13, 1.0e-99, DIM * 5); dtime = get_secv() - start; print_dvector(dx); /* end */ free_dmatrix(da); free_dvector(db); free_dvector(dx); free_dvector(dans); /* print itimes */ printf("double : %ld(%f)\n", itimes_d, dtime); }