From: SourceForge.net <no...@so...> - 2004-04-03 19:03:15
|
Bugs item #891338, was opened at 2004-02-05 22:10 Message generated for change (Comment added) made by jsurfer You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105083&aid=891338&group_id=5083 Category: None Group: misc Status: Open Resolution: None Priority: 5 Submitted By: Preston Pfarner (pfarner) Assigned to: Nobody/Anonymous (nobody) Summary: Stack Overflow from Infinite Recursion Initial Comment: I noticed that the attached simple test program fails with a stack overflow due to infinite recursion in the second EV() call. Output: Before D(Pow(x,1/2),x) After D(Pow(x,1/2),x) Before D(Pow(x,-1/2),x) Exception in thread "main" java.lang.StackOverflowError When I run it with some extra instrumentation (printing rules that are applied, from HRuleSet.testDownRules()), I see that it appears to be applying the rule {x_IsNumber}:=Check(SignumCmp(x)<0,I*Pi-{-x}) to List(1/2), then List(-1/2), and then repeating. I'll keep looking into this, to nail down exactly what's happening. Perhaps some rules don't interact well, or a rule should be added. This might also be related to the fact that the function isn't defined for x<0, or that the second function has a pole (goes to infinity) at x=0. However, even if the function behaves poorly, we'll want it to report that problem cleanly, so this is a bug. As I said, I'm researching this one, but I'm also reporting it as a matter of proper practice. ---------------------------------------------------------------------- Comment By: Klaus Hartlage (jsurfer) Date: 2004-04-03 21:03 Message: Logged In: YES user_id=810238 I'm still interested in developing hartmath. The project IMHO needs a rewrite from ground up to be used in multi-threaded web-environments. I did a first (very imcomplete) rewrite which is integrated in a mathml blog/wiki: http://www.hartlage.de:8080/hmath/space/math/calculus/Derivative See CVS in Project: http://www.sourceforge.net/projects/hmath ---------------------------------------------------------------------- Comment By: Preston Pfarner (pfarner) Date: 2004-04-03 19:38 Message: Logged In: YES user_id=945156 Yes, I am working on HartMath some, but I've been idle for the last couple of weeks because I was on vacation. It's possible that it makes more sense to put effort into hmath (hmath.org), a possible successor. *shrug* On this bug, I've found that at some point in the process of evaluating a derivative (even D(x,x)) the rules for Sin() appear to be put into List(). I don't know how this is happening, but it's definitely not good. This is obviously wrong, and I haven't tracked it down yet. For another example, if I evaluate List(Multiply(1/4,Pi)) on its own, I get no simplification. If I do it after a derivative has been evaluated, I get List(Multiply(1/4,Pi))=1. Naturally, this would be true if the "List" were "Sin", but somewhere in there the wrong rules are being loaded. I have some more introspection to add, and then it'll probably become clear (and be fixed). While the dynamic on-the-fly loading of capabilities is nice for latency (start-up speed) reasons, it can defer bugs like this until some condition occurs, making them harder to find. ---------------------------------------------------------------------- Comment By: Scott Lett (slett) Date: 2004-04-03 19:26 Message: Logged In: YES user_id=49890 Preston, does this mean that you're working on Hartmath now? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105083&aid=891338&group_id=5083 |