I’ve just needed to support 2 different versions of Optix and then I found this in versions 3.7.0 and 4.0.1:

#define OPTIX_VERSION 3070 /* 3.7.0 (major =  OPTIX_VERSION/1000,       
                                    minor = (OPTIX_VERSION%1000)/10,   
                                    micro =  OPTIX_VERSION%10          */

#define OPTIX_VERSION 40001  /* major =  OPTIX_VERSION/10000,        
                               minor = (OPTIX_VERSION%10000)/100,   
                               micro =  OPTIX_VERSION%100           */

Guys, you are awesome! How did you manage to change the versioning scheme itself in a new version?? )))))

That was intentional to allow two digits micro numbers.
To select the proper decoding, check the major number with the old method first and if it’s greater than 3, use the new format, else use the old format.