Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2003
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: negative pattern matching anyone?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg43935] Re: [mg43933] Re: negative pattern matching anyone?
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Tue, 14 Oct 2003 01:07:32 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

How about this:

holdTimes[x_, y_] := If[x y != 0, With[{u = Abs[x], v = Abs[y]},
       x y HoldForm[u v]/Abs[x y]], 0]

Everything you demand seems to work:

In[2]:=
holdTimes[3,-2]

Out[2]=
-(3 2)

In[3]:=
holdTimes[-3,-2]

Out[3]=
3 2

I added:

In[4]:=
holdTimes[-2,0]

Out[4]=
0

although you can easily modify it to return

- (2 0)

if you prefer.

Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/



On Monday, October 13, 2003, at 05:04 PM, Paolo Bientinesi wrote:

> Paul Abbott wrote:
>>
>> Finally, what is the application? There are possibly other better ways
>> to approach such problems.
>>
>
> Thanks again for the responses.
>
> I have to say that I was searching for a single pattern to match
> both the cases just for elegance, not for strict need.
>
> Anyway the particular problem I'm dealing with is somewhat unnatural:
> I am working with HoldForms, say:
>
> holdTimes[x_,y_]:=HoldForm[x y]
>
> so that
>
> holdTimes[3,-2]  returns
>
> 3 (-2)
>
> but what I am particularly interested in is that the product x y is
> not evaluated, while the sign of the operation can be resolved
> (this to avoid situations like -(-(-(-(....  ).
> So I would like holdTimes to behave like
>
> holdTimes[3,-2]
> =
> -(3 2)
>
> and
>
> holdTimes[-3,-a]
> =
> 3 a
>
>
> Unfortunately the definitions
>
> holdTimes[-x_,-y_]:=holdTimes[x,y]
> holdTimes[-x_,y_]:=-holdTimes[x,y]
> holdTimes[x_,-y_]:=-holdTimes[x,y]
> holdTimes[x_,y_]:=holdForm[x y]
>
> don't work, as
>
> holdTimes[3, -4]
> =
> 3 (-4)
>
> and
>
> holdTimes[-3,-4]
> =
> -3 (-4)
>
> but notice that
>
> holdTimes[-a, -b]
> =
> a b
>
>
> --
> Paolo
>
> pauldj at cs.utexas.edu		        paolo.bientinesi at iit.cnr.it
>
>
>


  • Prev by Date: Re: Re: negative pattern matching anyone?
  • Next by Date: Re: What Happens to Garbage in Mathematica?
  • Previous by thread: Re: Re: negative pattern matching anyone?
  • Next by thread: Functions with initial values