How do you write this in lisp



It turns out that using your simpbetween() function does not have any effect on the speed of integrating a piecewise 
function defined using between()'s.  The slowness was with intbetween() which is in pw.mac.  It was not very efficient 
and so I am using some of your techniques to make it faster.  Anyway I want simpbetween() to be able to return 1/2 when 
at the end points. That makes piecewise() very useful for Fourier series since in a Fourier series the functions at a 
discontinuity point take on the value of the midpoint of the left and right limit.  Having between() return 1/2 at the 
endpoints has the same effect.  I am still trying to figure out a way to add this to your program without messing 
anything up.  That is hard to do.

Rich





From: Stavros Macrakis
Sent: Tuesday, April 06, 2010 11:41 AM
To: Richard Hennessy
Cc: Barton Willis ; Maxima List
Subject: Re: [Maxima] How do you write this in lisp


Try my new code and compile simpbetween.


On Tue, Apr 6, 2010 at 11:38, Richard Hennessy <rich.hennessy at verizon.net> wrote:

  I would like between to be as fast a signum.  Probably not likely to happen I guess.


  Rich

  --------------------------------------------------
  From: "Richard Hennessy" <rich.hennessy at verizon.net>

  Sent: Tuesday, April 06, 2010 11:32 AM
  To: "Stavros Macrakis" <macrakis at alum.mit.edu>; "Barton Willis" <willisb at unk.edu>; "Maxima List" 
<maxima at math.utexas.edu>

  Subject: Re: [Maxima] How do you write this in lisp


    Here is a better way to compare speed.  These two expressions are equivalent.

    (%i3) for i : 1 thru 100 do for j : 1 thru 100 do (signum(x-i)-signum(x-j))/2;
    Evaluation took 3.3300 seconds (3.3300 elapsed)
    (out3)                                                                               done
    (%i4) for i : 1 thru 100 do for j : 1 thru 100 do between(x,i,j);
    Evaluation took 19.0600 seconds (19.0600 elapsed)
    (out4)                                                                               done

    --------------------------------------------------
    From: "Stavros Macrakis" <macrakis at alum.mit.edu>
    Sent: Monday, April 05, 2010 11:13 PM
    To: "Richard Hennessy" <rich.hennessy at verizon.net>; "Barton Willis" <willisb at unk.edu>; "Maxima List" 
<maxima at math.utexas.edu>
    Subject: Re: [Maxima] How do you write this in lisp


      Well, it will depend on how often the conditions are true or false. If
      that's the issue, you can set compbx only on demand.

      How are you measuring speed?

              -s

      On 2010-04-05, Richard Hennessy <rich.hennessy at verizon.net> wrote:

        Hi,

        Actually this was a bad idea.  I tried making between a regular function and
        it breaks a lot of code that I have
        written.  It has to be a simplifying function or I can't integrate
        expressions that contain it.

        I have posted the newest pw.mac at my site.  It can use between or signum.
        I have to update the help now.  You can get
        it here.  http://mysite.verizon.net/res11w2yb/pw.mac.txt  BTW I have tried
        using sign() in the definition of simpbetween
        but it is slower that using the relational operators.  Maybe I am going
        about it the right way.

        Rich


        --------------------------------------------------
        From: "Richard Hennessy" <rich.hennessy at verizon.net>
        Sent: Monday, April 05, 2010 10:05 PM
        To: "Barton Willis" <willisb at unk.edu>; <macrakis at alum.mit.edu>
        Cc: "Maxima List" <maxima at math.utexas.edu>
        Subject: Re: [Maxima] How do you write this in lisp


          "simplification--how much is too much".

          Maybe between should not be a simplifying function at all.  I could make
          the body of simpbetween with some possibly
          necessary changes the body of a regular user function called between.  I
          am not sure I like simplifying functions that
          much.  Maybe that would work out better.  I can't make up my mind on this
          yet.  I am going to try experimenting with
          both ways
          of doing it.

          Rich


          --------------------------------------------------
          From: "Barton Willis" <willisb at unk.edu>
          Sent: Monday, April 05, 2010 9:17 PM
          To: <macrakis at alum.mit.edu>
          Cc: "Richard Hennessy" <rich.hennessy at verizon.net>; "Maxima List"
          <maxima at math.utexas.edu>
          Subject: Re: [Maxima] How do you write this in lisp


            It would be great if there was a definitive guide to writing simplifying
            functions.
            There are plenty of examples, but no how-to manual that I know of; some
            topics
            that come to mind:

            (1) nouns and verbs,
            (2) autoloading simplifying functions,
            (3) simplification--how much is too much,
            (4) reflection rules,
            (5) binary64 & bigfloat evaluation,
            (6) extras: gradef, conjugates, limits, TeX properties, antiderivatives,
            (7) declaring function properties (complex, ...),
            (8) domain and wrong number of argument errors,

            --Barton




          _______________________________________________
          Maxima mailing list
          Maxima at math.utexas.edu
          http://www.math.utexas.edu/mailman/listinfo/maxima