You can subscribe to this list here.
2014 
_{Jan}

_{Feb}
(232) 
_{Mar}
(323) 
_{Apr}
(383) 
_{May}
(359) 
_{Jun}
(435) 
_{Jul}
(252) 
_{Aug}
(172) 
_{Sep}
(168) 
_{Oct}

_{Nov}

_{Dec}


From: karl <fibonacci4@fr...>  20140913 10:09:57

Hi all, sorry for the maybe stupid question. I do: >depends(h,[x,y]) >> [h(x,y)] then > define(gradh(x,y),jacobian([h],[x,y])); Then I have >> gradh(x,y):=[h_x h_y] Now I write: > h(x,y):= x^2 + y^2 I make then again: > gradh(x,y); I get again >> [h_x h_y] How to I get gradh(x,y)=[ 2*x 4*y] i.e. how to communicate that h has now the form x^2+ 2*y^2 ? Thanks 
From: Kris Katterjohn <katterjohn@gm...>  20140913 01:28:12

Welcome! On 09/12/2014 02:26 PM, Robert Dodier wrote: > I've invited Sergey Litvinov to be a Maxima developer. > He seems like a knowledgeable, easygoing person. > I look forward to his contributions to the project. > > best, > > Robert Dodier > 
From: Robert Dodier <robert.dodier@gm...>  20140912 19:27:08

I've invited Sergey Litvinov to be a Maxima developer. He seems like a knowledgeable, easygoing person. I look forward to his contributions to the project. best, Robert Dodier 
From: Dan Gildea <dgildea@us...>  20140911 12:50:54

Could someone please: 1) update the "Report Bugs" link on the navigation bar to point to http://sourceforge.net/p/maxima/bugs/ 2) fix the "Gmane archive" link from http://maxima.sourceforge.net/maximalist.html thanks 
From: Robert Dodier <robert.dodier@gm...>  20140909 22:36:35

On 20140909, Stavros Macrakis <macrakis@...> wrote: > What sort of alternate definition do you think would make sense here? Oh, e.g. for a multivariate Gaussian distribution, the formula for the pdf is the same except that one replaces the variance with a matrix (covariance) and uses noncommutative multiplication instead of commutative. >> By the way, some functions in other packages work the same way. > What do you have in mind? e.g. chebyshev functions simplify only if order is an integer; hankel functions simplify only if besselexpand flag is enabled. FWIW Robert Dodier 
From: Robert Dodier <robert.dodier@gm...>  20140909 22:25:12

On 20140909, Henry Baker <hbaker1@...> wrote: > Probably the best thing is to change the documentation & examples > to show how to get the "right" behavior. > > I can put up with another "assume", but I don't want to waste 1/2 > hour trying to figure out what's wrong. Yeah. It would be good to spell that out in the documentation. best Robert Dodier 
From: Henry Baker <hbaker1@pi...>  20140909 19:19:40

I think I just realized why pdf_normal & friends are so picky. Most of these distributions get integrated, and the integrate function is going to ask about the ranges of variables. If these ranges have already been declared, then the integrate function won't have to ask for help. So, I think we just need to update the examples and documentation. Thanks for all your help. At 11:58 AM 9/9/2014, Î£ÏÎ±á¿¦ÏÎ¿Ï ÎÎ±ÎºÏÎ¬ÎºÎ·Ï wrote: >On Tue, Sep 9, 2014 at 2:36 PM, Robert Dodier <robert.dodier@...> wrote: >On 20140909, Henry Baker <hbaker1@...> wrote: >â... > >> quantile_logistic is being too anal. > >I dunno. I can see a couple of reasons for it. (1) The formula is >actually only valid for certain values of the parameters. So that's >correct behavior (if inconvenient in some contexts). > >âYes, probabilities are always 0<=p<=1. > >But forcing users to declare all probabilityvalued variablesâ this way seems antithetical to the general ethos of Maxima, which is more pragmatic than that. I would be OK with, say, quantile_logistic(2,...) => ERROR, but it seems unnecessary to insist that the first argument be declared to be in range. >Â >(2) Leaving >it in the form foo(a, b, c) means there's an opportunity to wedge >some alternate definition (via simplification) when the usual >definition isn't appropriate for the given parameters. >â...â > >âWhat sort of alternate definition do you think would make sense here?â > >By the way, some functions in other packages work t >ââ >he same way. >â...â > >âWhat do you have in mind?â > >â Â Â Â Â sâ 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20140909 18:58:31

