Re: Some questions: built-in operators and exponent markers

Richard Fateman <[email protected]> Sat, 25 Jul 2026 19:02:41 -0700
Newsgroups gmane.comp.mathematics.maxima.general
Message-ID <CADB8Zm7pWPKFEJbTOCE3SKxHt4xSvKHMS_MUCL27Ftdoa1zYFA@mail.gmail.com>
--===============6164347628830258843==
Content-Type: multipart/alternative; boundary="000000000000f023f606577a00ec"

--000000000000f023f606577a00ec
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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@gmail=
.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:incorr=
ect
>> syntax: Illegal use of delimiter )
>
>  /bfloat(%pi*(s-1)!)
>
>                   ^
>
>
>  If I use a different character for my operator, but if I also attempt to
> change the exponent markers (by loading my edited source 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 warnings when I load th=
e
> 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 i=
t
> 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 displa=
y
> 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]=
m> 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 this=
:
>> :lisp (apropos "factorial")
>>
>> 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.
>>
>> 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@g=
mail.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@g=
mail.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 exponent
>>>> 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 in
>>>>>> 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 marke=
rs
>>>>> without any trouble!
>>>>> Funnily enough I discovered an issue with my exclamation mark
>>>>> operator, which earlier I thought was working perfectly, and it seeme=
d
>>>>> 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 th=
e
>>>>> ability to call factorial() as well as related functions like erf() a=
nd
>>>>> gamma(), which I imagine is because all of these functions call on
>>>>> each other in various circumstances and because the (now undefined)
>>>>> 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:in=
correct
>>>>> 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:in=
correct
>>>>> 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:in=
correct
>>>>> 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:in=
correct
>>>>> syntax: Illegal use of delimiter )
>>>>>  /bfloat(%pi*(s-1)!)
>>>>>
>>>>> There's no definiton of factorial built in with Common Lisp as near a=
s
>>>>> 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 reach=
ed
>>>>> 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@gmai=
l.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 in
>>>>>> 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. Abo=
ut
>>>>>>> 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 t=
he
>>>>>>> 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) and
>>>>>>> the non-pretty printer is in src/grind.liap. Again, you would searc=
h
>>>>>>> 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
>>>>>>>
>>>>>>

