/// Swaps columns `$c1` and `$c2` from `$matrix`
/// @group swap
/// @param {Matrix} $matrix - matrix
/// @param {Number} $c1 - index of column 1
/// @param {Number} $c2 - index of column 2
/// @return {Matrix}
/// @require {function} rows
/// @require {function} columns
/// @require {function} get-entry
/// @require {function} set-entry
@function swap-columns($matrix, $c1, $c2) {
  @if type-of($c1) != number or type-of($c2) != number {
    @warn "Invalid column index.";
    @return false;
  }

  @if abs($c1) > columns($matrix) or abs($c2) > columns($matrix) {
    @warn "Out of bounds column index.";
    @return false;
  }

  @for $i from 1 through rows($matrix) {
    $tmp: get-entry($matrix, ($i $c1));
    $matrix: set-entry($matrix, ($i $c1), get-entry($matrix, ($i $c2)));
    $matrix: set-entry($matrix, ($i $c2), $tmp);
  }

  @return $matrix;
}