On Tue, Sep 9, 2014 at 2:36 PM, Robert Dodier <robert.dodier@...> wrote: > On 20140909, Henry Baker <hbaker1@...> wrote: > ... > > > quantile_logistic is being too anal. > > I dunno. I can see a couple of reasons for it. (1) The formula is > actually only valid for certain values of the parameters. So that's > correct behavior (if inconvenient in some contexts). Yes, probabilities are always 0<=p<=1. But forcing users to declare all probabilityvalued variables this way seems antithetical to the general ethos of Maxima, which is more pragmatic than that. I would be OK with, say, quantile_logistic(2,...) => ERROR, but it seems unnecessary to insist that the first argument be declared to be in range. > (2) Leaving > it in the form foo(a, b, c) means there's an opportunity to wedge > some alternate definition (via simplification) when the usual > definition isn't appropriate for the given parameters. > ... > > What sort of alternate definition do you think would make sense here? By the way, some functions in other packages work t > > he same way. > ... > What do you have in mind? s 
From: Henry Baker <hbaker1@pi...>  20140909 18:42:00

Probably the best thing is to change the documentation & examples to show how to get the "right" behavior. I can put up with another "assume", but I don't want to waste 1/2 hour trying to figure out what's wrong. At 11:36 AM 9/9/2014, Robert Dodier wrote: >On 20140909, Henry Baker <hbaker1@...> wrote: > >> That's a lot of work to tease out the closed form for quantile_logistic. >> >> quantile_logistic is being too anal. > >I dunno. I can see a couple of reasons for it. (1) The formula is >actually only valid for certain values of the parameters. So that's >correct behavior (if inconvenient in some contexts). (2) Leaving >it in the form foo(a, b, c) means there's an opportunity to wedge >some alternate definition (via simplification) when the usual >definition isn't appropriate for the given parameters. > >By the way, some functions in other packages work the same way. >Do we want to change all of them? Not me. > >> Also, if I wanted to, how could I declare q >= 0 and q <= 1 ? > >assume(q >= 0 and q <= 1); > >best > >Robert Dodier 
From: Robert Dodier <robert.dodier@gm...>  20140909 18:36:45

On 20140909, Henry Baker <hbaker1@...> wrote: > That's a lot of work to tease out the closed form for quantile_logistic. > > quantile_logistic is being too anal. I dunno. I can see a couple of reasons for it. (1) The formula is actually only valid for certain values of the parameters. So that's correct behavior (if inconvenient in some contexts). (2) Leaving it in the form foo(a, b, c) means there's an opportunity to wedge some alternate definition (via simplification) when the usual definition isn't appropriate for the given parameters. By the way, some functions in other packages work the same way. Do we want to change all of them? Not me. > Also, if I wanted to, how could I declare q >= 0 and q <= 1 ? assume(q >= 0 and q <= 1); best Robert Dodier 
From: Dennis Darland  student <student@de...>  20140909 18:08:30

First Painleve transcendent I compare Maple 18, Maxima (RungeKutta), Y. F Chang & George Corliss's ATOMFT, and my Omnisode (generating c) I have recently made a new release of Omnisode. Also I now provide the ATOMFT code (FORTRAN). http://sode.sourceforge.net/index.html#TestResults  Dennis Darland student@... 
From: Camm Maguire <camm@ma...>  20140909 18:05:15

Greetings, and thanks for running these results! If it is convenient, I sure would be interested in seeing an update for 5.34.1 and using gcl2.6.11. Take care,  Camm Maguire camm@... ========================================================================== "The earth is but one country, and mankind its citizens."  Baha'u'llah 
From: Stavros Macrakis (Σταῦρος Μακράκης) <macrakis@al...>  20140909 13:44:14

Reply inline: On Tue, Sep 9, 2014 at 9:12 AM, Henry Baker <hbaker1@...> wrote: > ... > > 1 > (%o8) a  b log(  1) > q > Please set display2d:false when generating examples for email. ... > That's a lot of work to tease out the closed form for quantile_logistic. > quantile_logistic is being too anal. > Agreed. Also, if I wanted to, how could I declare q >= 0 and q <= 1 ? > assume(q>=0,q<=1) s 
From: Henry Baker <hbaker1@pi...>  20140909 13:12:33