--000000000000f023f606577a00ec
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_defa=
ult" style=3D"font-family:arial,sans-serif;font-size:small">I can&#39;t rep=
roduce your error. I get the right answer for factorial(5b0).</div><div cla=
ss=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small"=
>However,</div><div class=3D"gmail_default" style=3D"font-family:arial,sans=
-serif;font-size:small"><blockquote class=3D"gmail_quote" style=3D"font-fam=
ily:Arial,Helvetica,sans-serif;margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex"><font face=3D"monospace">(%i1) infix(=
&quot;!&quot;);</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">=
(%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><bloc=
kquote class=3D"gmail_quote" style=3D"font-family:Arial,Helvetica,sans-seri=
f;margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-l=
eft:1ex"><font face=3D"monospace">(%i2) &quot;!&quot;(x):=3D x*%i;</font></=
blockquote><blockquote class=3D"gmail_quote" style=3D"font-family:Arial,Hel=
vetica,sans-serif;margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,20=
4,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(&=
quot;!&quot;(x)) :=3D x %i</font></blockquote></div><div class=3D"gmail_def=
ault" 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:sm=
all">is wrong. an infix operator needs TWO arguments.=C2=A0=C2=A0</div><div=
 class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:sm=
all">You might try postfix(&quot;!&quot;).</div><div class=3D"gmail_default=
" style=3D"font-family:arial,sans-serif;font-size:small"><br></div><div cla=
ss=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small"=
>Next,=C2=A0 you appear to be reading into Maxima some file bffac.mac. I do=
n&#39;t know why..</div><div class=3D"gmail_default" style=3D"font-family:a=
rial,sans-serif;font-size:small">Presumably that file uses &quot;!&quot;,=
=C2=A0 but you have incorrectly defined that.</div><div class=3D"gmail_defa=
ult" 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:sma=
ll">Furthermore, please do not edit and compile a whole file if you are cha=
nging one definition.</div><div class=3D"gmail_default" style=3D"font-famil=
y:arial,sans-serif;font-size:small">Just read that definition.</div><div cl=
ass=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small=
">Then you won&#39;t have irrelevant warning messages.=C2=A0 In fact, if yo=
u are explicitly compiling something,</div><div class=3D"gmail_default" sty=
le=3D"font-family:arial,sans-serif;font-size:small">dont. just load in the =
file.</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-ser=
if;font-size:small"><br></div><div class=3D"gmail_default" style=3D"font-fa=
mily:arial,sans-serif;font-size:small">You are trying to do something that =
you need not do at all, if you just use the syntax and</div><div class=3D"g=
mail_default" style=3D"font-family:arial,sans-serif;font-size:small">functi=
onal definitions as given, and not bend things.=C2=A0 =C2=A0</div><div clas=
s=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">=
Good luck.</div><div class=3D"gmail_default" style=3D"font-family:arial,san=
s-serif;font-size:small"><br></div><div class=3D"gmail_default" style=3D"fo=
nt-family:arial,sans-serif;font-size:small">RJF</div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jul 25, 2026=
 at 3:38=E2=80=AFPM Astrea Drifter &lt;<a href=3D"mailto:astreadrifter@gmai=
l.com" target=3D"_blank">[email protected]</a>&gt; wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><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 style=3D"font-family:arial,san=
s-serif">what do you mean</div><span><div style=3D"font-family:arial,sans-s=
erif">&quot;<span style=3D"font-family:Arial,Helvetica,sans-serif;backgroun=
d-color:transparent">I lost the ability to call</span><span style=3D"font-f=
amily:Arial,Helvetica,sans-serif;background-color:transparent">=C2=A0</span=
><font face=3D"monospace" style=3D"background-color:transparent">factorial(=
)&quot;</font></div><div style=3D"font-family:arial,sans-serif"><font face=
=3D"monospace" style=3D"background-color:transparent"><br></font></div></sp=
an><div style=3D"font-family:arial,sans-serif">What happens when you type f=
actorial(5)?</div></blockquote><div><br>Here&#39;s an example session. I ca=
n make <font face=3D"monospace">factorial()</font><font face=3D"arial, sans=
-serif">=C2=A0work for integers and floats, but not bigfloats:=C2=A0<br></f=
ont><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"mon=
ospace">(%i1) :lisp (remprop &#39;$! &#39;mheader)</font></blockquote><bloc=
kquote 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"><br><=
/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">(MHEADER (MFACTORIAL) LPOS $EXPR POS $EXPR LBP 160 LED</=
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 f=
ace=3D"monospace">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#&lt;FUNCTION PARSE-POS=
TFIX&gt;)</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">(%i1) :lisp (remprop &#39;$! &#39;led)</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"><br></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">(LED #&lt;FUNCTION PARSE-POSTFIX&gt;)</=
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 f=
ace=3D"monospace">(%i1) infix(&quot;!&quot;);</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">(%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 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"><font face=3D"monospace">(%i2) &quot;!=
&quot;(x):=3D x*%i;</font></blockquote><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-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(&quot;!&quot=
;(x)) :=3D x %i</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">(%i3) factorial(5);</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">=
(%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 120</font></blockquote><blockquo=
te 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">(%i4) fac=
torial(5b0);</font></blockquote><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex"><font face=3D"monospace">C:/maxima-5.49.0/share/maxima/5.49.0/share/=
numeric/bffac.mac:30:29:incorrect syntax: Illegal use of delimiter )</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">=C2=A0/bfloat(%pi*(s-1)!)</font></blockquote><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"><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></blockquote><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 source files) I get the same situat=
ion as before. I haven&#39;t pasted it into the email because the session g=
enerates an extremely long list of style warnings when I load the edited fi=
les. The only way I know how to make <font face=3D"monospace">factorial()</=
font> work for bigfloats too is if I abandon this project and leave everyth=
ing the way it was, and barring any further help I&#39;ll probably do just =
that, at least until I can learn more Lisp some day.<br></div><div><br><blo=
ckquote 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"font-fam=
ily:arial,sans-serif;background-color:transparent">Changing the meaning of =
&quot;!&quot; and the marker for bigfloats is possible, as you see, but cha=
nges</span></blockquote><blockquote style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex" class=3D"gmail_quote">l=
ike that typically do not much advance one&#39;s ability to get things done=
.=C2=A0</blockquote><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex" class=3D"gmail_quote">=C2=
=A0Humans are very flexible and can=C2=A0<span style=3D"background-color:tr=
ansparent">learn new notations rather quickly.</span></blockquote><div>=C2=
=A0</div><div>I apologize if I&#39;ve strained anyone&#39;s patience here, =
and I&#39;m certainly under no illusion that I&#39;m entitled to further an=
swers 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 i=
s an unusual goal for me to pursue in and of itself; I&#39;ve been doing th=
is for fun.<br>Perhaps this was not the right place for me to be seeking he=
lp, and if not, I apologize for that as well.<br>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 Fateman &lt;<a href=3D"mailto=
:[email protected]" target=3D"_blank">[email protected]</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v style=3D"font-family:arial,sans-serif;font-size:small">what do you mean</=
div><div style=3D"font-family:arial,sans-serif;font-size:small">&quot;<span=
 style=3D"font-family:Arial,Helvetica,sans-serif;background-color:transpare=
