Re: Some questions: built-in operators and exponent markers
Astrea Drifter <[email protected]> Mon, 27 Jul 2026 18:25:19 -0600
| Newsgroups | gmane.comp.mathematics.maxima.general |
|---|---|
| Message-ID | <CADZFxc=fxEg20mAMzSLqh1bWiUzsWUn=0=Kt1+uxPXmmdyR_AQ@mail.gmail.com> |
--===============3248666865910835785== Content-Type: multipart/alternative; boundary="00000000000050ae8f0657a101e4" --00000000000050ae8f0657a101e4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > > You are trying to do something that you need not do at all, if you just > use the syntax and > functional definitions as given, and not bend things. > Before I sent any of these emails I did spend weeks attempting to accomplish this project by creating and debugging various sets of function definitions, and until now I never had any measure of success. Today, however, I tested out another batch of definitions I had thought up and this time it not only worked, but worked perfectly (much to my own surprise)! So it seems a little more brainstorming was the only thing I was in need of all along. It's clear in retrospect that trying to edit the source code was a fool's errand on my part; I only sought help with it because everything else I was doing seemed pointless at the time. Thanks for all the help, Astrea On Sat, Jul 25, 2026 at 8:02=E2=80=AFPM Richard Fateman <[email protected]>= wrote: > I can't reproduce your error. I get the right answer for factorial(5b0). > However, > >> (%i1) infix("!"); > > (%o1) ! > > (%i2) "!"(x):=3D x*%i; > > (%o2) ("!"(x)) :=3D x %i > > > is wrong. an infix operator needs TWO arguments. > You might try postfix("!"). > > Next, you appear to be reading into Maxima some file bffac.mac. I don't > know why.. > Presumably that file uses "!", but you have incorrectly defined that. > > Furthermore, please do not edit and compile a whole file if you are > changing one definition. > Just read that definition. > Then you won't have irrelevant warning messages. In fact, if you are > explicitly compiling something, > dont. just load in the file. > > You are trying to do something that you need not do at all, if you just > use the syntax and > functional definitions as given, and not bend things. > Good luck. > > RJF > > On Sat, Jul 25, 2026 at 3:38=E2=80=AFPM Astrea Drifter <astreadrifter@gma= il.com> > wrote: > >> what do you mean >>> "I lost the ability to call factorial()" >>> >>> What happens when you type factorial(5)? >>> >> >> Here's an example session. I can make factorial() work for integers and >> floats, but not bigfloats: >> >> (%i1) :lisp (remprop '$! 'mheader) >> >> >>> (MHEADER (MFACTORIAL) LPOS $EXPR POS $EXPR LBP 160 LED >> >> #<FUNCTION PARSE-POSTFIX>) >> >> (%i1) :lisp (remprop '$! 'led) >> >> >>> (LED #<FUNCTION PARSE-POSTFIX>) >> >> (%i1) infix("!"); >> >> (%o1) ! >> >> (%i2) "!"(x):=3D x*%i; >> >> (%o2) ("!"(x)) :=3D x %i >> >> (%i3) factorial(5); >> >> (%o3) 120 >> >> (%i4) factorial(5b0); >> >> C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incor= rect >>> syntax: Illegal use of delimiter ) >> >> /bfloat(%pi*(s-1)!) >> >> ^ >> >> >> If I use a different character for my operator, but if I also attempt t= o >> change the exponent markers (by loading my edited source files) I get th= e >> same situation as before. I haven't pasted it into the email because the >> session generates an extremely long list of style warnings when I load t= he >> edited files. The only way I know how to make factorial() work for >> bigfloats too is if I abandon this project and leave everything the way = it >> was, and barring any further help I'll probably do just that, at least >> until I can learn more Lisp some day. >> >> Changing the meaning of "!" and the marker for bigfloats is possible, >>> as you see, but changes >> >> like that typically do not much advance one's ability to get things done= . >> >> Humans are very flexible and can learn new notations rather quickly. >> >> >> I apologize if I've strained anyone's patience here, and I'm certainly >> under no illusion that I'm entitled to further answers on this (or, for >> that matter, any at all). What I wanted to get done was be able to displ= ay >> things in my own way. I'm well aware that this is an unusual goal for me= to >> pursue in and of itself; I've been doing this for fun. >> Perhaps this was not the right place for me to be seeking help, and if >> not, I apologize for that as well. >> Astrea >> >> On Sat, Jul 25, 2026 at 2:32=E2=80=AFPM Richard Fateman <[email protected]= om> >> wrote: >> >>> what do you mean >>> "I lost the ability to call factorial()" >>> >>> What happens when you type factorial(5)? >>> >>> There is a program inside Maxima that is the integer factorial program. >>> You can call it by >>> ?factorial(5); >>> >>> There are various other programs, which you can see listed by doing thi= s: >>> :lisp (apropos "factorial") >>> >>> Changing the meaning of "!" and the marker for bigfloats is possible, a= s >>> you see, but changes >>> like that typically do not much advance one's ability to get things >>> done. >>> Humans are very flexible and can learn new notations rather quickly. >>> >>> Learning lisp may be of some use. >>> >>> If you change one function definition, you can put that in a file with >>> >>> (in-package :maxima) at the top. >>> just read that file in. >>> Compilation is not necessary. >>> >>> good luck >>> RJF >>> >>> >>> >>> >>> On Sat, Jul 25, 2026 at 12:18=E2=80=AFPM Astrea Drifter <astreadrifter@= gmail.com> >>> wrote: >>> >>>> I've managed to confirm that the problem is in the edited >>>> src/nparse.lisp and not in the edited src\float.lisp. >>>> >>>> On Sat, Jul 25, 2026 at 1:04=E2=80=AFPM Astrea Drifter <astreadrifter@= gmail.com> >>>> wrote: >>>> >>>>> An update: >>>>> After some investigation, I've discovered it's not only the >>>>> redefinition of the exclamation mark that makes factorial() and >>>>> related functions unusable. The files I edited to replace the exponen= t >>>>> markers have the same effect, and this time I have no idea what could= be >>>>> causing it. This effect is less widespread (affects bigfloats only, I= can >>>>> use factorial() with integers and regular floats) but since I never >>>>> do calculations with anything other than bigfloats the net effect is = the >>>>> same for me. >>>>> The only changes I made to the files was to replace #\B with #\P, #\b >>>>> with #\p (in src\nparse.lisp) and |b| with |p| (in src\float.lisp) >>>>> I wonder what could be going wrong here? >>>>> Astrea >>>>> >>>>> On Sat, Jul 25, 2026 at 12:19=E2=80=AFPM Astrea Drifter < >>>>> [email protected]> wrote: >>>>> >>>>>> The printing (and scanning?) of bigfloats is done by code in >>>>>>> src/float.lisp >>>>>>> It is not likely that searching for #\b will do the job, since the >>>>>>> file seems to >>>>>>> have |b|, also. It may be possible to wrap up one program, >>>>>>> fpformat so that >>>>>>> after it produces a list of characters you can substitute p for b i= n >>>>>>> that list. I don't know >>>>>>> if all the front ends use the same formatting program. I hope they >>>>>>> do.. >>>>>>> It is possible that some of this code was copied into displa.lisp. >>>>>>> I haven't checked. >>>>>>> RJF >>>>>>> >>>>>> >>>>>> I actually discovered src/float.lisp some weeks ago, while looking >>>>>> through the files on my own, and after editing that as well as >>>>>> src/nparse.lisp it seems I've been able to replace the exponent mark= ers >>>>>> without any trouble! >>>>>> Funnily enough I discovered an issue with my exclamation mark >>>>>> operator, which earlier I thought was working perfectly, and it seem= ed >>>>>> interesting enough to mention here: >>>>>> >>>>>> If you are open to an option to redefining "!", you might experiment >>>>>>> with (or replace "~" with your favorite character) >>>>>>> >>>>>>> (%i1) prefix("~")$ >>>>>>> >>>>>>> (%i2) "~"(x) :=3D %i*x$ >>>>>>> >>>>>>> (%i3) 5 + ~7; >>>>>>> (%o3) 7 %i + 5 >>>>>>> >>>>>> >>>>>> You might consider using an otherwise-undefined operator, such as >>>>>>> "i". >>>>>> >>>>>> >>>>>>> postfix ("i"); >>>>>> >>>>>> x i :=3D x * %i; >>>>>> >>>>>> >>>>>>> x i; >>>>>> >>>>>> =3D> x*%i >>>>>> >>>>>> >>>>>>> 100; >>>>>> >>>>>> =3D> 100*%i >>>>>> >>>>>> >>>>>> After I had removed "!" from the list of builtin operators, I lost >>>>>> the ability to call factorial() as well as related functions like >>>>>> erf() and gamma(), which I imagine is because all of these functions >>>>>> call on each other in various circumstances and because the (now und= efined) >>>>>> exclamation mark seems to be in the source code itself: >>>>>> >>>>>> (%i5) infix("!"); >>>>>> (%o5) ! >>>>>> (%i6) "!"(x):=3D x*%i; >>>>>> (%o6) ("!"(x)) :=3D x %i >>>>>> (%i7) factorial(1b0); >>>>>> C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:i= ncorrect >>>>>> syntax: Illegal use of delimiter ) >>>>>> /bfloat(%pi*(s-1)!) >>>>>> ^ >>>>>> >>>>>> (%i8) prefix("!"); >>>>>> (%o8) ! >>>>>> (%i9) factorial(1b0); >>>>>> C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:i= ncorrect >>>>>> syntax: Illegal use of delimiter ) >>>>>> /bfloat(%pi*(s-1)!) >>>>>> ^ >>>>>> >>>>>> (%i10) erf(1b0); >>>>>> C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:i= ncorrect >>>>>> syntax: Illegal use of delimiter ) >>>>>> /bfloat(%pi*(s-1)!) >>>>>> ^ >>>>>> >>>>>> (%i11) gamma(1b0); >>>>>> C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:i= ncorrect >>>>>> syntax: Illegal use of delimiter ) >>>>>> /bfloat(%pi*(s-1)!) >>>>>> >>>>>> There's no definiton of factorial built in with Common Lisp as near >>>>>> as I can tell, which makes me think it must be defined in >>>>>> numeric/bffac.mac with the use of the exclamation mark. Perhaps then= my >>>>>> "problem" here could be fixed if I were familiar enough with Lisp to= be >>>>>> able to mess around with the file really confidently. I haven't reac= hed >>>>>> that point though, so using another character for my operator should= work >>>>>> well enough, at least for the time being. >>>>>> >>>>>> Thanks again for all the help! >>>>>> Astrea >>>>>> >>>>>> On Tue, Jul 21, 2026 at 7:01=E2=80=AFPM Richard Fateman <fateman@gma= il.com> >>>>>> wrote: >>>>>> >>>>>>> The printing (and scanning?) of bigfloats is done by code in >>>>>>> src/float.lisp >>>>>>> It is not likely that searching for #\b will do the job, since the >>>>>>> file seems to >>>>>>> have |b|, also. It may be possible to wrap up one program, >>>>>>> fpformat so that >>>>>>> after it produces a list of characters you can substitute p for b i= n >>>>>>> that list. I don't know >>>>>>> if all the front ends use the same formatting program. I hope they >>>>>>> do.. >>>>>>> It is possible that some of this code was copied into displa.lisp. >>>>>>> I haven't checked. >>>>>>> RJF >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Jul 21, 2026 at 3:35=E2=80=AFPM Robert Dodier < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Glad to hear the bit about the "!" operator is working for you. >>>>>>>> About >>>>>>>> changing the bigfloat parser, I looked at src/nparse.lisp and I >>>>>>>> believe that is indeed the file which contains the bigfloat parser= , >>>>>>>> so >>>>>>>> that is the one to modify. >>>>>>>> >>>>>>>> I guess you would also want to make the corresponding changes for >>>>>>>> the >>>>>>>> display code. Maxima has two display modes, one is called the 2-d >>>>>>>> pretty printer and the other is the 1-d non-pretty-printer. The >>>>>>>> pretty >>>>>>>> printer is in src/displa.lisp (note that's displa, not display) an= d >>>>>>>> the non-pretty printer is in src/grind.liap. Again, you would sear= ch >>>>>>>> for #\B and/or #\b and replace them with #\P or #\p. >>>>>>>> >>>>>>>> Hope this helps, >>>>>>>> >>>>>>>> Robert >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Maxima-discuss mailing list >>>>>>>> [email protected] >>>>>>>> https://lists.sourceforge.net/lists/listinfo/maxima-discuss >>>>>>>> >>>>>>> --00000000000050ae8f0657a101e4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px = 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div cla= ss=3D"gmail_default" style=3D"font-family:arial,sans-serif">You are trying = to do something that you need not do at all, if you just use the syntax and= </div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif">f= unctional definitions as given, and not bend things.</div></blockquote><div= >=C2=A0</div><div><span style=3D"background-color:transparent">Before I sen= t any of these emails I did spend weeks attempting=C2=A0to accomplish this = project by=C2=A0creating and debugging various sets of function=C2=A0defini= tions, and until now I never=C2=A0had any measure of success. Today, howeve= r, I tested out another batch of definitions I had thought up and this time= it not only worked, but worked perfectly (much to my own surprise)! So it = seems a little more brainstorming was the only thing I was in need of all a= long.</span></div><div>It's clear in retrospect that trying to edit the= source code was a fool's errand on=C2=A0my part; I only sought help wi= th it because everything else I was doing seemed pointless at the time.<br>= Thanks for all the help,<br>Astrea<br></div></div><br><div class=3D"gmail_q= uote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, J= ul 25, 2026 at 8:02=E2=80=AFPM Richard Fateman <<a href=3D"mailto:fatema= [email protected]">[email protected]</a>> wrote:<br></div><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D= "ltr"><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;fo= nt-size:small">I can't reproduce your error. I get the right answer for= factorial(5b0).</div><div class=3D"gmail_default" style=3D"font-family:ari= al,sans-serif;font-size:small">However,</div><div class=3D"gmail_default" s= tyle=3D"font-family:arial,sans-serif;font-size:small"><blockquote class=3D"= gmail_quote" style=3D"font-family:Arial,Helvetica,sans-serif;margin:0px 0px= 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font f= ace=3D"monospace">(%i1) infix("!");</font></blockquote><blockquot= e class=3D"gmail_quote" style=3D"font-family:Arial,Helvetica,sans-serif;mar= gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1= ex"><font face=3D"monospace">(%o1) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0!</font></blockquote><blockquote class=3D"gmail_quote" style=3D"font-= family:Arial,Helvetica,sans-serif;margin:0px 0px 0px 0.8ex;border-left:1px = solid rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">(%i2) &qu= ot;!"(x):=3D x*%i;</font></blockquote><blockquote class=3D"gmail_quote= " style=3D"font-family:Arial,Helvetica,sans-serif;margin:0px 0px 0px 0.8ex;= border-left:1px solid rgb(204,204,204);padding-left:1ex"><font face=3D"mono= space">(%o2) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0("!"(x)) :=3D x %i</font></blockquote= ></div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;f= ont-size:small"><br></div><div class=3D"gmail_default" style=3D"font-family= :arial,sans-serif;font-size:small">is wrong. an infix operator needs TWO ar= guments.=C2=A0=C2=A0</div><div class=3D"gmail_default" style=3D"font-family= :arial,sans-serif;font-size:small">You might try postfix("!").</d= iv><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-= size:small"><br></div><div class=3D"gmail_default" style=3D"font-family:ari= al,sans-serif;font-size:small">Next,=C2=A0 you appear to be reading into Ma= xima some file bffac.mac. I don't know why..</div><div class=3D"gmail_d= efault" style=3D"font-family:arial,sans-serif;font-size:small">Presumably t= hat file uses "!",=C2=A0 but you have incorrectly defined that.</= div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font= -size:small"><br></div><div class=3D"gmail_default" style=3D"font-family:ar= ial,sans-serif;font-size:small">Furthermore, please do not edit and compile= a whole file if you are changing one definition.</div><div class=3D"gmail_= default" style=3D"font-family:arial,sans-serif;font-size:small">Just read t= hat definition.</div><div class=3D"gmail_default" style=3D"font-family:aria= l,sans-serif;font-size:small">Then you won't have irrelevant warning me= ssages.=C2=A0 In fact, if you are explicitly compiling something,</div><div= class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:sm= all">dont. just load in the file.</div><div class=3D"gmail_default" style= =3D"font-family:arial,sans-serif;font-size:small"><br></div><div class=3D"g= mail_default" style=3D"font-family:arial,sans-serif;font-size:small">You ar= e trying to do something that you need not do at all, if you just use the s= yntax and</div><div class=3D"gmail_default" style=3D"font-family:arial,sans= -serif;font-size:small">functional definitions as given, and not bend thing= s.=C2=A0 =C2=A0</div><div class=3D"gmail_default" style=3D"font-family:aria= l,sans-serif;font-size:small">Good luck.</div><div class=3D"gmail_default" = style=3D"font-family:arial,sans-serif;font-size:small"><br></div><div class= =3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">R= JF</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmai= l_attr">On Sat, Jul 25, 2026 at 3:38=E2=80=AFPM Astrea Drifter <<a href= =3D"mailto:[email protected]" target=3D"_blank">[email protected]= om</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi= n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex= "><div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p= x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div s= tyle=3D"font-family:arial,sans-serif">what do you mean</div><span><div styl= e=3D"font-family:arial,sans-serif">"<span style=3D"font-family:Arial,H= elvetica,sans-serif;background-color:transparent">I lost the ability to cal= l</span><span style=3D"font-family:Arial,Helvetica,sans-serif;background-co= lor:transparent">=C2=A0</span><font face=3D"monospace" style=3D"background-= color:transparent">factorial()"</font></div><div style=3D"font-family:= arial,sans-serif"><font face=3D"monospace" style=3D"background-color:transp= arent"><br></font></div></span><div style=3D"font-family:arial,sans-serif">= What happens when you type factorial(5)?</div></blockquote><div><br>Here= 9;s an example session. I can make <font face=3D"monospace">factorial()</fo= nt><font face=3D"arial, sans-serif">=C2=A0work for integers and floats, but= not bigfloats:=C2=A0<br></font><br><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex"><font face=3D"monospace">(%i1) :lisp (remprop '$! 'mhead= er)</font></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0p= x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><f= ont face=3D"monospace"><br></font></blockquote><blockquote class=3D"gmail_q= uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2= 04);padding-left:1ex"><font face=3D"monospace">(MHEADER (MFACTORIAL) LPOS $= EXPR POS $EXPR LBP 160 LED</font></blockquote><blockquote class=3D"gmail_qu= ote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20= 4);padding-left:1ex"><font face=3D"monospace">=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0#<FUNCTION PARSE-POSTFIX>)</font></blockquote><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"><font face=3D"monospace">(%i1) :lisp (remp= rop '$! 'led)</font></blockquote><blockquote class=3D"gmail_quote" = style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa= dding-left:1ex"><font face=3D"monospace"><br></font></blockquote><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">(LED #<= FUNCTION PARSE-POSTFIX>)</font></blockquote><blockquote class=3D"gmail_q= uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2= 04);padding-left:1ex"><font face=3D"monospace">(%i1) infix("!");<= /font></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p= x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font = face=3D"monospace">(%o1) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!</fon= t></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p= x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font face= =3D"monospace">(%i2) "!"(x):=3D x*%i;</font></blockquote><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px= solid rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">(%o2) = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0("!"(x)) :=3D x %i</font></blockquote><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">(%i3) fact= orial(5);</font></blockquote><blockquote class=3D"gmail_quote" style=3D"mar= gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1= ex"><font face=3D"monospace">(%o3) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1= 20</font></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px= 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><fo= nt face=3D"monospace">(%i4) factorial(5b0);</font></blockquote><blockquote = class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol= id rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">C:/maxima-5.= 49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incorrect syntax: Il= legal use of delimiter )</font></blockquote><blockquote class=3D"gmail_quot= e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)= ;padding-left:1ex"><font face=3D"monospace">=C2=A0/bfloat(%pi*(s-1)!)</font= ></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px= 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font face= =3D"monospace"><span style=3D"background-color:transparent">=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^</span>=C2=A0</font></blo= ckquote><div><br>=C2=A0If I use a different character for my operator, but = if I also attempt to change the exponent markers (by loading my edited sour= ce files) I get the same situation as before. I haven't pasted it into = the email because the session generates an extremely long list of style war= nings when I load the edited files. The only way I know how to make <font f= ace=3D"monospace">factorial()</font> work for bigfloats too is if I abandon= this project and leave everything the way it was, and barring any further = help I'll probably do just that, at least until I can learn more Lisp s= ome day.<br></div><div><br><blockquote class=3D"gmail_quote" style=3D"margi= n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex= ">=C2=A0<span style=3D"font-family:arial,sans-serif;background-color:transp= arent">Changing the meaning of "!" and the marker for bigfloats i= s possible, as you see, but changes</span></blockquote><blockquote style=3D= "margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft:1ex" class=3D"gmail_quote">like that typically do not much advance one&#= 39;s ability to get things done.=C2=A0</blockquote><blockquote style=3D"mar= gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1= ex" class=3D"gmail_quote">=C2=A0Humans are very flexible and can=C2=A0<span= style=3D"background-color:transparent">learn new notations rather quickly.= </span></blockquote><div>=C2=A0</div><div>I apologize if I've strained = anyone's patience here, and I'm certainly under no illusion that I&= #39;m entitled to further answers on this (or, for that matter, any at all)= . What I wanted to get done was be able to display things in my own way. I&= #39;m well aware that this is an unusual goal for me to pursue in and of it= self; I've been doing this for fun.<br>Perhaps this was not the right p= lace for me to be seeking help, and if not, I apologize for that as well.<b= r>Astrea</div></div></div></div><br><div class=3D"gmail_quote"><div dir=3D"= ltr" class=3D"gmail_attr">On Sat, Jul 25, 2026 at 2:32=E2=80=AFPM Richard F= ateman <<a href=3D"mailto:[email protected]" target=3D"_blank">fateman@g= mail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D= "margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft:1ex"><div dir=3D"ltr"><div style=3D"font-family:arial,sans-serif;font-si= ze:small">what do you mean</div><div style=3D"font-family:arial,sans-serif;= font-size:small">"<span style=3D"font-family:Arial,Helvetica,sans-seri= f;background-color:transparent">I lost the ability to call</span><span styl= e=3D"font-family:Arial,Helvetica,sans-serif;background-color:transparent">= =C2=A0</span><font face=3D"monospace" style=3D"background-color:transparent= ">factorial()"</font></div><div style=3D"font-family:arial,sans-serif;= font-size:small"><font face=3D"monospace" style=3D"background-color:transpa= rent"><br></font></div><div style=3D"font-family:arial,sans-serif;font-size= :small">What happens when you type factorial(5)?</div><div style=3D"font-fa= mily:arial,sans-serif;font-size:small"><br></div><div style=3D"font-family:= arial,sans-serif;font-size:small">There is a program inside Maxima that is = the integer factorial program. You can call it by</div><div style=3D"font-f= amily:arial,sans-serif;font-size:small">?factorial(5);</div><div style=3D"f= ont-family:arial,sans-serif;font-size:small"><br></div><div style=3D"font-f= amily:arial,sans-serif;font-size:small">There are various other programs, w= hich you can see listed by doing this:</div><div style=3D"font-family:arial= ,sans-serif;font-size:small">:lisp (apropos "factorial")</div><di= v style=3D"font-family:arial,sans-serif;font-size:small"><br></div><div sty= le=3D"font-family:arial,sans-serif;font-size:small">Changing the meaning of= "!" and the marker for bigfloats is possible, as you see, but ch= anges</div><div style=3D"font-family:arial,sans-serif;font-size:small">like= that typically do not much advance one's ability to get things done.= =C2=A0</div><div style=3D"font-family:arial,sans-serif;font-size:small">=C2= =A0Humans are very flexible and can=C2=A0<span style=3D"background-color:tr= ansparent">learn new notations rather quickly.</span></div><div style=3D"fo= nt-family:arial,sans-serif;font-size:small"><span style=3D"background-color= :transparent">=C2=A0</span></div><div style=3D"font-family:arial,sans-serif= ;font-size:small">Learning lisp may be of some use.</div><div style=3D"font= -family:arial,sans-serif;font-size:small"><br></div><div style=3D"font-fami= ly:arial,sans-serif;font-size:small">If you change one function definition,= you can put that in a file with</div><div style=3D"font-family:arial,sans-= serif;font-size:small"><br></div><div style=3D"font-family:arial,sans-serif= ;font-size:small">(in-package :maxima)=C2=A0 at the top.</div><div style=3D= "font-family:arial,sans-serif;font-size:small">just read that file in.</div= ><div style=3D"font-family:arial,sans-serif;font-size:small">Compilation is= not necessary.</div><div style=3D"font-family:arial,sans-serif;font-size:s= mall"><br></div><div style=3D"font-family:arial,sans-serif;font-size:small"= >good luck</div><div style=3D"font-family:arial,sans-serif;font-size:small"= >RJF</div><div style=3D"font-family:arial,sans-serif;font-size:small"><br><= /div><div style=3D"font-family:arial,sans-serif;font-size:small"><br></div>= <div style=3D"font-family:arial,sans-serif;font-size:small"><br></div></div= ><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sa= t, Jul 25, 2026 at 12:18=E2=80=AFPM Astrea Drifter <<a href=3D"mailto:as= [email protected]" target=3D"_blank">[email protected]</a>> wr= ote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px= 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D= "ltr">I've managed to confirm that the problem is in the edited src/npa= rse.lisp and not in the edited src\float.lisp.</div><br><div class=3D"gmail= _quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jul 25, 2026 at 1:04= =E2=80=AFPM Astrea Drifter <<a href=3D"mailto:[email protected]" t= arget=3D"_blank">[email protected]</a>> wrote:<br></div><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">An update:<br>Afte= r some investigation, I've discovered it's not only the redefinitio= n of the exclamation mark that makes <font face=3D"monospace">factorial()</= font><font face=3D"arial, sans-serif">=C2=A0and related functions unusable.= The files I edited to replace the exponent markers have the same effect, a= nd this time I have no idea what could be causing it. This effect is less w= idespread (affects bigfloats=C2=A0only, I can use=C2=A0</font><font face=3D= "monospace">factorial()</font><font face=3D"arial, sans-serif">=C2=A0with i= ntegers and regular floats) but since I never do calculations with anything= other than bigfloats=C2=A0the net effect is the same for me.<br>The only c= hanges I made to the files was to replace #\B with #\P, #\b with #\p (in sr= c\nparse.lisp) and |b| with |p| (in src\float.lisp)<br>I wonder what could = be=C2=A0going wrong here?<br>Astrea</font></div><br><div class=3D"gmail_quo= te"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jul 25, 2026 at 12:19=E2= =80=AFPM Astrea Drifter <<a href=3D"mailto:[email protected]" targ= et=3D"_blank">[email protected]</a>> wrote:<br></div><blockquote c= lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli= d rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><blockquote class=3D"= gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20= 4,204,204);padding-left:1ex"><div style=3D"font-family:arial,sans-serif">Th= e printing (and scanning?)=C2=A0 of bigfloats is done by code in src/float.= lisp</div><div style=3D"font-family:arial,sans-serif">It is not likely that= searching for #\b=C2=A0 will do the job, since the file seems to</div><div= style=3D"font-family:arial,sans-serif">have |b|, also.=C2=A0 =C2=A0It may = be possible to wrap up one program,=C2=A0 fpformat so that</div><div style= =3D"font-family:arial,sans-serif">after it produces a list of characters yo= u can substitute p for b in that list.=C2=A0 =C2=A0I don't know</div><d= iv style=3D"font-family:arial,sans-serif">if all the front ends use the sam= e formatting program.=C2=A0 I hope they do..</div><div style=3D"font-family= :arial,sans-serif">It is possible that some of this code was copied into di= spla.lisp.=C2=A0 I haven't checked.</div><div style=3D"font-family:aria= l,sans-serif">RJF</div></blockquote><div><br>I actually discovered src/floa= t.lisp some weeks ago, while looking through the files on my own, and after= editing that as well as src/nparse.lisp it seems I've been able to rep= lace the exponent markers without any trouble!<br>Funnily enough I discover= ed an issue with my exclamation mark operator, which earlier I thought was = working perfectly, and it seemed interesting enough to mention here:<br><br= ><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border= -left:1px solid rgb(204,204,204);padding-left:1ex"><div style=3D"color:rgb(= 0,0,0)"><font face=3D"arial, sans-serif">If you are open to an option to re= defining "!", you might experiment with (or replace "~"= with your favorite character)</font></div><div style=3D"color:rgb(0,0,0)">= <font face=3D"arial, sans-serif"><br></font></div><div style=3D"color:rgb(0= ,0,0)"><font face=3D"arial, sans-serif">(%i1) prefix("~")$</font>= </div><div style=3D"color:rgb(0,0,0)"><font face=3D"arial, sans-serif"><br>= </font></div><div style=3D"color:rgb(0,0,0)"><font face=3D"arial, sans-seri= f">(%i2) "~"(x) :=3D %i*x$</font></div><div style=3D"color:rgb(0,= 0,0)"><font face=3D"arial, sans-serif"><br></font></div><div style=3D"color= :rgb(0,0,0)"><font face=3D"arial, sans-serif">(%i3) 5 + ~7;</font></div><di= v style=3D"color:rgb(0,0,0)"><font face=3D"arial, sans-serif">(%o3) =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A07 %i + 5</font></div></blockquote><div><br><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px= solid rgb(204,204,204);padding-left:1ex">=C2=A0<span style=3D"background-c= olor:transparent">You might consider using an otherwise-undefined operator,= such as "i".</span></blockquote><blockquote class=3D"gmail_quote= " style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);= padding-left:1ex"><br></blockquote><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">postfix ("i");</blockquote><blockquote class=3D"gmail_= quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,= 204);padding-left:1ex">x i :=3D x * %i;</blockquote><blockquote class=3D"gm= ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,= 204,204);padding-left:1ex"><br></blockquote><blockquote class=3D"gmail_quot= e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)= ;padding-left:1ex">x i;</blockquote><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">=C2=A0=3D> x*%i</blockquote><blockquote class=3D"gmail_quote"= style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p= adding-left:1ex"><br></blockquote><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">100;</blockquote><blockquote class=3D"gmail_quote" style=3D"marg= in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e= x">=C2=A0=3D> 100*%i</blockquote><div><br>After I had removed "!&qu= ot; from the list of builtin operators, I lost the ability to call <font fa= ce=3D"monospace">factorial()</font><font face=3D"arial, sans-serif">=C2=A0a= s well as related functions like </font><font face=3D"monospace">erf()</fon= t><font face=3D"arial, sans-serif">=C2=A0and </font><font face=3D"monospace= ">gamma()</font><font face=3D"arial, sans-serif">, which I imagine is becau= se all of these functions call on each other in various circumstances and b= ecause the (now undefined) exclamation=C2=A0mark seems to be in the source = code itself:<br><br></font><font face=3D"monospace">(%i5) infix("!&quo= t;);<br>(%o5) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!<br>(%i6) "= ;!"(x):=3D x*%i;<br>(%o6) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0("!"(x)) :=3D x %= i<br>(%i7) factorial(1b0);<br>C:/maxima-5.49.0/share/maxima/5.49.0/share/nu= meric/bffac.mac:30:29:incorrect syntax: Illegal use of delimiter )<br>=C2= =A0/bfloat(%pi*(s-1)!)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 ^<br><br>(%i8) prefix("!");<br>(%o8) =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!<br>(%i9) factorial(1b0);<br>C:/maxima-5.49= .0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incorrect syntax: Ille= gal use of delimiter )<br>=C2=A0/bfloat(%pi*(s-1)!)<br>=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^<br><br>(%i10) erf(1b0);<br>C:/= maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incorrect s= yntax: Illegal use of delimiter )<br>=C2=A0/bfloat(%pi*(s-1)!)<br>=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^<br><br>(%i11) gam= ma(1b0);<br>C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30= :29:incorrect syntax: Illegal use of delimiter )<br>=C2=A0/bfloat(%pi*(s-1)= !)</font><font face=3D"arial, sans-serif"><br><br>There's no definiton = of factorial built in with Common Lisp as near as I can tell, which makes m= e think it must be defined in numeric/bffac.mac=C2=A0with the use of the ex= clamation mark. Perhaps then my "problem" here could be fixed if = I were familiar enough with Lisp to be able to mess around with the file re= ally confidently. I haven't reached that point though, so using another= character for my operator should work well enough, at least for the time b= eing.<br><br>Thanks again for all the help!<br>Astrea</font></div></div></d= iv></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_att= r">On Tue, Jul 21, 2026 at 7:01=E2=80=AFPM Richard Fateman <<a href=3D"m= ailto:[email protected]" target=3D"_blank">[email protected]</a>> wrote:= <br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8= ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr= "><div dir=3D"ltr"><div style=3D"font-family:arial,sans-serif;font-size:sma= ll">The printing (and scanning?)=C2=A0 of bigfloats is done by code in src/= float.lisp</div><div style=3D"font-family:arial,sans-serif;font-size:small"= >It is not likely that searching for #\b=C2=A0 will do the job, since the f= ile seems to</div><div style=3D"font-family:arial,sans-serif;font-size:smal= l">have |b|, also.=C2=A0 =C2=A0It may be possible to wrap up one program,= =C2=A0 fpformat so that</div><div style=3D"font-family:arial,sans-serif;fon= t-size:small">after it produces a list of characters you can substitute p f= or b in that list.=C2=A0 =C2=A0I don't know</div><div style=3D"font-fam= ily:arial,sans-serif;font-size:small">if all the front ends use the same fo= rmatting program.=C2=A0 I hope they do..</div><div style=3D"font-family:ari= al,sans-serif;font-size:small">It is possible that some of this code was co= pied into displa.lisp.=C2=A0 I haven't checked.</div><div style=3D"font= -family:arial,sans-serif;font-size:small">RJF</div><div style=3D"font-famil= y:arial,sans-serif;font-size:small"><br></div><div style=3D"font-family:ari= al,sans-serif;font-size:small"><br></div></div><br><div class=3D"gmail_quot= e"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Jul 21, 2026 at 3:35=E2=80= =AFPM Robert Dodier <<a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a>> wrote:<br></div><blockquote cla= ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid = rgb(204,204,204);padding-left:1ex">Glad to hear the bit about the "!&q= uot; operator is working for you. About<br> changing the bigfloat parser, I looked at src/nparse.lisp and I<br> believe that is indeed the file which contains the bigfloat parser, so<br> that is the one to modify.<br> <br> I guess you would also want to make the corresponding changes for the<br> display code. Maxima has two display modes, one is called the 2-d<br> pretty printer and the other is the 1-d non-pretty-printer. The pretty<br> printer is in src/displa.lisp (note that's displa, not display) and<br> the non-pretty printer is in src/grind.liap. Again, you would search<br> for #\B and/or #\b and replace them with #\P or #\p.<br> <br> Hope this helps,<br> <br> Robert<br> <br> <br> _______________________________________________<br> Maxima-discuss mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">M= [email protected]</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/maxima-discuss" rel= =3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/listi= nfo/maxima-discuss</a><br> </blockquote></div></div> </blockquote></div> </blockquote></div> </blockquote></div> </blockquote></div> </blockquote></div> </blockquote></div></div> </div> </blockquote></div> --00000000000050ae8f0657a101e4-- --===============3248666865910835785== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --===============3248666865910835785== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Maxima-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/maxima-discuss --===============3248666865910835785==--