Maxima 5.28.02 http://maxima.sourceforge.net using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (a.k.a. GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) load(distrib); (%o1) C:/PROGRA~1/MAXIMA~1.02/share/maxima/5.28.02/share/distrib/distrib.mac (%i2) quantile_logistic(q,a,b); (%o2) quantile_logistic(q, a, b) (%i3) assume(b>0); (%o3) [b > 0] (%i4) quantile_logistic(q,a,b); (%o4) quantile_logistic(q, a, b) (%i5) assume(q>0); (%o5) [q > 0] (%i6) quantile_logistic(q,a,b); (%o6) quantile_logistic(q, a, b) (%i7) assume(q<1); (%o7) [q < 1] (%i8) quantile_logistic(q,a,b); 1 (%o8) a  b log(  1) q (%i9)  That's a lot of work to tease out the closed form for quantile_logistic. quantile_logistic is being too anal. Also, if I wanted to, how could I declare q >= 0 and q <= 1 ? 
From: Henry Baker <hbaker1@pi...>  20140909 13:08:36

Maxima 5.28.02 http://maxima.sourceforge.net using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (a.k.a. GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) load(distrib); (%o1) C:/PROGRA~1/MAXIMA~1.02/share/maxima/5.28.02/share/distrib/distrib.mac (%i2) quantile_normal(q,m,s); (%o2) quantile_normal(q, m, s) (%i3) assume(s>0); (%o3) [s > 0] (%i4) quantile_normal(q,m,s); (%o4) quantile_normal(q, m, s) (%i5) assume(q>0); (%o5) [q > 0] (%i6) quantile_normal(q,m,s); (%o6) quantile_normal(q, m, s) (%i7) assume(q<1); (%o7) [q < 1] (%i8) quantile_normal(q,m,s); (%o8) sqrt(2) inverse_erf(2 q  1) s + m (%i9)  Why is quantile_normal so d**ned picky? There are many other functions in Maxima that have limited domains, but don't require this amount of fastidiousness. 
From: Robert Dodier <robert.dodier@gm...>  20140908 22:38:30

I've tagged 5.34.1 in Git and built tar.gz & rpms and uploaded them to the SF file manager. http://sourceforge.net/p/maxima/files best Robert Dodier 
From: Barton Willis <willisb@un...>  20140908 11:11:45

>Unfortunately matchdeclare and tellsimpafter quote their arguments, >so I don't think that can work as it stands. Instead one has to >substitute gensyms into a quoted expression and then evaluate it. Removing the pointless gensyms, but keeping the buildq results a rule that might be somewhat less broken than a rule defined without buildq. (%i1) (matchdeclare ([aa, bb, cc], all, xx, symbolp), tellsimpafter ('diff(if aa then bb else cc,xx), buildq([aa, dbb : diff(bb,xx),dcc : diff(cc,xx)], if aa then dbb else dcc)))$ (%i2) diff(if (aa^21)<0 then aa^3 else aa,aa); (%o2) if aa^21<0 then 3*aa^2 else 1 
From: Alasdair McAndrew <amca01@gm...>  20140908 04:14:08

