Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Algorithm for cancelling common factors between two lists of multiplicands

by techra (Pilgrim)
on Aug 08, 2005 at 20:32 UTC ( #482017=note: print w/replies, xml ) Need Help??


in reply to Algorithm for cancelling common factors between two lists of multiplicands

I'm curious when I see a post like this as to why? Not only why do you have this data that you want to crunch in this way but also, what do you get out of these crunched numbers? I understand that often (myself included) we're restricted by NDAs to actually talk about the application of our work, but something like this just makes me wonder what's going on and why do I never come across any problems that this becomes a question?
  • Comment on Re: Algorithm for cancelling common factors between two lists of multiplicands

Replies are listed 'Best First'.
Re^2: Algorithm for cancelling common factors between two lists of multiplicands
by BrowserUk (Pope) on Aug 08, 2005 at 20:45 UTC

    Because getting accurate answers to this equation takes a very long time unless you use arithmetic methods to reduce the problem.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
      Can you provide a sample data set (i.e., matrix) that you consider to be "large"? Also, could you give me an idea of how long it takes to compute Pcutoff without using arithmetic optimizations? (I would like to try out a quick Haskell-based implementation I whipped up on a real data set.)

        Sure. For the following 2x2:
          X Y  
        A 989 9,400 10,389
        B 43,300 2.400 45,700
          44,289 11,800 56,089

        The formula comes out to

        (44,289! 11,800!) (10,389! 45,700!) ----------------------------------- 56,089! 989! 9,400! 43,300! 11,800! 2,400!

        Which infinite precision will calculate, but it will be quite slow. And remember, in order to determine if the result is significant, there are 11,000 more of these calculations to perform and these numbers are still relatively small. And, theoretically at least, the FET can be applied to more than a 2x2 matrix.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
        "Science is about questioning the status quo. Questioning authority".
        The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.

      The original problem, framed in terms of arrays, is to reduce a fraction.

      The equation above is less general.

      The less general problem can be restated as reduce a fraction where the numerator and denominator are both the product of factorials.

      An example of the original problem is to reduce
      (9 * 8 * 8 * 8 * 6 * 4 )/(5 * 3 * 2)

      An example of the factorial problem is to reduce
      (9! * 8! * 8! * 8! * 6! * 4! )/(5! * 3! * 2!)

      Do I understand correctly, are you are interested in the factorial type of problem?

        Re-frame the factorial problem thus:

        ( 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 6 * 5 * 4 * 3 * 2 * 4 * 3 * 2 ) / ( 5 * 4 * 3 * 2 * 3 * 2 * 2)

        And it reduces to

        ( 3 * 4 * 7 * 6 * 5 * 4 * 3 * 2 * 4 * 7 * 6 * 5 * 4 * 3 * 2 * 4 * 7 * 6 * 5 * 4 * 3 * 2 * 2 * 7 * 6 * 5 * 4 * 3 * 2 * 3 * 4 * 3 * 2 * 4 * 3 * 2 ) / ( 1 )

        Which eliminates factorials completely (and, in this case the need for division). More importantly and relevantly, it reduces the magnitude of the intermediate terms. In the FET, the scale of this reduction should be considerably more significant than in this example.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
        "Science is about questioning the status quo. Questioning authority".
        The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://482017]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2019-10-15 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?