these have not been heavily tested, but they should work as described in the old standards. probably broken for non-finite values...