I don't know whether it's my system, or something more generic, but the delay between entering a command in imaxima and having the solution produced is about 7 or 8 seconds. And we're talking about things like "2+2". This is frustratingly  all but unusably  slow. Back to the console, or maybe wxmaxima... Alasdair On Sun, Sep 7, 2014 at 2:15 AM, Robert Dodier <robert.dodier@...> wrote: > About the apparent time delay generating the imaxima display, > one of the recent patches for imaxima includes several > more packages in the generated LaTeX output ... > maybe it's taking more time to process those packages? > Is it perhaps possible to pare down the list of packages? > > I've taken the liberty of forwarding this message to the > discussion list in case anyone else has something to say about it. > > best, > > Robert Dodier > > PS. > commit 873f253bae9d55be7241d690a48ea4baa9676885 > Author: Robert Dodier <robert_dodier@...> > Date: Wed Jun 4 19:34:25 2014 0700 > > Commit patch from David Ronis to put package and command stuff > into LaTeX boilerplate. > Fixes bug # 2741: imaxima preamble broken for display in emacs > > diff git a/interfaces/emacs/imaxima/imaxima.el > b/interfaces/emacs/imaxima/imaxima.el > index 5cbb884..88fe865 100644 >  a/interfaces/emacs/imaxima/imaxima.el > +++ b/interfaces/emacs/imaxima/imaxima.el > @@ 609,6 +609,7 @@ This command does not work in XEmacs." > (insert "\\documentclass[leqno]{article} > \\usepackage{verbatim} > \\usepackage[cmbase]{flexisym} > +\\usepackage{color} > \\usepackage{breqn} > \\setkeys{breqn}{compact} > > @@ 860,6 +861,20 @@ temporary files. Use linearized form if LINEAR > is nonnil." > ;;"\\batchmode\n" > (format "\\documentclass[%dpt,leqno]{article}\n" imaximaptsize) > "\n% mylatex\n" > + "\\usepackage{color}\n" > + "\\usepackage{exscale}\n" > + "\\usepackage[cmbase]{flexisym}\n" > + "\\usepackage{breqn}\n" > + "\\setkeys{breqn}{compact}\n" > + "\\setlength{\\textheight}{200cm}\n" > + "\\newcommand{\\boxed}[1]{\\fbox{\\m@...$\\displaystyle#1$}}\n" > + "\\newcommand{\\ifrac}[2]{\\frac{#1}{#2}}\n" > + "\\newcommand{\\ifracd}[2]{\\frac{#1}{#2}}\n" > + "\\newcommand{\\ifracn}[2]{\\frac{#1}{#2}}\n" > + "\\newcommand{\\isubscript}[2]{{#1}_{#2}}\n" > + "\\newcommand{\\iexpt}[2]{{#1}^{#2}}\n" > + "\\newcommand{\\isqrt}[1]{\\sqrt{#1}}\n" > + > (format "\\setlength{\\textwidth}{%dmm}\n" > (round (/ (imaximagetwindowwidth) > imaximascalefactor))) >  Blog: http://amca01.wordpress.com Web: http://sites.google.com/site/amca01/ Facebook: http://www.facebook.com/alasdair.mcandrew 
From: Robert Dodier <robert.dodier@gm...>  20140908 01:54:58

