MathGroup Archive 1996

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

Search the Archive

Re: multiplying sets

  • Subject: [mg2969] Re: multiplying sets
  • From: Jorma.Virtamo at (Jorma Virtamo)
  • Date: 17 Jan 1996 05:11:10 -0600
  • Approved:
  • Distribution: local
  • Newsgroups: wri.mathgroup
  • Organization: Wolfram Research, Inc.
  • Sender: mj at

Tommi Salminen <titosa at> wrote:
> I have a problem as follows:
> I have a set, for instance: s={{a,b,c},{d,e},{f,g}}, and I would like
> to get a set t, that includes all possible multiplications between
> those three sets {a,b,c}, {d,e} and {f,g}. 
> Of course, one way would be :
>      Outer[Times,{a,b,c},{d,e},{f,g}], but I'd like find some kind
> of a more reasonable way to do it, because it would be just a part
> of a larger program. Anyway, it doesn't have to be some elegant way;
> if it works, it's OK.

I don't know what is wrong with the Outer. If you define


then Outer yields:

   Outer[Times,s1,s2,s3] // Flatten
  {a d f, a d g, a e f, a e g, b d f, b d g, 
   b e f, b e g, c d f, c d g, c  e f, c e g}

Another way to write the same is for instance:

   s3#& /@ s2#& /@ s1 // Flatten

with an identical result:

  {a d f, a d g, a e f, a e g, b d f, b d g, 
   b e f, b e g, c d f, c d g, c e f, c e g}

Whether this is more reasonable way to write the expression
is rather a matter of taste. Personally, I would prefer Outer, 
which also seems to be faster. Maybe you want something faster
than Outer?

-- Jorma Virtamo

Jorma Virtamo                      VTT Information Technology
phone: +358 0 456 5612             Telecommunications
fax:   +358 0 455 0115             P.O. Box 1202  
email: jorma.virtamo at        FIN-02044 VTT                        
web:      Finland

  • Prev by Date: Re: multiplying sets
  • Next by Date: Re: HELP! algebraic math problem
  • Previous by thread: Re: multiplying sets
  • Next by thread: Triangulation Problem