@Override
    public boolean equals(Object matrix) {
        if (!(matrix instanceof Matrix)) {
            return false;
        }

        if (((Matrix) matrix).getRows() != rows || ((Matrix) matrix).getColumns() != columns) {
            return false;
        }

        for (int x = 0; x < rows; x++) {
            for (int y = 0; y < columns; y++) {
                if (((Matrix) matrix).getElement(x, y) != elements[x][y]) {
                    return false;
                }
            }
        }
        return true;
    }