Bug in Times?! - Nonzero 0*SeriesData[..]

*To*: mathgroup at smc.vnet.net*Subject*: [mg36354] Bug in Times?! - Nonzero 0*SeriesData[..]*From*: Sotirios Bonanos <sbonano at mail.ariadne-t.gr>*Date*: Mon, 2 Sep 2002 04:09:27 -0400 (EDT)*Organization*: National Technical University of Athens, Greece*Reply-to*: sbonano at mail.ariadne-t.gr*Sender*: owner-wri-mathgroup at wolfram.com

The following behavior seems to have gone undetected through several revisions of Mathematica: When a SeriesData object is multiplied by 0, Mathematica (versions 3.0, 4.02, 4.1 for Mac, and 4.0 for Windows) does not give 0. For example, 0*Series[f[x], {x,0,3}] gives O[x]^4, even though 0*x_SeriesData gives 0! Because of this, the following incorrect result is obtained in version 4: DiagonalMatrix[{a,b}].{{x^2 + O[x]^3, O[x]^2}, {O[x]^2, x^2 + O[x]^3}} gives {{O[x]^2, O[x]^2}, {O[x]^2, O[x]^2}} !! In this example version 3 gives the correct result, even though, a*(x^2 + O[x]^3) + 0*O[x]^2 gives O[x]^2 - same as in version 4. (Apparently, Dot in version 3 does not include in the sum terms multiplied by 0). The easiest way to correct this bug, without altering Times, is to use UpSet: Unprotect[SeriesData]; Times[0,x_SeriesData]^= 0; Protect[SeriesData]; (ignore the UpSet::"write" message) I wonder how many people have obtained incorrect results because of this bug... Sotirios Bonanos http://www.inp.demokritos.gr/~sbonano/SB.html