Учитывая Float
или Double
, как я могу получить следующий, больший или меньший?Другими словами, как выполнить функции, эквивалентные C ++ std::nextafter
функциям ?Например, учитывая 0 :: Float
, я бы хотел получить 1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125e-45
(который show
s как 1.0e-45
) как следующий, больший, а учитывая 1 :: Float
, я бы хотел получить 0.999999940395355224609375
(который show
s как 0.99999994) как следующий меньший.Если возможно, я хотел бы знать, как сделать это самому в Haskell, а не просто делать это с помощью сторонней библиотеки (хотя я в порядке с чем-то в base
) или с помощью FFI для вызова этого C ++функция.