nt">I lost the ability to call</span><span style=3D"font-family:Arial,Helve=
tica,sans-serif;background-color:transparent">=C2=A0</span><font face=3D"mo=
nospace" style=3D"background-color:transparent">factorial()&quot;</font></d=
iv><div style=3D"font-family:arial,sans-serif;font-size:small"><font face=
=3D"monospace" style=3D"background-color:transparent"><br></font></div><div=
 style=3D"font-family:arial,sans-serif;font-size:small">What happens when y=
ou type factorial(5)?</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">There is a program inside Maxima that is the integer factorial progr=
am. You can call it by</div><div style=3D"font-family:arial,sans-serif;font=
-size:small">?factorial(5);</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">There are various other programs, which you can see listed by =
doing this:</div><div style=3D"font-family:arial,sans-serif;font-size:small=
">:lisp (apropos &quot;factorial&quot;)</div><div style=3D"font-family:aria=
l,sans-serif;font-size:small"><br></div><div style=3D"font-family:arial,san=
s-serif;font-size:small">Changing the meaning of &quot;!&quot; and the mark=
er for bigfloats is possible, as you see, but changes</div><div style=3D"fo=
nt-family:arial,sans-serif;font-size:small">like that typically do not much=
 advance one&#39;s ability to get things done.=C2=A0</div><div style=3D"fon=
t-family:arial,sans-serif;font-size:small">=C2=A0Humans are very flexible a=
nd can=C2=A0<span style=3D"background-color:transparent">learn new notation=
s rather quickly.</span></div><div style=3D"font-family:arial,sans-serif;fo=
nt-size:small"><span style=3D"background-color:transparent">=C2=A0</span></=
div><div style=3D"font-family:arial,sans-serif;font-size:small">Learning li=
sp may be of some use.</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">If you change one function definition, you can put that in a file w=
ith</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:ar=
ial,sans-serif;font-size:small">Compilation is not necessary.</div><div sty=
le=3D"font-family:arial,sans-serif;font-size:small"><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-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 Sat, Jul 25, 2026 at 12:18=E2=
=80=AFPM Astrea Drifter &lt;<a href=3D"mailto:[email protected]" targ=
et=3D"_blank">[email protected]</a>&gt; 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">I&#39;ve managed to c=
onfirm that the problem is in the edited src/nparse.lisp and not in the edi=
ted src\float.lisp.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" cl=
ass=3D"gmail_attr">On Sat, Jul 25, 2026 at 1:04=E2=80=AFPM Astrea Drifter &=
lt;<a href=3D"mailto:[email protected]" target=3D"_blank">astreadrift=
[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr">An update:<br>After some investigation, I&#39;=
ve discovered it&#39;s not only the redefinition of the exclamation mark th=
at makes <font face=3D"monospace">factorial()</font><font face=3D"arial, sa=
ns-serif">=C2=A0and related functions unusable. The files I edited to repla=
ce the exponent markers have the same effect, and this time I have no idea =
what could be causing it. This effect is less widespread (affects bigfloats=
=C2=A0only, I can use=C2=A0</font><font face=3D"monospace">factorial()</fon=
t><font face=3D"arial, sans-serif">=C2=A0with integers and regular floats) =
but since I never do calculations with anything other than bigfloats=C2=A0t=
he net effect is the same for me.<br>The only changes I made to the files w=
as to replace #\B with #\P, #\b with #\p (in src\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_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Sat, Jul 25, 2026 at 12:19=E2=80=AFPM Astrea Drifter &lt=
;<a href=3D"mailto:[email protected]" target=3D"_blank">astreadrifter=
@gmail.com</a>&gt; 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=
-left:1ex"><div dir=3D"ltr"><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"><div style=3D"font-family:arial,sans-serif">The printing (and scanning?)=
=C2=A0 of bigfloats is done by code in src/float.lisp</div><div style=3D"fo=
nt-family:arial,sans-serif">It is not likely that searching for #\b=C2=A0 w=
ill do the job, since the file seems to</div><div style=3D"font-family:aria=
l,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 you can substitute p for b in=
 that list.=C2=A0 =C2=A0I don&#39;t know</div><div style=3D"font-family:ari=
al,sans-serif">if all the front ends use the same formatting program.=C2=A0=
 I hope they do..</div><div style=3D"font-family:arial,sans-serif">It is po=
ssible that some of this code was copied into displa.lisp.=C2=A0 I haven&#3=
9;t checked.</div><div style=3D"font-family:arial,sans-serif">RJF</div></bl=
ockquote><div><br>I actually discovered src/float.lisp some weeks ago, whil=
e looking through the files on my own, and after editing that as well as sr=
c/nparse.lisp it seems I&#39;ve been able to replace the exponent markers w=
ithout any trouble!<br>Funnily enough I discovered an issue with my exclama=
tion mark operator, which earlier I thought was working perfectly, and it s=
eemed 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 redefining &quot;!&quot;, you=
 might experiment with (or replace &quot;~&quot; with your favorite charact=
er)</font></div><div style=3D"color:rgb(0,0,0)"><font face=3D"arial, sans-s=
erif"><br></font></div><div style=3D"color:rgb(0,0,0)"><font face=3D"arial,=
 sans-serif">(%i1) prefix(&quot;~&quot;)$</font></div><div style=3D"color:r=
gb(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">(%i2) &quot;~&quot;(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><div 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><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex">=C2=A0<span style=3D"background-color:transparent">You might c=
onsider using an otherwise-undefined operator, such as &quot;i&quot;.</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></block=
quote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex">postfix (&quot;i&qu=
ot;);</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"gmail_quote" style=3D"margin:0=
px 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 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">x i;</blo=
ckquote><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&gt; 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"><br></block=
quote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex">100;</blockquote><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex">=C2=A0=3D&gt; 100*%i</block=
quote><div><br>After I had removed &quot;!&quot; from the list of builtin o=
perators, I lost the ability to call <font face=3D"monospace">factorial()</=
font><font face=3D"arial, sans-serif">=C2=A0as well as related functions li=
ke </font><font face=3D"monospace">erf()</font><font face=3D"arial, sans-se=
rif">=C2=A0and </font><font face=3D"monospace">gamma()</font><font face=3D"=
arial, sans-serif">, which I imagine is because all of these functions call=
 on each other in various circumstances and because the (now undefined) exc=
lamation=C2=A0mark seems to be in the source code itself:<br><br></font><fo=
nt face=3D"monospace">(%i5) infix(&quot;!&quot;);<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) &quot;!&quot;(x):=3D x*%i;<br>(%o=
6) =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(&quot;!&quot;(x)) :=3D x %i<br>(%i7) factorial(1b0);<b=
r>C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incorr=
ect 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(&quot;!&quot;);<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: 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>(%i10) erf(1b0);<br>C:/maxima-5.49.0/share/maxim=
a/5.49.0/share/numeric/bffac.mac:30:29:incorrect syntax: Illegal use of del=
imiter )<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) gamma(1b0);<br>C:/maxima-5.49.=
0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:incorrect syntax: Illeg=
al use of delimiter )<br>=C2=A0/bfloat(%pi*(s-1)!)</font><font face=3D"aria=
l, sans-serif"><br><br>There&#39;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=C2=A0with the use of the exclamation mark. Perhaps the=
n my &quot;problem&quot; here could be fixed if I were familiar enough with=
 Lisp to be able to mess around with the file really confidently. I haven&#=
