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.
You should probably just convert straight from XYZ to JCh, without using the UCS.