M>должно получится меньше, чем DBL_EPSILON, M>но в double это не представимо
Прекрасно представимо. Видимо, у тебя недопонимание плавающей точки.
Внимательно посмотри на определение и значение эпсилона (порядок 10^-20)
А потом на минимальное положительное ненулевое представимое число (порядок 10^-1000)