Problem with all lowest / all highest accuracy
From Sara: Problem with the CG example. When run with 10 digits accuracy we got
DD algorithms returns : {0: 'float', '1': 'double', '2': 'double', '3': 'double', '4': 'double', '5': 'double', '6': 'double', 1: 'float', 2: 'float', '7': 'float', 3: 'float', 4: 'float', 5: 'double', 6: 'float', 7: 'float', 8: 'float', 9: 'float', 10: 'float', 11: 'float', 12: 'float', 13: 'float', 14: 'float', 15: 'float', 16: 'float', 17: 'float', 18: 'double', 19: 'float', 20: 'float', 21: 'float', 22: 'float'}
And after the second delta-debug:
d) Delta-Debug Half/Single runAndCompile with types={0: 'half_float::half', '1': 'half_float::half', '2': 'half_float::half', '3': 'half_float::half', '4': 'half_float::half', '5': 'half_float::half', '6': 'half_float::half', 1: 'half_float::half', 2: 'half_float::half', '7': 'half_float::half', 3: 'half_float::half', 4: 'half_float::half', 5: 'half_float::half', 6: 'half_float::half', 7: 'half_float::half', 8: 'half_float::half', 9: 'half_float::half', 10: 'half_float::half', 11: 'half_float::half', 12: 'half_float::half', 13: 'half_float::half', 14: 'half_float::half', 15: 'half_float::half', 16: 'half_float::half', 17: 'half_float::half', 18: 'half_float::half', 19: 'half_float::half', 20: 'half_float::half', 21: 'half_float::half', 22: 'half_float::half'} result: 👍 The format half_float::half is enought for your expectation
Also in the output The final result contains 30x half_float::half.
It seems in the second delta-debug stage all variables are converted to half and then checked. If yes, it should not be like this. In the second stage, just the float variables should be checked for downgrading to half.
I think you should do the stage "all variables in half" after the stage "all variable in float". Doing so, if the float and then half is enough for the user's required digit, promise should be exited without doing any delta-debugging algorithm.