From: Richard F. <fa...@be...> - 2016-09-18 21:30:15
|
is(equal(sin(1+2^-200),sin(1))); returns true is(equal(sin(1+2^-20),sin(1))); returns false. Someone is trying numerical evaluation, I guess. And that seems to me to be wrong. Comments? |
From: Robert D. <rob...@gm...> - 2016-09-18 21:53:45
|
On 2016-09-18, Richard Fateman <fa...@be...> wrote: > is(equal(sin(1+2^-200),sin(1))); returns true > is(equal(sin(1+2^-20),sin(1))); returns false. > > Someone is trying numerical evaluation, I guess. And that > seems to me to be wrong. is(equal(...)) calls MEQP calls MEQP-BY-CSIGN calls $CSIGN calls $SIGN calls SIGN01 calls SIGN1. I see that SIGN1 honors an undocumented (hurray!) flag named signbfloat. I don't quite understand what's going on but if you disable signbfloat, you get unknown instead of true. By the way this is all in src/compar.lisp. I guess the intent of signbfloat is that if bfloat(foo) = bfloat(bar) then equal(foo, bar). I suppose that's reasonable more or less. Before you get too worked up about it, note that it has existed since the beginning of time (i.e. circa 1990); it is present in Maxima 5.0. I suppose we should document signbfloat. I'm not opposed to other changes, feel free to suggest anything. best Robert Dodier |
From: Richard F. <fa...@be...> - 2016-09-18 22:35:03
|
On 9/18/2016 2:53 PM, Robert Dodier wrote: > On 2016-09-18, Richard Fateman <fa...@be...> wrote: > >> is(equal(sin(1+2^-200),sin(1))); returns true >> is(equal(sin(1+2^-20),sin(1))); returns false. >> >> Someone is trying numerical evaluation, I guess. And that >> seems to me to be wrong. I also did some tracing. in compar.lisp the function sign1 compares a value to 1.0e-6. This can't be right, can it? I would say that if bfloat(foo) = bfloat(bar), all one can conclude is that they agree to about fpprec decimal digits. This is different from bfloat(foo-bar) being bfloat(0). Maybe we should distinguish between "nearly equal" or (a-b)/max(a,b) < tolerance and provably rigorously equal. RJF > is(equal(...)) calls MEQP calls MEQP-BY-CSIGN calls $CSIGN calls $SIGN > calls SIGN01 calls SIGN1. I see that SIGN1 honors an undocumented > (hurray!) flag named signbfloat. I don't quite understand what's going > on but if you disable signbfloat, you get unknown instead of true. By > the way this is all in src/compar.lisp. > > I guess the intent of signbfloat is that if bfloat(foo) = bfloat(bar) > then equal(foo, bar). I suppose that's reasonable more or less. Before > you get too worked up about it, note that it has existed since the > beginning of time (i.e. circa 1990); it is present in Maxima 5.0. > > I suppose we should document signbfloat. I'm not opposed to other > changes, feel free to suggest anything. > > best > > Robert Dodier > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Robert D. <rob...@gm...> - 2016-09-19 03:08:24
|
On 2016-09-18, Richard Fateman <fa...@be...> wrote: > I also did some tracing. in compar.lisp the function sign1 compares a > value to 1.0e-6. > This can't be right, can it? Nope. > I would say that if bfloat(foo) = bfloat(bar), all one can conclude is > that they agree to about > fpprec decimal digits. This is different from bfloat(foo-bar) being > bfloat(0). > > Maybe we should distinguish between "nearly equal" or (a-b)/max(a,b) >< tolerance > and provably rigorously equal. Yeah, how about if we disable signbfloat by default and put in some documentation for it, so that if someone is interested in "nearly equal" for some reason they can use it but others won't suffer from it. Since signbfloat is downstream from the aforementioned 1e-6 I guess there may be other work to do. best Robert Dodier |
From: Robert D. <rob...@gm...> - 2016-09-28 05:52:07
|
About signbfloat, here's an example which Maxima needs signbfloat to figure out. (%i1) signbfloat : false $ (%i2) sign (log(4) - 2*log(2)); (%o2) pnz (%i3) asksign (log(4) - 2*log(2)); Is log(4) - 2 log(2) positive, negative or zero? z; (%o3) zero (%i4) signbfloat : true $ (%i5) sign (log(4) - 2*log(2)); (%o5) zero (%i6) asksign (log(4) - 2*log(2)); (%o6) zero This appears in the test suite -- there are a couple of other examples, both of which involve largeish exponents. I'll dig them out. What Maxima function or simplification flag can reduce log(4) - 2*log(2) to zero? logexpand=super doesn't have any effect. I couldn't find a share package for simplifying logarithms. best Robert Dodier |
From: David S. <d.s...@go...> - 2016-09-28 06:01:44
|
This does the job: expand_logs(expr) := block([logexpand : super], subst(log = lambda([e], log(factor(e))), expr))$ Best regards, David Scherfgen Sent from my mobile phone. / Von meinem Handy aus gesendet. Am 28.09.2016 06:53 schrieb "Robert Dodier" <rob...@gm...>: > About signbfloat, here's an example which Maxima needs signbfloat to > figure out. > > (%i1) signbfloat : false $ > (%i2) sign (log(4) - 2*log(2)); > (%o2) pnz > (%i3) asksign (log(4) - 2*log(2)); > Is log(4) - 2 log(2) positive, negative or zero? > z; > (%o3) zero > (%i4) signbfloat : true $ > (%i5) sign (log(4) - 2*log(2)); > (%o5) zero > (%i6) asksign (log(4) - 2*log(2)); > (%o6) zero > > This appears in the test suite -- there are a couple of other examples, > both of which involve largeish exponents. I'll dig them out. > > What Maxima function or simplification flag can reduce log(4) - 2*log(2) > to zero? logexpand=super doesn't have any effect. I couldn't find a > share package for simplifying logarithms. > > best > > Robert Dodier > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Robert D. <rob...@gm...> - 2016-09-29 03:12:00
|
On 2016-09-28, David Scherfgen <d.s...@go...> wrote: > expand_logs(expr) := block([logexpand : super], subst(log = lambda([e], > log(factor(e))), expr))$ Thanks for the hint. Also radcan works as pointed out elsewhere. A larger issue here is what we can call in 'sign'. As it stands, 'sign' needs signbfloat to figure out sign(log(4) - 2*log(2)). What should Maxima do if it can't resort to signbfloat? factor? radcan? both? neither? something else? best Robert Dodier |
From: Barton W. <wi...@un...> - 2016-09-29 13:45:27
|
Minor points: The function expand_logs should set opsubst to true (the default) and possibly set domain to real (also the default). Additionally, log should be quoted. Unless we change, for example assume(x > 0), sign(sqrt(x)) --> pn, I'm not sure that sign should indiscriminately call radcan. --Barton ________________________________ From: Robert Dodier <rob...@gm...> Sent: Wednesday, September 28, 2016 10:11:31 PM To: max...@li... Subject: Re: [Maxima-discuss] example which requires signbfloat, was: what does is(equal(..., ....)) mean? On 2016-09-28, David Scherfgen <d.s...@go...> wrote: > expand_logs(expr) := block([logexpand : super], subst(log = lambda([e], > log(factor(e))), expr))$ Thanks for the hint. Also radcan works as pointed out elsewhere. A larger issue here is what we can call in 'sign'. As it stands, 'sign' needs signbfloat to figure out sign(log(4) - 2*log(2)). What should Maxima do if it can't resort to signbfloat? factor? radcan? both? neither? something else? best Robert Dodier ------------------------------------------------------------------------------ _______________________________________________ Maxima-discuss mailing list Max...@li... https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Anatomist N. <ana...@gm...> - 2016-10-01 01:06:01
|
I was trying to understand how maxima compares LHS and RHS of "is(equal(LHS, RHS))". My tracing did not reveal much. Nor did I find the clues in source code on how it is making comparisons. I would appreciate any insights into this. Here is my tracing of [ is(equal( (a+b)^2, a^2+b^2+2*a*b )) ]. In the trace below, I expected maxima would either use (1) [ factor(a^2+b^2+2*a*b) ] to convert RHS to [ (a+b)^2 ] or (2) [ expand( (a+b)^2 ) ] to convert LHS to [ a^2+b^2+2*a*b ]. Instead, it seems to call 'totaldisrep', which concluded LHS and RHS are equal. How could it do that without ever calling factor() or expand()? (%i30) is(equal( (a+b)^2, a^2+b^2+2*a*b )); 1 Enter ?is [is(equal((a+b)^2,a^2+b^2+2*a*b))] 1 Enter ?subvarp [b^2+2*a*b+a^2] 1 Exit ?subvarp false 1 Enter ?subvarp [b^2+2*a*b+a^2] 1 Exit ?subvarp false 1 Enter ?ratsimp [(b+a)^2-b^2-2*a*b-a^2] 1 Enter ?totaldisrep [(b+a)^2-b^2-2*a*b-a^2] 1 Exit ?totaldisrep (b+a)^2-b^2-2*a*b-a^2 1 Enter ?ratdisrep [0] 1 Exit ?ratdisrep 0 1 Exit ?ratsimp 0 1 Enter ?rectform [0] 1 Exit ?rectform 0 1 Enter ?sign [0] 1 Exit ?sign zero 1 Exit ?is true (%o30) true On Thu, Sep 29, 2016 at 9:29 AM, Barton Willis <wi...@un...> wrote: > Minor points: The function expand_logs should set opsubst to true (the > default) and possibly set domain to real (also the default). Additionally, > log should be quoted. > > > Unless we change, for example assume(x > 0), sign(sqrt(x)) --> pn, I'm > not sure that sign should indiscriminately call radcan. > > > --Barton > ------------------------------ > *From:* Robert Dodier <rob...@gm...> > *Sent:* Wednesday, September 28, 2016 10:11:31 PM > *To:* max...@li... > *Subject:* Re: [Maxima-discuss] example which requires signbfloat, was: > what does is(equal(..., ....)) mean? > > On 2016-09-28, David Scherfgen <d.s...@go...> wrote: > > > expand_logs(expr) := block([logexpand : super], subst(log = lambda([e], > > log(factor(e))), expr))$ > > Thanks for the hint. Also radcan works as pointed out elsewhere. > > A larger issue here is what we can call in 'sign'. As it stands, 'sign' > needs signbfloat to figure out sign(log(4) - 2*log(2)). What should > Maxima do if it can't resort to signbfloat? factor? radcan? both? > neither? something else? > > best > > Robert Dodier > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > ------------------------------------------------------------ > ------------------ > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > |
From: Stavros M. (Σ. Μ. <mac...@al...> - 2016-09-19 03:34:43
|
For floor/ceiling, Barton Willis has put in some very sensible code that uses increasingly large fpprec to see if there is a consistent result. This is in principle potentially wrong, but in practice I believe safe, and anyway is much better than using some arbitrary fixed precision. I've asked him to comment. "Equal" is of course always problematic vs. "greater" or "less". Let's suppose that we can't check that the following is identically zero symbolically (which we can't currently): ex: sin(%pi/120)-(sqrt(sqrt(2)+2)*(sqrt(15)-sqrt(10-2*sqrt(5))+sqrt(3))-sqrt(2-sqrt(2))*(sqrt(5)+sqrt(30-6*sqrt(5))+1))/16; Is it reasonable to assume that: fpprintprec:5; makelist(bfloat(ex),fpprec,[10,40,160,640,2560]) => [- 1.0459b-11, 1.1479b-41, - 1.5003b-161, - 3.5994b-642, - 1.2876b-2561] is a strong enough demonstration that ex is identically zero? On Sun, Sep 18, 2016 at 11:07 PM, Robert Dodier <rob...@gm...> wrote: > On 2016-09-18, Richard Fateman <fa...@be...> wrote: > > > I also did some tracing. in compar.lisp the function sign1 compares a > > value to 1.0e-6. > > This can't be right, can it? > > Nope. > > > I would say that if bfloat(foo) = bfloat(bar), all one can conclude is > > that they agree to about > > fpprec decimal digits. This is different from bfloat(foo-bar) being > > bfloat(0). > > > > Maybe we should distinguish between "nearly equal" or (a-b)/max(a,b) > >< tolerance > > and provably rigorously equal. > > Yeah, how about if we disable signbfloat by default and put in some > documentation for it, so that if someone is interested in "nearly equal" > for some reason they can use it but others won't suffer from it. > > Since signbfloat is downstream from the aforementioned 1e-6 I guess > there may be other work to do. > > best > > Robert Dodier > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Richard F. <fa...@be...> - 2016-09-19 13:26:27
|
I seem to recall that Bill Gosper worked on this problem (probably in the context of Taylor series generation -- where knowing if a prospective leading coefficient is actually a disguised zero -- is critical). The idea was to computed a bound P on the precision used to compute an algebraic/trigonometric(?) constant A of some particular description such that if A evaluates to zero in precision P, then it is indeed zero. I believe that this was not incorporated in commercial Macsyma, but may have been put into Mathematica (by Gosper). I am cc'ing Bill.. RJF On 9/18/2016 8:34 PM, Stavros Macrakis (Σταῦρος Μακράκης) wrote: > For floor/ceiling, Barton Willis has put in some very sensible code > that uses increasingly large fpprec to see if there is a consistent > result. This is in principle potentially wrong, but in practice I > believe safe, and anyway is much better than using some arbitrary > fixed precision. I've asked him to comment. > > "Equal" is of course always problematic vs. "greater" or "less". Let's > suppose that we can't check that the following is identically zero > symbolically (which we can't currently): > > ex: > sin(%pi/120)-(sqrt(sqrt(2)+2)*(sqrt(15)-sqrt(10-2*sqrt(5))+sqrt(3))-sqrt(2-sqrt(2))*(sqrt(5)+sqrt(30-6*sqrt(5))+1))/16; > > Is it reasonable to assume that: > > fpprintprec:5; > makelist(bfloat(ex),fpprec,[10,40,160,640,2560]) => > [- 1.0459b-11, 1.1479b-41, - 1.5003b-161, - 3.5994b-642, - > 1.2876b-2561] > > is a strong enough demonstration that ex is identically zero? > > On Sun, Sep 18, 2016 at 11:07 PM, Robert Dodier > <rob...@gm... <mailto:rob...@gm...>> wrote: > > On 2016-09-18, Richard Fateman <fa...@be... > <mailto:fa...@be...>> wrote: > > > I also did some tracing. in compar.lisp the function sign1 compares a > > value to 1.0e-6. > > This can't be right, can it? > > Nope. > > > I would say that if bfloat(foo) = bfloat(bar), all one can > conclude is > > that they agree to about > > fpprec decimal digits. This is different from bfloat(foo-bar) > being > > bfloat(0). > > > > Maybe we should distinguish between "nearly equal" or > (a-b)/max(a,b) > >< tolerance > > and provably rigorously equal. > > Yeah, how about if we disable signbfloat by default and put in some > documentation for it, so that if someone is interested in "nearly > equal" > for some reason they can use it but others won't suffer from it. > > Since signbfloat is downstream from the aforementioned 1e-6 I guess > there may be other work to do. > > best > > Robert Dodier > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > <mailto:Max...@li...> > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > <https://lists.sourceforge.net/lists/listinfo/maxima-discuss> > > > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Barton W. <wi...@un...> - 2016-09-20 15:58:10
|
> Is it reasonable to assume that: > fpprintprec:5; > makelist(bfloat(ex),fpprec,[10,40,160,640,2560]) => > [- 1.0459b-11, 1.1479b-41, - 1.5003b-161, - 3.5994b-642, - 1.2876b-2561] > is a strong enough demonstration that ex is identically zero? Arguably, it's no worse than the method used by floor and ceiling. But when I'm computing with floor and ceiling, I'm always aware that these functions are non continuous and that's a warning to be circumspect of results. Possibly it's a bit more of a concern when Maxima simplifies ex/ex to 1. -Barton ________________________________ From: Stavros Macrakis (Σταῦρος Μακράκης) <mac...@al...> Sent: Sunday, September 18, 2016 10:34:36 PM To: <max...@li...> Subject: Re: [Maxima-discuss] what does is(equal(...,....)) mean? For floor/ceiling, Barton Willis has put in some very sensible code that uses increasingly large fpprec to see if there is a consistent result. This is in principle potentially wrong, but in practice I believe safe, and anyway is much better than using some arbitrary fixed precision. I've asked him to comment. "Equal" is of course always problematic vs. "greater" or "less". Let's suppose that we can't check that the following is identically zero symbolically (which we can't currently): ex: sin(%pi/120)-(sqrt(sqrt(2)+2)*(sqrt(15)-sqrt(10-2*sqrt(5))+sqrt(3))-sqrt(2-sqrt(2))*(sqrt(5)+sqrt(30-6*sqrt(5))+1))/16; Is it reasonable to assume that: fpprintprec:5; makelist(bfloat(ex),fpprec,[10,40,160,640,2560]) => [- 1.0459b-11, 1.1479b-41, - 1.5003b-161, - 3.5994b-642, - 1.2876b-2561] is a strong enough demonstration that ex is identically zero? On Sun, Sep 18, 2016 at 11:07 PM, Robert Dodier <rob...@gm...<mailto:rob...@gm...>> wrote: On 2016-09-18, Richard Fateman <fa...@be...<mailto:fa...@be...>> wrote: > I also did some tracing. in compar.lisp the function sign1 compares a > value to 1.0e-6. > This can't be right, can it? Nope. > I would say that if bfloat(foo) = bfloat(bar), all one can conclude is > that they agree to about > fpprec decimal digits. This is different from bfloat(foo-bar) being > bfloat(0). > > Maybe we should distinguish between "nearly equal" or (a-b)/max(a,b) >< tolerance > and provably rigorously equal. Yeah, how about if we disable signbfloat by default and put in some documentation for it, so that if someone is interested in "nearly equal" for some reason they can use it but others won't suffer from it. Since signbfloat is downstream from the aforementioned 1e-6 I guess there may be other work to do. best Robert Dodier ------------------------------------------------------------------------------ _______________________________________________ Maxima-discuss mailing list Max...@li...<mailto:Max...@li...> https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Stavros M. <mac...@gm...> - 2016-09-28 09:01:56
|
Radcan On Sep 28, 2016 1:52 AM, "Robert Dodier" <rob...@gm...> wrote: > About signbfloat, here's an example which Maxima needs signbfloat to > figure out. > > (%i1) signbfloat : false $ > (%i2) sign (log(4) - 2*log(2)); > (%o2) pnz > (%i3) asksign (log(4) - 2*log(2)); > Is log(4) - 2 log(2) positive, negative or zero? > z; > (%o3) zero > (%i4) signbfloat : true $ > (%i5) sign (log(4) - 2*log(2)); > (%o5) zero > (%i6) asksign (log(4) - 2*log(2)); > (%o6) zero > > This appears in the test suite -- there are a couple of other examples, > both of which involve largeish exponents. I'll dig them out. > > What Maxima function or simplification flag can reduce log(4) - 2*log(2) > to zero? logexpand=super doesn't have any effect. I couldn't find a > share package for simplifying logarithms. > > best > > Robert Dodier > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: David S. <d.s...@go...> - 2016-09-28 09:12:51
|
Radcan has some issues like leading to a crash when working on nested radicals ... Sent from my mobile phone. / Von meinem Handy aus gesendet. Am 28.09.2016 10:03 schrieb "Stavros Macrakis" <mac...@gm...>: > Radcan > > On Sep 28, 2016 1:52 AM, "Robert Dodier" <rob...@gm...> wrote: > >> About signbfloat, here's an example which Maxima needs signbfloat to >> figure out. >> >> (%i1) signbfloat : false $ >> (%i2) sign (log(4) - 2*log(2)); >> (%o2) pnz >> (%i3) asksign (log(4) - 2*log(2)); >> Is log(4) - 2 log(2) positive, negative or zero? >> z; >> (%o3) zero >> (%i4) signbfloat : true $ >> (%i5) sign (log(4) - 2*log(2)); >> (%o5) zero >> (%i6) asksign (log(4) - 2*log(2)); >> (%o6) zero >> >> This appears in the test suite -- there are a couple of other examples, >> both of which involve largeish exponents. I'll dig them out. >> >> What Maxima function or simplification flag can reduce log(4) - 2*log(2) >> to zero? logexpand=super doesn't have any effect. I couldn't find a >> share package for simplifying logarithms. >> >> best >> >> Robert Dodier >> >> >> ------------------------------------------------------------ >> ------------------ >> _______________________________________________ >> Maxima-discuss mailing list >> Max...@li... >> https://lists.sourceforge.net/lists/listinfo/maxima-discuss >> > > ------------------------------------------------------------ > ------------------ > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > |
From: Richard F. <fa...@be...> - 2016-10-01 01:20:39
|
On 9/30/16, 9:05 PM, Anatomist NoElectrons wrote: > IHow could it do that without ever calling factor() or expand()? it used ratsimp. |
From: Stavros M. <mac...@gm...> - 2016-10-01 01:21:44
|
ratsimp(a-b) On Sep 30, 2016 9:06 PM, "Anatomist NoElectrons" < ana...@gm...> wrote: I was trying to understand how maxima compares LHS and RHS of "is(equal(LHS, RHS))". My tracing did not reveal much. Nor did I find the clues in source code on how it is making comparisons. I would appreciate any insights into this. Here is my tracing of [ is(equal( (a+b)^2, a^2+b^2+2*a*b )) ]. In the trace below, I expected maxima would either use (1) [ factor(a^2+b^2+2*a*b) ] to convert RHS to [ (a+b)^2 ] or (2) [ expand( (a+b)^2 ) ] to convert LHS to [ a^2+b^2+2*a*b ]. Instead, it seems to call 'totaldisrep', which concluded LHS and RHS are equal. How could it do that without ever calling factor() or expand()? (%i30) is(equal( (a+b)^2, a^2+b^2+2*a*b )); 1 Enter ?is [is(equal((a+b)^2,a^2+b^2+2*a*b))] 1 Enter ?subvarp [b^2+2*a*b+a^2] 1 Exit ?subvarp false 1 Enter ?subvarp [b^2+2*a*b+a^2] 1 Exit ?subvarp false 1 Enter ?ratsimp [(b+a)^2-b^2-2*a*b-a^2] 1 Enter ?totaldisrep [(b+a)^2-b^2-2*a*b-a^2] 1 Exit ?totaldisrep (b+a)^2-b^2-2*a*b-a^2 1 Enter ?ratdisrep [0] 1 Exit ?ratdisrep 0 1 Exit ?ratsimp 0 1 Enter ?rectform [0] 1 Exit ?rectform 0 1 Enter ?sign [0] 1 Exit ?sign zero 1 Exit ?is true (%o30) true On Thu, Sep 29, 2016 at 9:29 AM, Barton Willis <wi...@un...> wrote: > Minor points: The function expand_logs should set opsubst to true (the > default) and possibly set domain to real (also the default). Additionally, > log should be quoted. > > > Unless we change, for example assume(x > 0), sign(sqrt(x)) --> pn, I'm > not sure that sign should indiscriminately call radcan. > > > --Barton > ------------------------------ > *From:* Robert Dodier <rob...@gm...> > *Sent:* Wednesday, September 28, 2016 10:11:31 PM > *To:* max...@li... > *Subject:* Re: [Maxima-discuss] example which requires signbfloat, was: > what does is(equal(..., ....)) mean? > > On 2016-09-28, David Scherfgen <d.s...@go...> wrote: > > > expand_logs(expr) := block([logexpand : super], subst(log = lambda([e], > > log(factor(e))), expr))$ > > Thanks for the hint. Also radcan works as pointed out elsewhere. > > A larger issue here is what we can call in 'sign'. As it stands, 'sign' > needs signbfloat to figure out sign(log(4) - 2*log(2)). What should > Maxima do if it can't resort to signbfloat? factor? radcan? both? > neither? something else? > > best > > Robert Dodier > > > ------------------------------------------------------------ > ------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > ------------------------------------------------------------ > ------------------ > > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > ------------------------------------------------------------ ------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Maxima-discuss mailing list Max...@li... https://lists.sourceforge.net/lists/listinfo/maxima-discuss |
From: Anatomist N. <ana...@gm...> - 2016-10-01 01:33:29
|
Thanks. I assume that ratsimp() duplicates the logic that would have been handled by factor() or expand() for this particular case. Would that be correct? - BR On Fri, Sep 30, 2016 at 9:20 PM, Richard Fateman <fa...@be...> wrote: > On 9/30/16, 9:05 PM, Anatomist NoElectrons wrote: > > IHow could it do that without ever calling factor() or expand()? > it used ratsimp. > > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Stavros M. <mac...@gm...> - 2016-10-01 01:35:59
|
Basically rat followed by general simplifier. On Sep 30, 2016 9:33 PM, "Anatomist NoElectrons" < ana...@gm...> wrote: > Thanks. I assume that ratsimp() duplicates the logic that would have been > handled by factor() or expand() for this particular case. Would that be > correct? - BR > > On Fri, Sep 30, 2016 at 9:20 PM, Richard Fateman <fa...@be...> > wrote: > >> On 9/30/16, 9:05 PM, Anatomist NoElectrons wrote: >> > IHow could it do that without ever calling factor() or expand()? >> it used ratsimp. >> >> >> ------------------------------------------------------------ >> ------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, SlashDot.org! http://sdm.link/slashdot >> _______________________________________________ >> Maxima-discuss mailing list >> Max...@li... >> https://lists.sourceforge.net/lists/listinfo/maxima-discuss >> > > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > |
From: Richard F. <fa...@be...> - 2016-10-01 11:34:11
|
On 9/30/16, 9:33 PM, Anatomist NoElectrons wrote: > Thanks. I assume that ratsimp() duplicates the logic that would have > been handled by factor() or expand() for this particular case. Would > that be correct? - BR no. ratsimp computes a canonical form for polynomials and rational functions using a special representation, and is often quite fast. Expand just hacks around the general representation trying to multiply through what it finds. Factor is, in general, one of the more expensive algorithms. do showtime:all; and then try rat( (x+y+z)^30)$ and various other related computations.. > > On Fri, Sep 30, 2016 at 9:20 PM, Richard Fateman <fa...@be... > <mailto:fa...@be...>> wrote: > > On 9/30/16, 9:05 PM, Anatomist NoElectrons wrote: > > IHow could it do that without ever calling factor() or expand()? > it used ratsimp. > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > <mailto:Max...@li...> > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > <https://lists.sourceforge.net/lists/listinfo/maxima-discuss> > > |