Re: Some questions: built-in operators and exponent markers
Astrea Drifter <[email protected]> Sat, 25 Jul 2026 16:29:17 -0600
| Newsgroups | gmane.comp.mathematics.maxima.general |
|---|---|
| Message-ID | <CADZFxcke7+4FDxEXQ009gfednCy_oHUPqnfOwpLk+iAe3E3ZSQ@mail.gmail.com> |
--===============8709848883172983385==
Content-Type: multipart/alternative; boundary="00000000000086242706577726e2"
--00000000000086242706577726e2
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
>
> 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:incorrec=
t
> 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 the
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 display
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]>=
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@gm=
ail.com>
> wrote:
>
>> I've managed to confirm that the problem is in the edited src/nparse.lis=
p
>> and not in the edited src\float.lisp.
>>
>> On Sat, Jul 25, 2026 at 1:04=E2=80=AFPM Astrea Drifter <astreadrifter@gm=
ail.com>
>> wrote:
>>
>>> An update:
>>> After some investigation, I've discovered it's not only the redefinitio=
n
>>> of the exclamation mark that makes factorial() and related functions
>>> unusable. The files I edited to replace the exponent markers have the s=
ame
>>> effect, and this time I have no idea what could be causing it. This eff=
ect
>>> 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 <astreadrifter@=
gmail.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, fpforma=
t
>>>>> 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 marker=
s
>>>> without any trouble!
>>>> Funnily enough I discovered an issue with my exclamation mark operator=
,
>>>> which earlier I thought was working perfectly, and it seemed interesti=
ng
>>>> 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() an=
d
>>>> 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:inc=
orrect
>>>> 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:inc=
orrect
>>>> 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:inc=
orrect
>>>> 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:inc=
orrect
>>>> 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 m=
y
>>>> "problem" here could be fixed if I were familiar enough with Lisp to b=
e
>>>> able to mess around with the file really confidently. I haven't reache=
d
>>>> that point though, so using another character for my operator should w=
ork
>>>> 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@gmail=
.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, fpforma=
t
>>>>> 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 <robert.dodier@=
gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Glad to hear the bit about the "!" operator is working for you. Abou=
t
>>>>>> 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 th=
e
>>>>>> 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 pret=
ty
>>>>>> 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 search
>>>>>> 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
>>>>>>
>>>>>
--00000000000086242706577726e2
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">what do you mea=
n</div><span class=3D"gmail-im"><div class=3D"gmail_default" style=3D"font-=
family:arial,sans-serif">"<span style=3D"font-family:Arial,Helvetica,s=
ans-serif;background-color:transparent">I lost the ability to call</span><s=
pan style=3D"font-family:Arial,Helvetica,sans-serif;background-color:transp=
arent">=C2=A0</span><font face=3D"monospace" style=3D"background-color:tran=
sparent">factorial()"</font></div><div class=3D"gmail_default" style=
=3D"font-family:arial,sans-serif"><font face=3D"monospace" style=3D"backgro=
und-color:transparent"><br></font></div></span><div class=3D"gmail_default"=
style=3D"font-family:arial,sans-serif">What happens when you type factoria=
l(5)?</div></blockquote><div><br>Here's an example session. I can 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></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 '$! 'mheader)</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"><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">(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 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 rgb(204,204,204);padding-left:1ex"><fo=
nt face=3D"monospace">(%i1) :lisp (remprop '$! 'led)</font></blockq=
uote><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"><font face=3D"monosp=
ace"><br></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">(LED #<FUNCTION PARSE-POSTFIX>)</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">(%i1) infix("!");</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">(%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"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex"><font face=3D"monospace">(%i2) "!"(=
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-lef=
t: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><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"><font face=3D"monospace">(%i3) factorial(5);</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">(%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><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">(%i4) factori=
al(5b0);</font></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"><font face=3D"monospace">C:/maxima-5.49.0/share/maxima/5.49.0/share/nume=
ric/bffac.mac:30:29:incorrect syntax: Illegal use of delimiter )</font></bl=
ockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><font face=3D"mo=
nospace">=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(20=
4,204,204);padding-left:1ex"><font face=3D"monospace"><span style=3D"backgr=
ound-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 d=
ifferent character for my operator, but if I also attempt to change the exp=
onent 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 gener=
ates an extremely long list of style warnings when I load the edited files.=
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 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.<br></div><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"font-family:=
arial,sans-serif;background-color:transparent">Changing the meaning of &quo=
t;!" and the marker for bigfloats is possible, as you see, but changes=
</span></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">like =
that typically do not much advance one's ability to get things done.=C2=
=A0</blockquote><blockquote style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex" class=3D"gmail_quote">=C2=A0Hum=
ans are very flexible and can=C2=A0<span style=3D"background-color:transpar=
ent">learn new notations rather quickly.</span></blockquote><div>=C2=A0</di=
v><div>I apologize if I've strained anyone's patience here, and I&#=
39;m certainly under no illusion that I'm entitled to further answers o=
n 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'm well aware that this is an un=
usual goal for me to pursue in and of itself; I've been doing this for =
fun.<br>Perhaps this was not the right place for me to be seeking help, and=
if not, I apologize for that as well.<br>Astrea</div></div></div></div><br=
><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D=
"gmail_attr">On Sat, Jul 25, 2026 at 2:32=E2=80=AFPM Richard Fateman <<a=
href=3D"mailto:[email protected]">[email protected]</a>> wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div c=
lass=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:smal=
l">what do you mean</div><div class=3D"gmail_default" style=3D"font-family:=
arial,sans-serif;font-size:small">"<span style=3D"font-family:Arial,He=
lvetica,sans-serif;background-color:transparent">I lost the ability to call=
</span><span style=3D"font-family:Arial,Helvetica,sans-serif;background-col=
or:transparent">=C2=A0</span><font face=3D"monospace" style=3D"background-c=
olor:transparent">factorial()"</font></div><div class=3D"gmail_default=
" style=3D"font-family:arial,sans-serif;font-size:small"><font face=3D"mono=
space" style=3D"background-color:transparent"><br></font></div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">W=
hat happens when you type factorial(5)?</div><div class=3D"gmail_default" s=
tyle=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">T=
here is a program inside Maxima that is the integer factorial program. You =
can call it by</div><div class=3D"gmail_default" style=3D"font-family:arial=
,sans-serif;font-size:small">?factorial(5);</div><div class=3D"gmail_defaul=
t" style=3D"font-family:arial,sans-serif;font-size:small"><br></div><div cl=
ass=3D"gmail_default" 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 class=3D"gmail_default" style=3D"font-family:arial,sans-serif;fo=
nt-size:small">:lisp (apropos "factorial")</div><div class=3D"gma=
il_default" style=3D"font-family:arial,sans-serif;font-size:small"><br></di=
v><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-s=
ize:small">Changing the meaning of "!" and the marker for bigfloa=
ts is possible, as you see, but changes</div><div class=3D"gmail_default" s=
tyle=3D"font-family:arial,sans-serif;font-size:small">like that typically d=
o not much advance one's ability to get things done.=C2=A0</div><div cl=
ass=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small=
">=C2=A0Humans are very flexible and can=C2=A0<span style=3D"background-col=
or:transparent">learn new notations rather quickly.</span></div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small"><=
span style=3D"background-color:transparent">=C2=A0</span></div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">L=
earning lisp may be of some use.</div><div class=3D"gmail_default" style=3D=
"font-family:arial,sans-serif;font-size:small"><br></div><div class=3D"gmai=
l_default" style=3D"font-family:arial,sans-serif;font-size:small">If you ch=
ange one function definition, you can put that in a file with</div><div cla=
ss=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-ser=
if;font-size:small">(in-package :maxima)=C2=A0 at the top.</div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">j=
ust read that file in.</div><div class=3D"gmail_default" style=3D"font-fami=
ly:arial,sans-serif;font-size:small">Compilation is not necessary.</div><di=
v class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:s=
mall"><br></div><div class=3D"gmail_default" style=3D"font-family:arial,san=
s-serif;font-size:small">good luck</div><div class=3D"gmail_default" style=
=3D"font-family:arial,sans-serif;font-size:small">RJF</div><div class=3D"gm=
ail_default" style=3D"font-family:arial,sans-serif;font-size:small"><br></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"><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 <<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">I'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>> 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'=
ve discovered it'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 <=
;<a href=3D"mailto:[email protected]" target=3D"_blank">astreadrifter=
@gmail.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=
-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 class=3D"gmail_default" style=3D"font-family:arial,sans-serif">The =
printing (and scanning?)=C2=A0 of bigfloats is done by code in src/float.li=
sp</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif"=
>It is not likely that searching for #\b=C2=A0 will do the job, since the f=
ile seems to</div><div class=3D"gmail_default" style=3D"font-family:arial,s=
ans-serif">have |b|, also.=C2=A0 =C2=A0It may be possible to wrap up one pr=
ogram,=C2=A0 fpformat so that</div><div class=3D"gmail_default" style=3D"fo=
nt-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't know</div><div cla=
ss=3D"gmail_default" style=3D"font-family:arial,sans-serif">if all the fron=
t ends use the same formatting program.=C2=A0 I hope they do..</div><div cl=
ass=3D"gmail_default" style=3D"font-family:arial,sans-serif">It is possible=
that some of this code was copied into displa.lisp.=C2=A0 I haven't ch=
ecked.</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-se=
rif">RJF</div></blockquote><div><br>I actually discovered src/float.lisp so=
me 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 markers without any trouble!<br>Funnily enough I discovered an iss=
ue with my exclamation mark operator, which earlier I thought was working p=
erfectly, and it seemed interesting enough to mention here:<br><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"><div style=3D"color:rgb(0,0,0)"><=
font face=3D"arial, sans-serif">If you are open to an option to redefining =
"!", you might experiment with (or replace "~" with you=
r favorite character)</font></div><div style=3D"color:rgb(0,0,0)"><font fac=
e=3D"arial, sans-serif"><br></font></div><div style=3D"color:rgb(0,0,0)"><f=
ont face=3D"arial, sans-serif">(%i1) prefix("~")$</font></div><di=
v 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">(%i2) =
"~"(x) :=3D %i*x$</font></div><div style=3D"color:rgb(0,0,0)"><fo=
nt 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 cla=
ss=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-color:tr=
ansparent">You might consider using an otherwise-undefined operator, such a=
s "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"marg=
in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e=
x">postfix ("i");</blockquote><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">x i :=3D x * %i;</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"><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">x i;</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> 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></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">100;</blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0=
px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">=C2=
=A0=3D> 100*%i</blockquote><div><br>After I had removed "!" fr=
om the list of builtin operators, I lost the ability to call <font face=3D"=
monospace">factorial()</font><font face=3D"arial, sans-serif">=C2=A0as well=
as related functions like </font><font face=3D"monospace">erf()</font><fon=
t face=3D"arial, sans-serif">=C2=A0and </font><font face=3D"monospace">gamm=
a()</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) exclamation=C2=A0mark seems to be in the source code i=
tself:<br><br></font><font face=3D"monospace">(%i5) infix("!");<b=
r>(%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/numeric/b=
ffac.mac:30:29:incorrect syntax: Illegal use of delimiter )<br>=C2=A0/bfloa=
t(%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/shar=
e/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/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>(%i11) gamma(1b0)=
;<br>C:/maxima-5.49.0/share/maxima/5.49.0/share/numeric/bffac.mac:30:29:inc=
orrect syntax: Illegal use of delimiter )<br>=C2=A0/bfloat(%pi*(s-1)!)</fon=
t><font face=3D"arial, sans-serif"><br><br>There's no definiton of fact=
orial 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 exclamati=
on 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 co=
nfidently. I haven't reached that point though, so using another charac=
ter for my operator should work well enough, at least for the time being.<b=
r><br>Thanks again for all the help!<br>Astrea</font></div></div></div></di=
v><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On T=
ue, Jul 21, 2026 at 7:01=E2=80=AFPM Richard Fateman <<a href=3D"mailto:f=
[email protected]" target=3D"_blank">[email protected]</a>> wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div =
dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:arial,sans-se=
rif;font-size:small">The printing (and scanning?)=C2=A0 of bigfloats is don=
e by code in src/float.lisp</div><div class=3D"gmail_default" style=3D"font=
-family:arial,sans-serif;font-size:small">It is not likely that searching f=
or #\b=C2=A0 will do the job, since the file seems to</div><div class=3D"gm=
ail_default" style=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 fpfor=
mat so that</div><div class=3D"gmail_default" style=3D"font-family:arial,sa=
ns-serif;font-size:small">after it produces a list of characters you can su=
bstitute p for b in that list.=C2=A0 =C2=A0I don't know</div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">i=
f all the front ends use the same formatting program.=C2=A0 I hope they do.=
.</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;f=
ont-size:small">It is possible that some of this code was copied into displ=
a.lisp.=C2=A0 I haven't checked.</div><div class=3D"gmail_default" styl=
e=3D"font-family:arial,sans-serif;font-size:small">RJF</div><div class=3D"g=
mail_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"><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 Dodie=
r <<a href=3D"mailto:[email protected]" target=3D"_blank">robert.d=
[email protected]</a>> wrote:<br></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">Glad to hear the bit about the "!" operator is wor=
king 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>
--00000000000086242706577726e2--
--===============8709848883172983385==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============8709848883172983385==
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
--===============8709848883172983385==--