Re: Mathematica not IEEE-754 compliant?
- To: mathgroup at smc.vnet.net
- Subject: [mg131944] Re: Mathematica not IEEE-754 compliant?
- From: danl at wolfram.com
- Date: Mon, 4 Nov 2013 23:17:59 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <l4n97h$b25$1@smc.vnet.net> <l4sjo2$pkv$1@smc.vnet.net> <l525s5$9gt$1@smc.vnet.net>
There is a subtlety having to do with Mathematica semantics rather than IEEE arithmetic. n/d is intertpreted, and evaluated, as n*(d^(-1)). If you go through the various computations to check on how your example will behave, I suspect it will come out fine, with the ELP ("error in last place") discrepancy between n*(d^(-1)) and n/d resulting from roundoff error in the process of taking the reciprocal and then multiplying. To get the division semantics directly in Mathematica one can instead use Divide[n,d] In this case your example will give the result you had expected. I should mention that once the actual arithmetic is performed in Mathematica, when operands are machine doubles then it is done using hardware operations that are invoked from C. If the C compiler used in the build process is IEEE compliant, then those operations will be as well. To the best of my knowledge all compilers we use to build Mathematica are IEEE compliant. Daniel Lichtblau Wolfram Research