You shouldn't be using JCh_to_Jab with CAM16. The CAM16-UCS J'a'b' is a very bizarre construct compared to CIELAB, as a' and b', when converted to cartesian, output hue and ln(1 + 0.0228M)/0.0228, where M is colorfulness. It does not output hue and chroma. Likewise, J' is equal to 1.7*J/(1 + 0.007J). Thus it is almost J, but not.
You should probably just convert straight from XYZ to JCh, without using the UCS.
Thanks for correcting. About color science, something I don't know keeps coming up.
Is that why CAM16 JMh exists?
Anyway, Jab_to_JCh is just used to convert cartesian to cylindrical. Not to get actual J, C, h value.
Relative position on the CAM16-UCS's a-b plane is what I want to get. So, I think it's fine for the purpose.
(I don't want to use CIELAB because its hue prediction is bad, especially reddish blue.)
You should probably just convert straight from XYZ to JCh, without using the UCS.