On 20140907, Barton Willis <willisb@...> wrote: > Roberts (ingenious) tellsimpafter solution Why, thank you, but it's really just another day at the office, so to speak. > Not OK: > > (%i5) diff(if aa^2 < 1 then aa^3 else aa,aa); > (%o5) if (aa^2<1)^2<1 then 3*(aa^2<1)^2 else 1 Yeah  this is the usual confusion caused by global properties attached to conceptually localized symbols ... > Might a workaround be > > block([aa : gensym(), bb : gensym(), cc : gensym(),xx : gensym()], > matchdeclare ([aa, bb, cc], all, xx, symbolp), > tellsimpafter ('diff(if aa then bb else cc,xx), buildq([aa,dbb : diff(bb,xx),dcc : diff(cc,xx)], if aa then dbb else dcc))); Unfortunately matchdeclare and tellsimpafter quote their arguments, so I don't think that can work as it stands. Instead one has to substitute gensyms into a quoted expression and then evaluate it. That is the strategy pursued by the blex lexical block construct which I've promoted from time to time. E.g.: load ("blex.lisp"); display2d : false $ 'diff (if aa then bb else cc, xx) $ blex ([aa, bb, cc, xx], matchdeclare ([aa, bb, cc], all, xx, symbolp), tellsimpafter (''%, apply ("if", [aa, diff (bb, xx), true, diff (cc, xx)]) + FOO (aa, bb, cc, xx))); diff(if aa^2 < 1 then aa^3 else aa,aa); => FOO(aa^2 < 1,aa^3,aa,aa)+(if aa^2 < 1 then 3*aa^2 else 1) For what it's worth, Robert Dodier PS. For the record: $ cat blex.lisp ;; blex.lisp  lexical block for Maxima ;; copyright 2012 by Robert Dodier ;; I release this work under terms of the GNU GPL ;; ;; examples: ;; blex ([n:100], f(x) := n : n + x, g() := display(n)); ;; blex ([f], f(x) := 2*x); ;; blex ([a], h(x) := a[x] : 1, i() := arrayinfo(a)); (defmspec $blex (x) (let* ((args (cdr x)) (vars+inits (cdr (car args))) (vars (mapcar #'(lambda (e) (if (symbolp e) e (second e))) vars+inits)) (inits (removeif #'symbolp vars+inits)) (exprs (cdr args)) (gensymvars (mapcar #'(lambda (s) (let ((s1 (gensym))) (setf (get s1 'reversealias) (or (get s 'reversealias) s)) s1)) vars)) (substeqns (mapcar #'(lambda (x y) `((mequal) ,x ,y)) vars gensymvars)) (gensymmprog ($psubstitute `((mlist) ,@ substeqns) `((mprog) ((mprogn) ,@ inits) ,@ exprs)))) (meval gensymmprog))) 
From: Pankaj Sejwal <pankajsejwal@gm...>  20140907 12:32:03

Based on suggestion from Gunter, I tried setting range for zaxis and got satisfactory results, draw3d(palette=gray,enhanced3d=[x/10+y/2,x,y,z],explicit(realpart(1/(x+y*%i)),x,3,3,y,3,3),zrange=[2,2]); This gives plot similar to Mathematica. Thanks Gunter. On Sun, Sep 7, 2014 at 5:01 PM, Pankaj Sejwal <pankajsejwal@...> wrote: > > On Sun, Sep 7, 2014 at 2:40 PM, Gunter Königsmann <gunter@...> > wrote: > >> draw3d(explicit(realpart(1/(x+y*%i)),x,10,10,y,10,10),yrange=[10,10]); > > > Thanks for replying Gunter but I am afraid to inform that its same, even > without specifying yrange separately, at least for this plot it takes > (y,10,10). > > >  > Regards, > Pankaj Sejwal > >  Regards, Pankaj Sejwal _____________________________________________________________________ "The more I read, the more I acquire, the more certain I am that I know nothing.”  Voltaire 
From: Barton Willis <willisb@un...>  20140907 12:29:02

Roberts (ingenious) tellsimpafter solution (http://stackoverflow.com/questions/24892016/maximadifferentiatingapiecewisefunction/25233479#25233479) gives: (%i4) diff(if x^2 < 1 then x^3 else x,x); (%o4) if x^2<1 then 3*x^2 else 1 Not OK: (%i5) diff(if aa^2 < 1 then aa^3 else aa,aa); (%o5) if (aa^2<1)^2<1 then 3*(aa^2<1)^2 else 1 Might a workaround be block([aa : gensym(), bb : gensym(), cc : gensym(),xx : gensym()], matchdeclare ([aa, bb, cc], all, xx, symbolp), tellsimpafter ('diff(if aa then bb else cc,xx), buildq([aa,dbb : diff(bb,xx),dcc : diff(cc,xx)], if aa then dbb else dcc))); Barton 
From: Gunter Königsmann <gunter@pe...>  20140907 09:10:24

To me it looks like the result maxima gets is correct but the y axis is scaled differently  and maxima is instructed not to use enough samples to find out how thin the spike actually is: after all at x=y=0 there be dragons. draw3d(explicit(realpart(1/(x+y*%i)),x,10,10,y,10,10),yrange=[10,10]); should be more like what Mathematica shows. Kind regards, Gunter. On 7. September 2014 10:40:06 MESZ, Pankaj Sejwal <pankajsejwal@...> wrote: >When I plot using Mathematica, I am getting fine plot for this complex >function, f(z) = Re(1/z) but when I do it using maxima, I get strange >graph. > >Since I cannot put graphics here, I have shared it at following >location, > >https://drive.google.com/file/d/0B36DQjLI_hxWWtKS3FDSW14TlE/edit?usp=sharing > >Mathematica Command: >Plot3D[Re[1/(x + y I)], {x, 10, 10}, {y, 10, 10}] >Maxima Command: >draw3d(explicit(realpart(1/(x+y*%i)),x,10,10,y,10,10)); > >Can someone tell me why they are different ? > > >Regards, >Pankaj Sejwal >_______________________________________________ >"The more I read, the more I acquire, the more certain I am that I know >nothing.”  Voltaire > > > > > >Slashdot TV. >Video for Nerds. Stuff that matters. >http://tv.slashdot.org/ > > > >_______________________________________________ >Maximadiscuss mailing list >Maximadiscuss@... >https://lists.sourceforge.net/lists/listinfo/maximadiscuss  Diese Nachricht wurde von meinem Mobiltelefon mit Kaiten Mail gesendet. 
From: Pankaj Sejwal <pankajsejwal@gm...>  20140907 08:40:53

When I plot using Mathematica, I am getting fine plot for this complex function, f(z) = Re(1/z) but when I do it using maxima, I get strange graph. Since I cannot put graphics here, I have shared it at following location, https://drive.google.com/file/d/0B36DQjLI_hxWWtKS3FDSW14TlE/edit?usp=sharing Mathematica Command: Plot3D[Re[1/(x + y I)], {x, 10, 10}, {y, 10, 10}] Maxima Command: draw3d(explicit(realpart(1/(x+y*%i)),x,10,10,y,10,10)); Can someone tell me why they are different ?  Regards, Pankaj Sejwal _______________________________________________ "The more I read, the more I acquire, the more certain I am that I know nothing.”  Voltaire 
From: Camm Maguire <camm@ma...>  20140907 04:08:35

Greetings! The GCL team is happy to announce the release of version 2.6.11, the latest achievement in the 'stable' (as opposed to 'development') series. Please see http://www.gnu.org/software/gcl for downloading information. This release features better floating point precision processing, support for cygwin, arm64, ppc64, ppc64le and solaris, more robust SGC, exact vararg initialization, SIGFPE trapping via #'si::breakonfloatingpointexceptions, x86 support for libopcode instruction disassembly via #'si::disassembleinstruction, simplified build dependencies, faster gcd, lcm, typep, coerce, 1+, predicates, pcl cache, SGC, fastlinking, closure calls and compiled bignums, compilation of top level closure forms by default, memoization of array type handling, support for machines handling long and object returns in different registers, a much smaller cmpinclude.h, prelink support, default Debian compiler flag support (especially stackguard), new linking and fastlinking diagnostic functions, some selinux support via READ_IMPLIES_EXEC personality, and many miscellaneous bug fixes and support for bugs in various external systems. Take care,  Camm Maguire camm@... ========================================================================== "The earth is but one country, and mankind its citizens."  Baha'u'llah 
From: Robert Dodier <robert.dodier@gm...>  20140906 18:40:17

On 20140905, Danilo Zanella <dczanella@...> wrote: > F(x) := if (x^2 < 1) then x^3 else x; > Fx(x):= diff(F(x),x,1); Derivative of an "if" expression isn't defined by default. It's a common request, so we (developers) should probably seriously consider implementing it in some way. In the meantime, here's a way to achieve that via userdefined simplification. Notice that in the code below there is a provision for handling discontinuities at the places where the function jumps from one value to another. If you want to ignore those, you can define FOO(x) := 0 in the code below. If you want a delta function at each discontinuity, we will have to write a definition for the function named "discontinuities" below. Let me know if you're interested. best Robert Dodier PS. The following is copied from my answer to this question on Stackoverflow: http://stackoverflow.com/questions/24892016/maximadifferentiatingapiecewisefunction/25233479#25233479 Here's a different approach using a simplification rule for "if" expressions. The unsolved part here is to detect discontinuities and generate delta functions for those locations. If you want to ignore those, you can define FOO to return 0. Note that I didn't attempt to implement the function discontinuities; that part is unsolved here. I can give it a try if there is interest. (%i1) display2d : false $ (%i2) matchdeclare ([aa, bb, cc], all, xx, symbolp) $ (%i3) 'diff (if aa then bb else cc, xx) $ (%i4) tellsimpafter (''%, apply ("if", [aa, diff (bb, xx), true, diff (cc, xx)]) + FOO (aa, bb, cc, xx)) $ (%i5) FOO (a, b, c, x) := 'lsum ((ev (c, x = d)  ev (b, x = d)) * delta (d, x), d, discontinuities (a, x)) $ (%i6) diff (if x > 0 then x^2 else x^3, x); (%o6) (if x > 0 then 2*x else 3*x^2)+'lsum((d^3d^2)*delta(d,x),d, discontinuities(x > 0,x)) 