Defining N for a new entity

*To*: mathgroup at smc.vnet.net*Subject*: [mg66719] Defining N for a new entity*From*: Giuseppe Bilotta <bilotta78 at hotpop.com>*Date*: Sat, 27 May 2006 21:03:28 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Hello, I'm try to build a Mathematica toolbox to work with Stolfi's affine expression. Until now, I've had no problems: I use AffineExpression[c, {{i, xi}, ...}] (where c and xi are Reals and the i are Integers) to represent c + \sum xi e_i and I can define addition, multiplication, quotient and everything else without any problems. Recently, I've begun using these entities in more complex expression, and in particular as elements of matrices to be fed to LinearSolve. In the specific context, LinearSolve seems to apply N to all of its arguments, but as a side-effect of this the indices (i in the expressions above) are turned into Reals, so that for example AffineExpression[ .5, {{1, .2},{2, .1}}] comes out as AffineExpression[ .5, {{1., .2}, {2., .1}}] This has aesthetical and functional disadvantages (my codes also exploits the fact that the indices are integer), so I have to apply Rationalize or some other such function to re-convert the indices into Integers. So I was looking for a way to tell Mathematica that applying N to an AffineExpression should only actually apply it to c and xi, something like N[AffineExpression[c_, dev_]] := AffineExpression[N[c], MapAt[N,#,{2}]&/@ dev] but if I actually do this and then call AffineExpression[1, {{1, 1}}] N[%] the Mathematica kernel (5.2.0.0) dies without any message. Does anybody have an idea of what could the reason be? And what could I do as a workaround? -- Giuseppe "Oblomov" Bilotta Axiom I of the Giuseppe Bilotta theory of IT: Anything is better than MS

**Follow-Ups**:**Re: Defining N for a new entity***From:*"Carl K. Woll" <carlw@wolfram.com>