def set_val val, x, y
    if !x.is_a?Integer
      Error.call "Matrix::set_val : '#{x}' is not a correct line"
      return nil
    elsif !y.is_a?Integer
      Error.call "Matrix::set_val : '#{y}' is not a correct column"
      return nil
    elsif !val.is_a?Numeric
      Error.call "Matrix::set_val : '#{val}' is not a correct value"
      return nil
    elsif x < 0 or y < 0 or x >= @lines or y >= @columns
      Error.call "Matrix::set_val : The specified positions are invalids (#{x} >= #{@lines},#{y} >= #{@columns})\n#{self.to_s}"
      return nil
    else
      @v[x][y] = val
      return @v[x][y]
    end
  end
def set_val val, x, y
    if !x.is_a?Integer
      Error.call "Matrix::set_val : '#{x}' is not a correct line"
      return nil
    elsif !y.is_a?Integer
      Error.call "Matrix::set_val : '#{y}' is not a correct column"
      return nil
    elsif !val.is_a?Numeric
      Error.call "Matrix::set_val : '#{val}' is not a correct value"
      return nil
    elsif x < 0 or y < 0 or x >= @lines or y >= @columns
      Error.call "Matrix::set_val : The specified positions are invalids (#{x} >= #{@lines},#{y} >= #{@columns})\n#{self.to_s}"
      return nil
    else
      @v[x][y] = val
      return @v[x][y]
    end
  end
== Parameters:
 x,y::
   Integers. They are the coordonates of the value which will write in the matrix
 == Returns:
 a value fo the matrix