/* * call-seq: * dtable.rotate_cw90 -> a_dtable * * Returns a copy of _dtable_ rotated 90 degrees clockwise. */ VALUE dtable_rotate_cw90(VALUE ary) { Dtable *d = Get_Dtable(ary); int i, j, num_cols = d->num_cols, num_rows = d->num_rows, last_row = num_rows - 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[j][last_row-i] = src[i][j]; } } return new; }