# File lib/color/hsl.rb, line 93
  def to_rgb(ignored = nil)
    return Color::RGB.new if Color.near_zero_or_less?(@l)
    return Color::RGB.new(0xff, 0xff, 0xff) if Color.near_one_or_more?(@l)
    return Color::RGB.from_fraction(@l, @l, @l) if Color.near_zero?(@s)

    # Is the value less than 0.5?
    if Color.near_zero_or_less?(@l - 0.5)
      tmp2 = @l * (1.0 + @s.to_f)
    else
      tmp2 = @l + @s - (@l * @s.to_f)
    end
    tmp1 = 2.0 * @l - tmp2

    tmp3  = [ @h + (1.0 / 3.0), @h, @h - (1.0 / 3.0) ]

    rgb = tmp3.map { |hue|
      hue += 1.0 if Color.near_zero_or_less?(hue)
      hue -= 1.0 if Color.near_one_or_more?(hue)

      if Color.near_zero_or_less?((6.0 * hue) - 1.0)
        tmp1 + ((tmp2 - tmp1) * hue * 6.0)
      elsif Color.near_zero_or_less?((2.0 * hue) - 1.0)
        tmp2
      elsif Color.near_zero_or_less?((3.0 * hue) - 2.0)
        tmp1 + (tmp2 - tmp1) * ((2 / 3.0) - hue) * 6.0
      else
        tmp1
      end
    }

     Color::RGB.from_fraction(*rgb)
  end