Dividing factorials on 15C CE
|
01-10-2024, 08:38 PM
Post: #21
|
|||
|
|||
RE: Dividing factorials on 15C CE
(01-10-2024 07:54 PM)Thomas Klemm Wrote: I just hope we clarified that David was not talking about the division 49/2 but about (1 * 50/1 * 49)/2. I understood it in that way too, but I already knew this property of the algorithm. Now about my previous comment: (01-09-2024 04:38 PM)J-F Garnier Wrote:(01-09-2024 01:23 AM)Thomas Klemm Wrote: P(50, 45) = 1 * 50 * 49 * 48 * 47 * 46 Nobody responded to my remark, and I'm not sure Thomas fully understood it. My point is that Perm(50, 45) is NOT 1 * 50 * 49 * 48 * 47 * 46 . This is Perm(50,5). And so the Python perm code Thomas posted is wrong. Also, the Python comb code is very inefficient to compute simple values such as comb(50,5), that the code computes as: comb(50,5) = 1 * 50/1 * 49/2 * 48/3 * 47/4 * 46/5 * 45/6 * 44/7 * 43/8 * ... * 7/44 * 6/45 This kills the claim of avoiding rounding errors. Instead it should just be: comb(50,5) = 1 * 50/1 * 49/2 * 48/3 * 47/4 * 46/5 J-F |
|||
01-10-2024, 08:44 PM
Post: #22
|
|||
|
|||
RE: Dividing factorials on 15C CE | |||
01-10-2024, 08:59 PM
Post: #23
|
|||
|
|||
RE: Dividing factorials on 15C CE
(01-10-2024 08:38 PM)J-F Garnier Wrote: Nobody responded to my remark, and I'm not sure Thomas fully understood it. Quote:‘When I use a word,’ Humpty Dumpty said in rather a scornful tone, ‘it means just what I choose it to mean–neither more nor less.’ (01-10-2024 08:38 PM)J-F Garnier Wrote: Also, the Python comb code is very inefficient … That's true. Feel free to post an improved version. But the point of these two functions was to illustrate how Phil's calculations can be done without rounding errors. |
|||
01-11-2024, 07:13 PM
Post: #24
|
|||
|
|||
RE: Dividing factorials on 15C CE
(01-10-2024 07:54 PM)Thomas Klemm Wrote: I just hope we clarified that David was not talking about the division 49/2 but about (1 * 50/1 * 49)/2.Exactly right. When we evaluate 1 * 50 / 1 * 49 / 2 * 48 / 3 * 47 / 4 * 46 / 5 * 45 / 6 * 44 / 7 * 43 / 8 * ... * 7 / 44 * 6 / 45 from left to right, each division results in an integer. |
|||
01-11-2024, 10:04 PM
Post: #25
|
|||
|
|||
RE: Dividing factorials on 15C CE
(01-11-2024 07:13 PM)David Hayden Wrote:(01-10-2024 07:54 PM)Thomas Klemm Wrote: I just hope we clarified that David was not talking about the division 49/2 but about (1 * 50/1 * 49)/2.Exactly right. When we evaluate 1 * 50 / 1 * 49 / 2 * 48 / 3 * 47 / 4 * 46 / 5 * 45 / 6 * 44 / 7 * 43 / 8 * ... * 7 / 44 * 6 / 45 from left to right, each division results in an integer. Yes, it's an integer, but not necessary free of rounding errors if the intermediate results exceed the digit capacity of the machine. This could happen here on a 15c for instance (if it was using this implementation for comb, that it does not) since the intermediate values exceed 1e14 for a final result of about 2118760. J-F |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 4 Guest(s)