Re: "unChopping" oddity

*To*: mathgroup at christensen.cybernetics.net*Subject*: [mg723] Re: "unChopping" oddity*From*: rubin at msu.edu (Paul A. Rubin)*Date*: 11 Apr 1995 20:18:25 GMT*Organization*: Michigan State University

In article <3md0p3$830 at news0.cybernetics.net>, Preston Nichols <pdn at godel.math.cmu.edu> wrote: ->Dear mathgroup: -> ->I have encountered some strange behavior (session below) in which ->Graphics3D seems to introduce 15 "new" significant digits in some ->coordinates. The session below is from version 2.2 for SPARC, but I ->also got exactly the same behavior from version 2.0 for NeXT. -> ->Can anyone else reproduce this? What do you make of it? -> ->Preston Nichols ->Department of Mathematics ->Carnegie Mellon University -> ->---------------------------------------------- ->unix18 1 $ math ->Mathematica 2.2 for SPARC ->Copyright 1988-93 Wolfram Research, Inc. -> -- Terminal graphics initialized -- -> ->In[1]:= myline = Line[{{0, 0, 0}, {1, 0, 0}}]; -> ->In[2]:= divide[{a_,b_}] := Table[(1-t) a + t b, {t,0,1,0.2}] -> ->General::spell1: -> Possible spelling error: new symbol name "divide" -> is similar to existing symbol "Divide". -> ->In[3]:= Map[divide,Graphics3D[myline], {2,2}]//InputForm -> ->Out[3]//InputForm= -> Graphics3D[Line[{{0, 0, 0}, {0.2, 0, 0}, {0.4, 0, 0}, -> {0.6000000000000001, 0, 0}, {0.8, 0, 0}, {1., 0, 0}}]] -> ->In[4]:= Map[divide,myline] -> ->Out[4]= Line[{{0, 0, 0}, {0.2, 0, 0}, {0.4, 0, 0}, {0.6, 0, 0}, ->{0.8, 0, 0}, {1., 0, 0}}] -> ->In[5]:= %//Graphics3D//InputForm -> ->Out[5]//InputForm= -> Graphics3D[Line[{{0, 0, 0}, {0.2, 0, 0}, {0.4, 0, 0}, -> {0.6000000000000001, 0, 0}, {0.8, 0, 0}, {1., 0, 0}}]] It's the same in kernel 2.2.2 under Windoze, but I don't think it has anything to do with Graphics3D. I think it's just normal rounding. Your argument t is being treated as a machine precision number. My guess is that Mma handles the iterator in the Table by repeatedly adding .2 to it, and after three additions the accumulated rounding error is enough to make the last bit wobble: In[1]:= Table[t, {t,0,1,.2}] // FullForm Out[1]= List[0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.] Paul ************************************************************************** * Paul A. Rubin Phone: (517) 432-3509 * * Department of Management Fax: (517) 432-1111 * * Eli Broad Graduate School of Management Net: RUBIN at MSU.EDU * * Michigan State University * * East Lansing, MI 48824-1122 (USA) * ************************************************************************** Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. J. W. v. GOETHE