module Sass::Value::FuzzyMath

def _clamp_like_css(number, lower_bound, upper_bound)

def _clamp_like_css(number, lower_bound, upper_bound)
  number.to_f.nan? ? lower_bound : number.clamp(lower_bound, upper_bound)
end

def _hash(number)

def _hash(number)
  number&.finite? ? (number * INVERSE_EPSILON).round : number
end

def assert_between(number, min, max, name)

def assert_between(number, min, max, name)
  result = between(number, min, max)
  return result unless result.nil?
  raise Sass::ScriptError.new("#{number} must be between #{min} and #{max}.", name)
end

def between(number, min, max)

def between(number, min, max)
  return min if equals(number, min)
  return max if equals(number, max)
  return number if number > min && number < max
  nil
end

def equals(number1, number2)

def equals(number1, number2)
  return true if number1 == number2
  (number1 - number2).abs <= EPSILON &&
    (number1 * INVERSE_EPSILON).round ==
      (number2 * INVERSE_EPSILON).round
end

def equals_nilable(number1, number2)

def equals_nilable(number1, number2)
  return true if number1 == number2
  return false if number1.nil? || number2.nil?
  (number1 - number2).abs <= EPSILON &&
    (number1 * INVERSE_EPSILON).round ==
      (number2 * INVERSE_EPSILON).round
end

def greater_than(number1, number2)

def greater_than(number1, number2)
  number1 > number2 && !equals(number1, number2)
end

def greater_than_or_equals(number1, number2)

def greater_than_or_equals(number1, number2)
  number1 > number2 || equals(number1, number2)
end

def integer?(number)

def integer?(number)
  return false unless number.finite?
  equals(number, number.round)
end

def less_than(number1, number2)

def less_than(number1, number2)
  number1 < number2 && !equals(number1, number2)
end

def less_than_or_equals(number1, number2)

def less_than_or_equals(number1, number2)
  number1 < number2 || equals(number1, number2)
end

def to_i(number)

def to_i(number)
  integer?(number) ? number.round : nil
end