Trust me x == 0.0 is abolutely safe. This is a specfic number. The test
looks for a specfic number. Log 0.0 is an error otherwise.
log (0.0000000000000000000000.................000000000000000001) is
not an error.
FYI You can also exactly test for other small integers in FP with no
ambiguity. The limit depends on precision but 32767.0 is safe enough
for 32 bit IEEE float (and most all? others) - without needing to get
the books out.
The problem comes with decimal fractions like 0.1 - which is not
exactly represented.
So x == 0.1 will always fail.
Binary fractions like 0.125, 0.25 0.5 are also ok.
Another problem comes up when you output numbers in decimal ASCII
(printf). This rounds values to nearest decimal number.
Yet another is input (like scanf) - where decimal is rounded to binary.
But 0.0 is safe.
The example pointer check can use 0 or NULL - I dont care as long as it
works.
Personally I'd write the code - and see what asm looks like, then
diddle with it to get best code.
:-)
----------------------------------------------
Sent from my Dingleberry wired device.
_______________________________________________
AVR-libc-dev mailing list
AVR-libc-dev@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev