code: func rgbToXyz(r, g, b uint32) (float64, float64, float64) {
  	normalizedR := float64(r) / 0xFFFF
  	normalizedG := float64(g) / 0xFFFF
  	normalizedB := float64(b) / 0xFFFF
  
  	if normalizedR > 0.04045 {
  		normalizedR = math.Pow(((normalizedR + 0.055) / 1.055), 2.4)
  	} else {
  		normalizedR = normalizedR / 12.92
  	}
  
  	if normalizedG > 0.04045 {
  		normalizedG = math.Pow(((normalizedG + 0.055) / 1.055), 2.4)
  	} else {
  		normalizedG = normalizedG / 12.92
  	}
  
  	if normalizedB > 0.04045 {
  		normalizedB = math.Pow(((normalizedB + 0.055) / 1.055), 2.4)
  	} else {
  		normalizedB = normalizedB / 12.92
  	}
  
  	normalizedR *= 100
  	normalizedG *= 100
  	normalizedB *= 100
  
  	x := normalizedR*0.4124 + normalizedG*0.3576 + normalizedB*0.1805
  	y := normalizedR*0.2126 + normalizedG*0.7152 + normalizedB*0.0722
  	z := normalizedR*0.0193 + normalizedG*0.1192 + normalizedB*0.9505
  
  	return x, y, z
  }
docs: // http://www.easyrgb.com/index.php?X=MATH