// From copies a T from a generic.T implementation. func From(other generic.T) T { r := Ident cols := other.Cols() rows := other.Rows() if !((cols == 2 && rows == 2) || (cols == 3 && rows == 3) || (cols == 4 && rows == 4)) { panic("Unsupported type") } for col := 0; col < cols; col++ { for row := 0; row < rows; row++ { r[col][row] = other.Get(col, row) } } return r }
// From copies a T from a generic.T implementation. func From(other generic.T) T { switch other.Size() { case 2: return T{other.Get(0, 0), other.Get(0, 1), 0} case 3, 4: return T{other.Get(0, 0), other.Get(0, 1), other.Get(0, 2)} default: panic("Unsupported type") } }