/* * call-seq: * dtable.rotate_ccw90 -> a_dtable * * Returns a copy of _dtable_ rotated 90 degrees counter-clockwise. */ VALUE dtable_rotate_ccw90(VALUE ary) { Dtable *d = Get_Dtable(ary); int i, j, num_cols = d->num_cols, num_rows = d->num_rows, last_col = num_cols - 1; VALUE new = dtable_init(dtable_alloc(cDtable), num_rows, num_cols); Dtable *d2 = Get_Dtable(new); double **src, **dest; src = d->ptr; dest = d2->ptr; for (i = 0; i < num_rows; i++) { for (j = 0; j < num_cols; j++) { dest[last_col-j][i] = src[i][j]; } } return new; }