See #103343. We had attempted to move the file to C++ twice before but found failing tests each time. To find the code with changed behavior between C and C++, I temporarily added a header declaring all the functions and moved them one by one. The problem ended up being one function's use of `exp` which used floats instead of doubles in C++. Pull Request: https://projects.blender.org/blender/blender/pulls/112693