39;t reached that point though, so using another character for my operator =
should work well enough, at least for the time being.<br><br>Thanks again f=
or all the help!<br>Astrea</font></div></div></div></div><br><div class=3D"=
gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Jul 21, 2026 at =
7:01=E2=80=AFPM Richard Fateman &lt;<a href=3D"mailto:[email protected]" ta=
rget=3D"_blank">[email protected]</a>&gt; wrote:<br></div><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"><div dir=3D"ltr"><div dir=3D"ltr"><div sty=
le=3D"font-family:arial,sans-serif;font-size:small">The printing (and scann=
ing?)=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 sea=
rching for #\b=C2=A0 will do the job, since the file seems to</div><div sty=
le=3D"font-family:arial,sans-serif;font-size:small">have |b|, also.=C2=A0 =
=C2=A0It may be possible to wrap up one program,=C2=A0 fpformat so that</di=
v><div style=3D"font-family:arial,sans-serif;font-size:small">after it prod=
uces a list of characters you can substitute p for b in that list.=C2=A0 =
=C2=A0I don&#39;t know</div><div style=3D"font-family:arial,sans-serif;font=
-size:small">if all the front ends use the same formatting program.=C2=A0 I=
 hope they do..</div><div style=3D"font-family:arial,sans-serif;font-size:s=
mall">It is possible that some of this code was copied into displa.lisp.=C2=
=A0 I haven&#39;t checked.</div><div style=3D"font-family:arial,sans-serif;=
font-size:small">RJF</div><div style=3D"font-family:arial,sans-serif;font-s=
ize:small"><br></div><div style=3D"font-family:arial,sans-serif;font-size:s=
mall"><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Tue, Jul 21, 2026 at 3:35=E2=80=AFPM Robert Dodier &lt;<=
a href=3D"mailto:[email protected]" target=3D"_blank">robert.dodier@g=
mail.com</a>&gt; 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">Glad to hear the bit about the &quot;!&quot; operator is working fo=
r 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&#39;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>

--000000000000f023f606577a00ec--


--===============6164347628830258843==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============6164347628830258843==
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

--===============6164347628830258843==--