On Thu, 18 Jul 2019 11:50:17 -0400 Sarah Goslee <sarah.gos...@gmail.com> wrote:
> The problem is in the conversion from RGB to Lab. Hmm. Assuming defaults and skipping all checks, convertColor(red.rgb, from = "sRGB", to = "Lab") amounts to the following: red.rgb <- t(col2rgb(rep('red',8), alpha = 0)/255) # let's hope this implementation detail wasn't changed in 3.6.1 white.point <- grDevices:::c2to3(grDevices:::white.points[,'D65']) (red.xyz <- grDevices::colorspaces$sRGB$toXYZ(red.rgb, white.point))[1,] # [1] 0.4168213 0.2149235 0.0195385 (red.lab <- grDevices::colorspaces$Lab$fromXYZ(red.xyz,white.point))[1,] # L a b # 53.48418 80.01027 67.38407 convertColor(red.rgb, from = "sRGB", to = "Lab")[1,] # L a b # 53.48418 80.01027 67.38407 Does the manual way result in a different output? If so, do the differences appear in red.xyz or red.lab? grDevices::colorspaces$sRGB$toXYZ is pretty simple, just a matrix product. (I hope there are no differences in as.list(environment(grDevices::colorspaces$sRGB$toXYZ))[c('dogamma','M')] on different computers - that would be strange.) grDevices::colorspaces$Lab$fromXYZ looks more complicated but is just a bunch of vectorised element-wise algebra, so tracing the intermediate results should also be possible. > And to make it even more bizarre, it fails with eight or more colors, > but works correctly with seven or fewer. This is just a wild guess, but could /usr/lib64/R/lib/libRblas.so per chance be a symlink to an OpenBLAS copy? Could any of the computers exhibiting the bizarre behaviour be equipped with an AVX-512-capable CPU? -- Best regards, Ivan ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.