Skip to main content
20 events
when toggle format what by license comment
May 23, 2017 at 12:35 history edited CommunityBot
replaced http://stackoverflow.com/ with https://stackoverflow.com/
Apr 11, 2015 at 15:30 history edited Reb.Cabin CC BY-SA 3.0
micro-English corrections
Mar 22, 2013 at 0:08 comment added Leonid Shifrin @Mr.Wizard I think I tried it and something did not work, but I don't remember for sure. Besides, conceptually, I like the composition idea more, since it clearly states that what I pass is a composition of a previous and current functions.
Mar 21, 2013 at 23:25 comment added Mr.Wizard Leonid, is there any reason for using Composition (or composition) in the first place, rather than a pure function? The latter, being more terse, would be my first inclination, and I wouldn't expect it to be slower. I haven't tested it yet however.
Mar 21, 2013 at 15:01 comment added Leonid Shifrin @Mr.Wizard *relevant, sorry.
Mar 21, 2013 at 14:54 comment added Leonid Shifrin @Mr.Wizard Actually, when comparing the same functions ( addition in both cases), yours is about twice faster (a factor of 2 that I predicted:-)), but for multiplication they are asymptotically the same. Since it was fast to do, I added a relevent section with a fix, explanations, and a benchmark.
Mar 21, 2013 at 14:52 history edited Leonid Shifrin CC BY-SA 3.0
Added a section on speed improvements
Mar 21, 2013 at 14:38 comment added Leonid Shifrin @Mr.Wizard Ok, here is a fix. The culprit it Composition with its Flat attribute - this is what leads to a quadratic complexity. Use instead ClearAll[composition]; SetAttributes[composition, HoldAllComplete]; composition[f_, g_][x_] := f[g[x]], and all seems sweet and dandy. In fact, for n = 100000, my new version beats yours 4 times, in my benchmarks.
Mar 21, 2013 at 14:28 comment added Leonid Shifrin @Mr.Wizard Alas it looks like I completely exhausted my time quota for SE today, so I can't dive into it right now (although I'd really like to). I don't yet know why the complexity is so bad, although I have some thoughts. Will get back to this as soon as I can. But, to rehabilitate a bit, I still think that the main value of the answer is in the concept. When you exceed a critical $RecursionLimit, the kernel will likely crash. With my method, this won't happen. Of course, I agree that performance should be improved for it to be practical, judging from your benchmarks.
Mar 21, 2013 at 14:21 comment added Mr.Wizard Leonid, I added a harsh critique of your method to my answer. You acknowledge "a constant factor of 2 to 10 slower" but I'm afraid the situation is much worse than that. I look forward to your rebuttal. :-)
Mar 21, 2013 at 2:49 history edited Leonid Shifrin CC BY-SA 3.0
Added a link to trampolines
Mar 21, 2013 at 2:40 comment added Leonid Shifrin @rm-rf If I didn't, I wouldn't be worthy of an attempt, would I?
Mar 21, 2013 at 2:39 comment added rm -rf @LeonidShifrin Drat! You caught on to my plan to sow seed of tranquility in your head before sneaking up from behind... ;)
Mar 21, 2013 at 2:34 comment added Leonid Shifrin @rm-rf The biggest threat is to start thinking "it was never in threat" :-)
Mar 21, 2013 at 2:30 comment added RunnyKine @rm-rf, I know, not even close, just teasing :)
Mar 21, 2013 at 2:29 comment added rm -rf @RunnyKine It was never in threat :)
Mar 21, 2013 at 2:29 comment added Leonid Shifrin @RunnyKine Ok, great, I can now go to sleep and have nice dreams of conquering other lands, without a danger of being strangled in my sleep :-)
Mar 21, 2013 at 2:27 comment added RunnyKine It's safe to say the throne still belongs to you +1, great stuff. But where's the Preamble? :-)
Mar 21, 2013 at 1:56 history edited Leonid Shifrin CC BY-SA 3.0
added 64 characters in body
Mar 21, 2013 at 1:48 history answered Leonid Shifrin CC BY-SA 3.0