Issue 3561: Initial fix for multiplication of a number with an expression that evaluates to exceptions in the ieee system

The issue was that:
`> (2*sin(oo)).n()`
`> 0`

It should clearly give NaN instead. The problem was due to multiplication procedure which multiplies individual mantissa values. These values are zero for nan, inf, -inf. And hence, it was returning 0.

The procedure has now been modified to check whether the number is an exception or not. The rest is self explanatory.