Re: Charsets
David Scherfgen via Maxima-discuss <[email protected]> Sun, 2 Aug 2026 19:33:43 +0200
| Newsgroups | gmane.comp.mathematics.maxima.general |
|---|---|
| Message-ID | <CAMTHLKhFkTc5krxThsBU_DNFOOPfSHCF_fSa9fYE45ycbhyezw@mail.gmail.com> |
--000000000000f853f0065813d444
Content-Type: multipart/alternative; boundary="000000000000f853ee065813d442"
--000000000000f853ee065813d442
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
This is what Claude has to say about the topic.
1) The Maple algorithm
lcoeff(p) is defined as lcoeff(p, indets(p)), and for a list or set of
variables the
Maple help says lcoeff(p, [x1,...,xn]) is equivalent to
lcoeff(...(lcoeff(p, x1),...), xn). So it is a pure lexicographic leading
coefficient (no total degree involved), and the FIRST element of indets(p)
is the
MOST significant variable. In a modern Maple, sets of names are kept in a
canonical
order: sorted by length of the name first, then alphabetically. For {x2,
x4} that
means x2 is the main variable.
That reproduces your and Viktor's Maple column on all 18 rows of your table
(verified programmatically).
2) What our port does
lcoeff in charsets_powers.lisp peels variables off left to right, exactly
like
Maple =E2=80=94 but the one-argument default (non-constant-ratvars) builds =
the
variable
list in REVERSE order, so lcoeff(p) treats the alphabetically greatest
variable
(x4) as most significant. That is the exact mirror image of Maple's order,
and it
reproduces the Maxima column of your table on all 18 rows. So both systems
compute
a legitimate "leading coefficient", just with opposite variable priority =
=E2=80=94
that one
reversal explains every N row.
The two-argument call sites in charsets.mac that pass ord (ascending,
[x1,x2,...])
are already equivalent to modern Maple's one-argument lcoeff; only the
one-argument
sites (pfactor, sfactor, factorps, dfactors, ...) use the mirrored order.
The attached small patch makes non-constant-ratvars sort the variables the
way
Maple sorts a set of names (length, then alphabetical). With it, our
one-argument
lcoeff matches Viktor's Maple column 18/18.
3) How much this matters at the line you isolated
At numer(p/lcoeff(p)) the lcoeff is taken with respect to all variables, so
it is a
number, and only its SIGN matters =E2=80=94 the magnitude always cancels (t=
he
result is the
primitive part of p times the sign of the leading coefficient). So the
entire
Maxima/Maple discrepancy at this line is per-polynomial sign flips, nothing
else.
Also verified on all 18 rows: 14 normalize identically, 4 differ by exactly
an
overall sign (the rows where the table signs differ).
4) A trap to be aware of: Maple V.3 vs modern Maple
The Maple help itself warns that one-argument lcoeff "may be session
dependent" in
the multivariate case. That is because before Maple 12, sets were ordered
by memory
address. Dr. Wang's expected outputs in test.mac (and Dr. Fateman's trace)
were
produced with Maple V.3 in 1996 =E2=80=94 with address-ordered sets. Some r=
ecorded
outputs
are provably not normalized the way any modern Maple would normalize them.
Example
from the test file: tests 21/23/25 record the component x4^2-x2*x4+3*x2,
but modern
Maple has lcoeff(x4^2-x2*x4+3*x2) =3D -1 (same pattern as lcoeff(-x4+x2) =
=3D 1
in
Viktor's table), so wherever numer(p/lcoeff(p)) runs, a modern Maple flips
that
sign. In other words: sign-for-sign agreement with the 1996 log is not
achievable =E2=80=94
not even by modern Maple. I suspect this is also why the interactive
"changesign"
helper ended up in charsets.mac.
So I'd suggest: take modern Maple as the reference (it is deterministic),
apply the
lcoeff patch, and ask Viktor to regenerate the 68 expected outputs with his
Maple.
Alternatively (or additionally), charsets_testsub could compare polynomials
up to
overall sign, which is mathematically justified for characteristic sets.
5) Test suite status
For calibration, Claude ran all 68 tests (not just known_good) before and
after the
patch, on the current git tree: 33 pass (the 29 known_good plus
52/55/56/57), 4
fail by comparison (23, 25, 31, 46), 24 error out (the ecs/mecs/ics/ivd/pid
family,
which hits unported algebraic-extension machinery), and 7 exceed a 5-minute
timeout. The patch changes none of these outcomes =E2=80=94 the currently f=
ailing
tests
fail for reasons beyond the one-argument lcoeff: 23/25/31 also produce extr=
a
components relative to the recorded outputs (6 instead of 4 in test 23),
which
looks like a separate branching issue worth investigating on its own.
One more detail for the future: for systems with ten or more variables,
Maple's
set order is length-first (x1, x2, x10 =E2=80=94 not x1, x10, x2). The patc=
h
implements
that too.
Am Sa., 1. Aug. 2026 um 00:31 Uhr schrieb Richard Fateman <[email protected]=
m
>:
> Historically, and maybe today (I don't have a current Maple system), the
> ordering of names
> in Maple was based on the order in which the names appeared.
> So the tests for Maple may be really rather simple.
> In a fresh Maple, print x1+x2+x3
> In another fresh Maple, print x3+x2+x1
> or maybe make up some more elaborate names to avoid any possible
> initialized orderings.
> In fact, the (way old) comparison of timings for certain operations in
> Maple vs others
> favored Maple, unless you insisted that some alphabetical ordering be
> asserted after
> the computation (on large expressions).
>
> This is maybe not a terrible heuristic if it is used and you know about
> it. It means that
> you can assert an ordering by mentioning names in some introductory
> expression, the
> way you want them.
> Have fun..
> RJF
>
>
> On Fri, Jul 31, 2026 at 1:45=E2=80=AFPM David Scherfgen via Maxima-discus=
s <
> [email protected]> wrote:
>
>> It seems like Maxima and Maple use different variable ordering, so for
>> multivariate polynomials they produce different answers. This doesn't me=
an
>> that either one is wrong. It's just a matter of definition.
>> Can you share the actual, full computation that gives a wrong result?
>>
>> Dan Stanger <[email protected]> schrieb am Fr., 31. Juli 2026,
>> 17:14:
>>
>>> Hello All,
>>> I isolated the issue with Charsets to one line in the code, where the
>>> current polynomial is divided by the leading coefficient and the numera=
tor
>>> used in the continuing calculation, to eliminate possible fractional
>>> coefficients in the polynomials. However Maples and Maximas leading
>>> coefficients produce different results. With Viktor's help I produced t=
he
>>> following table:
>>> Expression Maxima Maple Same
>>> print(lcoeff(-x1-2*x1*x2^2+(-x1^2)*x2-x3^2+x1*x2*x3)) -1 -1 Y
>>> print(lcoeff(2*x1^2*x2-2*x1*x2^2+(-2)*x1^2*x2^2-x1-x1^2)) -2 -2 Y
>>> print(lcoeff(1+3*x2*x3^2+(-x2)*x3+4*x2^2+(-2)*x2^3*x3+4*x2^4)) 3 4 N
>>> print(lcoeff(4*x2^3+4*x2^5+x2+(-4)*x4*x2^4+(-4)*x4*x2^2-x4)) -4 4 N
>>> print(lcoeff(1+8*x2^6+12*x2^4+6*x2^2)) 8 8 Y
>>> print(lcoeff(12*x2^5+12*x2^3+3*x2)) 12 12 Y
>>> print(lcoeff(-1-4*x2^4+(-4)*x2^2)) -4 -4 Y
>>> print(lcoeff(4*x2^4+4*x2^2+1)) 4 4 Y
>>> print(lcoeff(-2*x2^3-x2+x2^2*x3+x2^2)) 1 -2 N
>>> print(lcoeff(2*x2^4+x2^2+(-2)*x4*x2^3+(-x4)*x2+x4*x2^2-x2^3)) -2 2 N
>>> print(lcoeff(-4*x2^5-5*x2^3+4*x2^4-x2+2*x2^2)) -4 -4 Y
>>> print(lcoeff(4*x2^4+2*x2^2+(-2)*x2^3)) 4 4 Y
>>> print(lcoeff(-2*x2^3-x2+x2^2)) -2 -2 Y
>>> print(lcoeff(2*x2^3+x2-x2^2)) 2 2 Y
>>> print(lcoeff(2*x4*x2^2+x2-x2^2)) 2 2 Y
>>> print(lcoeff(-1+x3^2)) 1 1 Y
>>> print(lcoeff(-x4+x2)) -1 1 N
>>> print(lcoeff(-1-2*x2^2+x2)) -2 -2 Y
>>> Does anyone have time to take a look at this to try to determine the
>>> maple lcoeff algorithm?
>>> Dan Stanger
>>> _______________________________________________
>>> Maxima-discuss mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>>>
>> _______________________________________________
>> Maxima-discuss mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>>
>
--000000000000f853ee065813d442
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">This is what Claude has to say about the topic.<br><br>1) =
The Maple algorithm<br>=C2=A0<br>lcoeff(p) is defined as lcoeff(p, indets(p=
)), and for a list or set of variables the<br>Maple help says lcoeff(p, [x1=
,...,xn]) is equivalent to<br>lcoeff(...(lcoeff(p, x1),...), xn). So it is =
a pure lexicographic leading<br>coefficient (no total degree involved), and=
the FIRST element of indets(p) is the<br>MOST significant variable. In a m=
odern Maple, sets of names are kept in a canonical<br>order: sorted by leng=
th of the name first, then alphabetically. For {x2, x4} that<br>means x2 is=
the main variable.<br>=C2=A0<br>That reproduces your and Viktor's Mapl=
e column on all 18 rows of your table<br>(verified programmatically).<br>=
=C2=A0<br>2) What our port does<br>=C2=A0<br>lcoeff in charsets_powers.lisp=
peels variables off left to right, exactly like<br>Maple =E2=80=94 but the=
one-argument default (non-constant-ratvars) builds the variable<br>list in=
REVERSE order, so lcoeff(p) treats the alphabetically greatest variable<br=
>(x4) as most significant. That is the exact mirror image of Maple's or=
der, and it<br>reproduces the Maxima column of your table on all 18 rows. S=
o both systems compute<br>a legitimate "leading coefficient", jus=
t with opposite variable priority =E2=80=94 that one<br>reversal explains e=
very N row.<br>=C2=A0<br>The two-argument call sites in charsets.mac that p=
ass ord (ascending, [x1,x2,...])<br>are already equivalent to modern Maple&=
#39;s one-argument lcoeff; only the one-argument<br>sites (pfactor, sfactor=
, factorps, dfactors, ...) use the mirrored order.<br>=C2=A0<br>The attache=
d small patch makes non-constant-ratvars sort the variables the way<br>Mapl=
e sorts a set of names (length, then alphabetical). With it, our one-argume=
nt<br>lcoeff matches Viktor's Maple column 18/18.<br>=C2=A0<br>3) How m=
uch this matters at the line you isolated<br>=C2=A0<br>At numer(p/lcoeff(p)=
) the lcoeff is taken with respect to all variables, so it is a<br>number, =
and only its SIGN matters =E2=80=94 the magnitude always cancels (the resul=
t is the<br>primitive part of p times the sign of the leading coefficient).=
So the entire<br>Maxima/Maple discrepancy at this line is per-polynomial s=
ign flips, nothing else.<br>Also verified on all 18 rows: 14 normalize iden=
tically, 4 differ by exactly an<br>overall sign (the rows where the table s=
igns differ).<br>=C2=A0<br>4) A trap to be aware of: Maple V.3 vs modern Ma=
ple<br>=C2=A0<br>The Maple help itself warns that one-argument lcoeff "=
;may be session dependent" in<br>the multivariate case. That is becaus=
e before Maple 12, sets were ordered by memory<br>address. Dr. Wang's e=
xpected outputs in test.mac (and Dr. Fateman's trace) were<br>produced =
with Maple V.3 in 1996 =E2=80=94 with address-ordered sets. Some recorded o=
utputs<br>are provably not normalized the way any modern Maple would normal=
ize them. Example<br>from the test file: tests 21/23/25 record the componen=
t x4^2-x2*x4+3*x2, but modern<br>Maple has lcoeff(x4^2-x2*x4+3*x2) =3D -1 (=
same pattern as lcoeff(-x4+x2) =3D 1 in<br>Viktor's table), so wherever=
numer(p/lcoeff(p)) runs, a modern Maple flips that<br>sign. In other words=
: sign-for-sign agreement with the 1996 log is not achievable =E2=80=94<br>=
not even by modern Maple. I suspect this is also why the interactive "=
changesign"<br>helper ended up in charsets.mac.<br>=C2=A0<br>So I'=
d suggest: take modern Maple as the reference (it is deterministic), apply =
the<br>lcoeff patch, and ask Viktor to regenerate the 68 expected outputs w=
ith his Maple.<br>Alternatively (or additionally), charsets_testsub could c=
ompare polynomials up to<br>overall sign, which is mathematically justified=
for characteristic sets.<br>=C2=A0<br>5) Test suite status<br>=C2=A0<br>Fo=
r calibration, Claude ran all 68 tests (not just known_good) before and aft=
er the<br>patch, on the current git tree: 33 pass (the 29 known_good plus 5=
2/55/56/57), 4<br>fail by comparison (23, 25, 31, 46), 24 error out (the ec=
s/mecs/ics/ivd/pid family,<br>which hits unported algebraic-extension machi=
nery), and 7 exceed a 5-minute<br>timeout. The patch changes none of these =
outcomes =E2=80=94 the currently failing tests<br>fail for reasons beyond t=
he one-argument lcoeff: 23/25/31 also produce extra<br>components relative =
to the recorded outputs (6 instead of 4 in test 23), which<br>looks like a =
separate branching issue worth investigating on its own.<br>=C2=A0<br>One m=
ore detail for the future: for systems with ten or more variables, Maple=
9;s<br>set order is length-first (x1, x2, x10 =E2=80=94 not x1, x10, x2). T=
he patch implements<br>that too.</div><br><div class=3D"gmail_quote gmail_q=
uote_container"><div dir=3D"ltr" class=3D"gmail_attr">Am Sa., 1. Aug. 2026 =
um 00:31=C2=A0Uhr schrieb Richard Fateman <<a href=3D"mailto:fateman@gma=
il.com">[email protected]</a>>:<br></div><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"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"f=
ont-family:arial,sans-serif;font-size:small">Historically, and maybe today =
(I don't have a current Maple system), the ordering of names</div><div =
class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:sma=
ll">in Maple was based on the order in which the names appeared.</div><div =
class=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:sma=
ll">So the tests for Maple may be really rather simple.</div><div class=3D"=
gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">In a =
fresh Maple, print=C2=A0 =C2=A0x1+x2+x3</div><div class=3D"gmail_default" s=
tyle=3D"font-family:arial,sans-serif;font-size:small">In another fresh Mapl=
e, print=C2=A0 =C2=A0x3+x2+x1</div><div class=3D"gmail_default" style=3D"fo=
nt-family:arial,sans-serif;font-size:small">or maybe make up some more elab=
orate names to avoid any possible=C2=A0</div><div class=3D"gmail_default" s=
tyle=3D"font-family:arial,sans-serif;font-size:small">initialized orderings=
.</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;f=
ont-size:small">=C2=A0 In fact, the (way old) comparison of timings for cer=
tain operations in Maple vs others</div><div class=3D"gmail_default" style=
=3D"font-family:arial,sans-serif;font-size:small">favored Maple, unless you=
insisted that some alphabetical ordering be asserted after</div><div class=
=3D"gmail_default" style=3D"font-family:arial,sans-serif;font-size:small">t=
he computation (on large expressions).</div><div class=3D"gmail_default" st=
yle=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=
his is maybe not a terrible heuristic if it is used and you know about it.=
=C2=A0 It means that</div><div class=3D"gmail_default" style=3D"font-family=
:arial,sans-serif;font-size:small">you can assert an ordering by mentioning=
names in some introductory expression, the</div><div class=3D"gmail_defaul=
t" style=3D"font-family:arial,sans-serif;font-size:small">way you want them=
.</div><div class=3D"gmail_default" style=3D"font-family:arial,sans-serif;f=
ont-size:small">Have fun..</div><div class=3D"gmail_default" style=3D"font-=
family:arial,sans-serif;font-size:small">RJF</div><div class=3D"gmail_defau=
lt" 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 Fri=
, Jul 31, 2026 at 1:45=E2=80=AFPM David Scherfgen via Maxima-discuss <<a=
href=3D"mailto:[email protected]" target=3D"_blank">max=
[email protected]</a>> 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"auto">It seems like Maxima and=
Maple use different variable ordering, so for multivariate polynomials the=
y produce different answers. This doesn't mean that either one is wrong=
. It's just a matter of definition.<div dir=3D"auto">Can you share the =
actual, full computation that gives a wrong result?</div></div><br><div cla=
ss=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">Dan Stanger <<a=
href=3D"mailto:[email protected]" target=3D"_blank">dan.stanger.85=
[email protected]</a>> schrieb am Fr., 31. Juli 2026, 17:14:<br></div><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 dir=3D"ltr"><div>Hello All,<=
/div><div>I isolated the issue with Charsets to one line in the code, where=
the current polynomial is divided by the leading coefficient and the numer=
ator used in the continuing calculation, to eliminate possible fractional c=
oefficients in the polynomials. However Maples and Maximas leading coeffici=
ents produce different results. With Viktor's help I produced the follo=
wing table:</div><div>
=09
=09
<span></span>
=09
=09
=09
<table cellspacing=3D"0" border=3D"0" style=3D"font-family:"Liberation=
Sans";font-size:x-small">
<colgroup width=3D"417"></colgroup>
<colgroup span=3D"3" width=3D"85"></colgroup>
<tbody style=3D"font-family:"Liberation Sans";font-size:x-small"=
><tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">Expression</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Maxima</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Maple</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Same</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-x1-2*x1*x2^2+(-x1^2)*x2-x3^2+x1*x=
2*x3))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-1</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-1</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(2*x1^2*x2-2*x1*x2^2+(-2)*x1^2*x2^2=
-x1-x1^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(1+3*x2*x3^2+(-x2)*x3+4*x2^2+(-2)*x=
2^3*x3+4*x2^4))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">3</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">N</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(4*x2^3+4*x2^5+x2+(-4)*x4*x2^4+(-4)=
*x4*x2^2-x4))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-4</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">N</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(1+8*x2^6+12*x2^4+6*x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">8</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">8</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(12*x2^5+12*x2^3+3*x2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">12</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">12</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-1-4*x2^4+(-4)*x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-4</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(4*x2^4+4*x2^2+1))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-2*x2^3-x2+x2^2*x3+x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">1</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">N</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(2*x2^4+x2^2+(-2)*x4*x2^3+(-x4)*x2+=
x4*x2^2-x2^3))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">N</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-4*x2^5-5*x2^3+4*x2^4-x2+2*x2^2))<=
/td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-4</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(4*x2^4+2*x2^2+(-2)*x2^3))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">4</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-2*x2^3-x2+x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(2*x2^3+x2-x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(2*x4*x2^2+x2-x2^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-1+x3^2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">1</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">1</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-x4+x2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-1</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">1</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">N</td>
</tr>
<tr style=3D"font-family:"Liberation Sans";font-size:x-small">
<td height=3D"17" align=3D"left" style=3D"font-family:"Liberation Sa=
ns";font-size:x-small">print(lcoeff(-1-2*x2^2+x2))</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"right" style=3D"font-family:"Liberation Sans";font=
-size:x-small">-2</td>
<td align=3D"left" style=3D"font-family:"Liberation Sans";font-=
size:x-small">Y</td>
</tr>
</tbody></table>
</div><div><font face=3D"arial,sans-serif">Does anyone have time to take a =
look at this to try to determine the maple lcoeff algorithm?</font></div><d=
iv><font face=3D"arial,sans-serif">Dan Stanger</font></div></div>
_______________________________________________<br>
Maxima-discuss mailing list<br>
<a href=3D"mailto:[email protected]" rel=3D"noreferrer" =
target=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/maxima-discuss" rel=
=3D"noreferrer noreferrer" target=3D"_blank">https://lists.sourceforge.net/=
lists/listinfo/maxima-discuss</a><br>
</blockquote></div>
_______________________________________________<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>
</blockquote></div>
--000000000000f853ee065813d442--
--000000000000f853f0065813d444
Content-Type: text/markdown; charset="UTF-8"; name="charsets-lcoeff-report.md"
Content-Disposition: attachment; filename="charsets-lcoeff-report.md"
Content-Transfer-Encoding: base64
Content-ID: <f_msc2x6ql2>
X-Attachment-Id: f_msc2x6ql2
IyBjaGFyc2V0czogd2hhdCBNYXBsZSdzIGBsY29lZmZgIGRvZXMsIHdoeSB0aGUgcG9ydCBkaXNh
Z3JlZXMsIGFuZCB3aGF0IHRvIGRvIGFib3V0IGl0CgpEYXZpZCBTY2hlcmZnZW4gLyBDbGF1ZGUg
4oCUIDIwMjYtMDgtMDEKClRoaXMgbm90ZSBhbnN3ZXJzIERhbiBTdGFuZ2VyJ3MgcXVlc3Rpb24g
KCJkb2VzIGFueW9uZSBoYXZlIHRpbWUgdG8gZGV0ZXJtaW5lIHRoZSBNYXBsZQpsY29lZmYgYWxn
b3JpdGhtPyIpIGFib3V0IGBzaGFyZS9hbGdlYnJhL2NoYXJzZXRzYC4gRXZlcnl0aGluZyBiZWxv
dyB3YXMgdmVyaWZpZWQKZW1waXJpY2FsbHkgYnkgYnVpbGRpbmcgdGhlIGN1cnJlbnQgTWF4aW1h
IGdpdCB0cmVlIGFuZCBydW5uaW5nIHRoZSBjaGFyc2V0cyBwYWNrYWdlIGFuZAppdHMgdGVzdCBm
aWxlIGJlZm9yZSBhbmQgYWZ0ZXIgYSBjYW5kaWRhdGUgZml4OyB0aGUgMTgtcm93IGxjb2VmZiB0
YWJsZSBmcm9tIERhbidzIG1haWwgaXMKcmVwcm9kdWNlZCBleGFjdGx5ICgxOC8xOCBvbiBib3Ro
IGNvbHVtbnMpLgoKIyMgVEw7RFIKCiogTWFwbGUncyBvbmUtYXJndW1lbnQgYGxjb2VmZihwKWAg
aXMgYGxjb2VmZihwLCBpbmRldHMocCkpYDogYSAqKnB1cmUgbGV4aWNvZ3JhcGhpYyoqCiAgbGVh
ZGluZyBjb2VmZmljaWVudCBpbiB3aGljaCB0aGUgKipmaXJzdCoqIGluZGV0ZXJtaW5hdGUgb2Yg
YGluZGV0cyhwKWAgaXMgdGhlICoqbW9zdAogIHNpZ25pZmljYW50KiogdmFyaWFibGUuIFNpbmNl
IHRoZSAic2V0cyBpbiBjYW5vbmljYWwgb3JkZXIiIGNoYW5nZSAoTWFwbGUg4omlIDEyKSwgYSBz
ZXQKICBvZiBuYW1lcyBpcyBrZXB0IHNvcnRlZCAqKmJ5IGxlbmd0aCBvZiB0aGUgbmFtZSBmaXJz
dCwgdGhlbiBsZXhpY29ncmFwaGljYWxseSoqCiAgKCJzaG9ydGxleCIpLCBzbyBmb3IgYHt4Miwg
eDR9YCB0aGUgbWFpbiB2YXJpYWJsZSBpcyBgeDJgLiBCZWZvcmUgTWFwbGUgMTIsIHNldHMgd2Vy
ZQogIG9yZGVyZWQgKipieSBtZW1vcnkgYWRkcmVzcyoqLCBhbmQgTWFwbGUncyBvd24gaGVscCBw
YWdlIHN0aWxsIHdhcm5zIHRoYXQgdGhlCiAgb25lLWFyZ3VtZW50IG11bHRpdmFyaWF0ZSBjYXNl
ICJtYXkgYmUgc2Vzc2lvbiBkZXBlbmRlbnQiLiBUaGlzIG1hdHRlcnMgbW9yZSB0aGFuIGl0CiAg
c291bmRzIOKAlCBzZWUgIlRocmVlIHJlZmVyZW5jZSBiZWhhdmlvcnMiIGJlbG93LgoqIFRoZSBw
b3J0J3Mgb25lLWFyZ3VtZW50IGBsY29lZmZgIChpbiBgY2hhcnNldHNfcG93ZXJzLmxpc3BgKSB1
c2VzIHRoZSAqKnJldmVyc2UqKgogIG9yZGVyOiBpdCBwZWVscyB2YXJpYWJsZXMgbWFpbi1DUkUt
dmFyaWFibGUtZmlyc3QsIGkuZS4gYHg0YCBpcyBtb3N0IHNpZ25pZmljYW50LiBUaGF0CiAgaXMg
dGhlIG1pcnJvciBpbWFnZSBvZiBNYXBsZSdzIG9yZGVyLCB3aGljaCBleHBsYWlucyBldmVyeSAi
TiIgcm93IGluIERhbi9WaWt0b3IncwogIHRhYmxlLiBJdCBpcyBub3QgYSB3cm9uZyAqZGVmaW5p
dGlvbiogb2YgYSBsZWFkaW5nIGNvZWZmaWNpZW50IOKAlCBidXQgaXQgaXMgbm90IE1hcGxlJ3Ms
CiAgYW5kIGNoYXJzZXRzIHVzZXMgaXQgdG8gbm9ybWFsaXplIHNpZ25zLCBzbyB0aGUgcG9ydCdz
IHBvbHlub21pYWxzIGNhbiBjb21lIG91dCB3aXRoCiAgdGhlIG9wcG9zaXRlIHNpZ24gcmVsYXRp
dmUgdG8gTWFwbGUuCiogSW4gYG51bWVyKHAvbGNvZWZmKHApKWAgb25seSB0aGUgKipzaWduKiog
b2YgYGxjb2VmZihwKWAgbWF0dGVyczsgdGhlIG1hZ25pdHVkZSBhbHdheXMKICBjYW5jZWxzICh0
aGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyLXByaW1pdGl2ZSBwYXJ0IG9mIGBwYCB0aW1lcyB0aGUg
c2lnbiBvZiB0aGUgbGVhZGluZwogIGNvZWZmaWNpZW50KS4gU28gdGhlIHdob2xlIE1heGltYS9N
YXBsZSBkaXNjcmVwYW5jeSBhdCB0aGlzIGxpbmUgaXMgKipwZXItcG9seW5vbWlhbAogIHNpZ24g
ZmxpcHMqKiwgbm90aGluZyBlbHNlLiBWZXJpZmllZCBvbiBhbGwgMTggcm93cy4KKiBBIDEzLWxp
bmUgcGF0Y2ggdG8gYGNoYXJzZXRzX3Bvd2Vycy5saXNwYCBtYWtlcyB0aGUgb25lLWFyZ3VtZW50
IGRlZmF1bHQgbWF0Y2ggbW9kZXJuCiAgTWFwbGUgZXhhY3RseSAoMTgvMTggYWdhaW5zdCBWaWt0
b3IncyBNYXBsZSBjb2x1bW4pLiBJdCBjYXVzZXMgKipubyBjaGFuZ2UgaW4gYW55IG9mCiAgdGhl
IDY4IHRlc3Qgb3V0Y29tZXMqKiAoMzMgcGFzcyBiZWZvcmUgYW5kIGFmdGVyLCBieXRlLWlkZW50
aWNhbCBvdXRwdXRzIG9uIHRoZQogIHByZXZpb3VzbHkgZmFpbGluZyBvbmVzKSDigJQgaS5lLiB0
b2RheSdzIHJlbWFpbmluZyB0ZXN0IGZhaWx1cmVzIGFyZSAqbm90KiBjYXVzZWQgYnkKICB0aGUg
b25lLWFyZ3VtZW50IGBsY29lZmZgIHNpdGVzLgoqIFRoZSBkZWVwZXIgcHJvYmxlbTogdGhlIGV4
cGVjdGVkIG91dHB1dHMgZW1iZWRkZWQgaW4gYHRlc3QubWFjYCAoYW5kIEZhdGVtYW4ncyB0cmFj
ZSkKICBjb21lIGZyb20gKipNYXBsZSBWLjMgKDE5OTYpLCB3aG9zZSBzZXQgb3JkZXIgd2FzIG1l
bW9yeS1hZGRyZXNzIG9yZGVyKiouIFNvbWUgb2YgdGhvc2UKICBleHBlY3RlZCBwb2x5bm9taWFs
cyBhcmUgcHJvdmFibHkgKm5vdCogbm9ybWFsaXplZCB0aGUgd2F5IGFueSBtb2Rlcm4gTWFwbGUg
d291bGQKICBub3JtYWxpemUgdGhlbSAod29ya2VkIGV4YW1wbGUgYmVsb3cpLiBNYXRjaGluZyB0
aGVtIHNpZ24tZm9yLXNpZ24gaXMgbm90IGEKICByZXByb2R1Y2libGUgZ29hbCBmb3IgYW55IHBv
cnQg4oCUIG9yIGV2ZW4gZm9yIG1vZGVybiBNYXBsZSBpdHNlbGYuIFJlY29tbWVuZGF0aW9uOgog
IHRhcmdldCAqbW9kZXJuKiBNYXBsZSAoZGV0ZXJtaW5pc3RpYyksIHJlZ2VuZXJhdGUgdGhlIGV4
cGVjdGVkIG91dHB1dHMgd2l0aCBWaWt0b3IncwogIE1hcGxlLCBhbmQvb3IgbWFrZSB0aGUgdGVz
dCBjb21wYXJpc29uIGFjY2VwdCBhIHBvbHlub21pYWwgdXAgdG8gb3ZlcmFsbCBzaWduIChjaGFy
LXNldAogIGVsZW1lbnRzIGFyZSBvbmx5IGRlZmluZWQgdXAgdG8gYSB1bml0IGFueXdheSkuCgoj
IyAxLiBXaGF0IE1hcGxlJ3MgbGNvZWZmIGFjdHVhbGx5IGRvZXMKCkZyb20gdGhlIE1hcGxlIGhl
bHAgcGFnZSBmb3IgYGxjb2VmZmAvYHRjb2VmZmAgKGh0dHBzOi8vd3d3Lm1hcGxlc29mdC5jb20v
c3VwcG9ydC9oZWxwL21hcGxlL3ZpZXcuYXNweD9wYXRoPWxjb2VmZik6CgoqIGBsY29lZmYocClg
IGNvbXB1dGVzIHRoZSBsZWFkaW5nIGNvZWZmaWNpZW50ICJ3aXRoIHJlc3BlY3QgdG8gYWxsIHRo
ZSBpbmRldGVybWluYXRlcwogIG9mIHAiLCBpLmUuIGl0IGlzIGVxdWl2YWxlbnQgdG8gYGxjb2Vm
ZihwLCBpbmRldHMocCkpYCwgYW5kIOKAlCBkaXJlY3QgcXVvdGUg4oCUICJJbiB0aGUKICBtdWx0
aXZhcmlhdGUgY2FzZSB0aGlzIG9yZGVyaW5nIG1heSBiZSBzZXNzaW9uIGRlcGVuZGVudC4iCiog
Rm9yIGEgbGlzdC9zZXQgYHhgOiBgbGNvZWZmKHAsIFt4MSwuLi4seG5dKWAgaXMgImVxdWl2YWxl
bnQgdG8KICBgbGNvZWZmKC4uLihsY29lZmYocCwgeDEpLCAuLi4pLCB4bilgIiDigJQgaS5lLiBz
dWNjZXNzaXZlIHVuaXZhcmlhdGUgbGVhZGluZwogIGNvZWZmaWNpZW50cywgcGVlbGluZyBgeDFg
IGZpcnN0LiBUaGF0IGlzIGEgKipwdXJlIGxleGljb2dyYXBoaWMqKiAocGxleCkgbW9ub21pYWwK
ICBvcmRlciBpbiB3aGljaCBgeDFgICh0aGUgZmlyc3QgZWxlbWVudCkgaXMgdGhlIG1vc3Qgc2ln
bmlmaWNhbnQgdmFyaWFibGUuIE5vIHRvdGFsCiAgZGVncmVlIGlzIGludm9sdmVkLgoKRnJvbSB0
aGUgTWFwbGUgaGVscCBwYWdlIGZvciBzZXRzIChgP3NldGApOiBzaW5jZSB0aGUgc2V0LW9yZGVy
aW5nIHJlZm9ybSAoYWRkcmVzcy1iYXNlZApvcmRlcmluZyB3YXMgdGhlIGRlZmF1bHQgdGhyb3Vn
aCBNYXBsZSAxMTsgZGV0ZXJtaW5pc3RpYyBjYW5vbmljYWwgb3JkZXJpbmcgYWZ0ZXJ3YXJkcyDi
gJQKdGhlIG9sZCBiZWhhdmlvciBpcyBzdGlsbCByZWFjaGFibGUgdmlhIGAtLXNldHNvcnQ9MGAp
LCBzZXQgZWxlbWVudHMgYXJlIGtlcHQgaW4gYQpjYW5vbmljYWwgb3JkZXIgZGV0ZXJtaW5lZCBm
aXJzdCBieSB0eXBlLCB0aGVuIGJ5ICoqbGVuZ3RoKiosIHRoZW4gKipsZXhpY29ncmFwaGljYWxs
eSoqLgpGb3IgbmFtZXMgb2YgZXF1YWwgbGVuZ3RoIHRoaXMgaXMgcGxhaW4gYWxwaGFiZXRpY2Fs
IG9yZGVyOiBgaW5kZXRzYCBvZiBhIHBvbHlub21pYWwgaW4KYHgxLCB4MiwgeDMsIHg0YCBpcyBg
e3gxLCB4MiwgeDMsIHg0fWAgaW4gZXhhY3RseSB0aGF0IG9yZGVyLiAoRm9yIG5hbWVzIG9mICp1
bmVxdWFsKgpsZW5ndGggaXQgaXMgc2hvcnRsZXg6IGB7eDEsIHgyLCB4MTB9YCwgbm90IGB7eDEs
IHgxMCwgeDJ9YCDigJQgd29ydGggcmVtZW1iZXJpbmcgaWYgYQpzeXN0ZW0gd2l0aCB0ZW4gb3Ig
bW9yZSB2YXJpYWJsZXMgZXZlciBzaG93cyB1cC4pCgpQdXR0aW5nIHRoZSB0d28gdG9nZXRoZXIs
ICoqbW9kZXJuKiogTWFwbGUncyBgbGNvZWZmKHApYCA9IHBsZXggbGVhZGluZyBjb2VmZmljaWVu
dCB3aXRoCnRoZSBjYW5vbmljYWxseSBzbWFsbGVzdCBuYW1lIGFzIHRoZSBtb3N0IHNpZ25pZmlj
YW50IHZhcmlhYmxlLiBGb3IgVmlrdG9yJ3MgdGFibGUgcm93IDQsCgogICAgcCA9IDQqeDJeMys0
KngyXjUreDItNCp4NCp4Ml40LTQqeDQqeDJeMi14NCAgICAgIGluZGV0cyA9IHt4MiwgeDR9Cgpw
ZWVsIGB4MmAgZmlyc3Q6IGhpZ2hlc3QgcG93ZXIgaXMgYHgyXjVgIHdpdGggY29lZmZpY2llbnQg
YDRgOyB0aGVuIGB4NGA6IGA0YCBpcwpjb25zdGFudC4gU28gTWFwbGUgc2F5cyAqKjQqKi4KCiMj
IDIuIFdoYXQgdGhlIHBvcnQncyBsY29lZmYgZG9lcwoKYGxjb2VmZmAgaXMgZGVmaW5lZCBpbiBg
c2hhcmUvYWxnZWJyYS9jaGFyc2V0cy9jaGFyc2V0c19wb3dlcnMubGlzcGAgKEJhcnRvbiBXaWxs
aXMpOgoKYGBgbGlzcAooZGVmdW4gJGxjb2VmZiAoZSAmb3B0aW9uYWwgdikKICAocmVxdWlyZS1u
b25saXN0IGUgIiRsY29lZmYiIDEpCiAgKGlmIChudWxsIHYpIChzZXRxIHYgKG5vbi1jb25zdGFu
dC1yYXR2YXJzIGUpKSkKICAobGNvZWZmIChyZXF1aXJlLXBvbHkgKG15cmF0IGUpIHYgIiRsY29l
ZmYiIDEpCiAgICAgICAgICAocmVxdWlyZS1saXN0LW9mLXN5bWJvbHMgdiAiJGxjb2VmZiIgMikp
KQoKKGRlZnVuIGxjb2VmZiAoZSB4KQogIChpZiAobnVsbCB4KSBlIChsY29lZmYgKCRyYXRjb2Vm
IGUgKGNhciB4KSAoJGhpcG93ZXIgZSAoY2FyIHgpKSkgKGNkciB4KSkpKQpgYGAKClRoZSB0d28t
YXJndW1lbnQgZm9ybSBwZWVscyB0aGUgdmFyaWFibGVzIG9mZiAqKmxlZnQgdG8gcmlnaHQqKiwg
ZXhhY3RseSBsaWtlIE1hcGxlJ3MKbGlzdCBmb3JtIOKAlCBzbyBmYXIgc28gZ29vZC4gVGhlIHBy
b2JsZW0gaXMgdGhlIG9uZS1hcmd1bWVudCBkZWZhdWx0OgoKYGBgbGlzcAooZGVmdW4gbm9uLWNv
bnN0YW50LXJhdHZhcnMgKGUpCiAgKGxldCAoKHYgKGNkciAoJHNob3dyYXR2YXJzIGUpKSkKICAg
ICAgICAoYWNjKSkKICAgIChkb2xpc3QgKHZpIHYgYCgobWxpc3Qgc2ltcCkgLEBhY2MpKQogICAg
ICAoaWYgKG5vdCAoJGNvbnN0YW50cCB2aSkpIChwdXNoIHZpIGFjYykpKSkpCmBgYAoKYCRzaG93
cmF0dmFyc2AgcmV0dXJucyB0aGUgQ1JFIHZhcmlhYmxlIGxpc3QgaW4gYXNjZW5kaW5nIG9yZGVy
IChgW3gyLCB4NF1gLCBtYWluCnZhcmlhYmxlIGxhc3QpLCBhbmQgdGhlIGBwdXNoYCBsb29wICoq
cmV2ZXJzZXMqKiBpdC4gU28gYGxjb2VmZihwKWAgcGVlbHMgYHg0YCBmaXJzdDoKdGhlIHBvcnQn
cyBvbmUtYXJndW1lbnQgYGxjb2VmZmAgaXMgcGxleCB3aXRoIHRoZSAqKmFscGhhYmV0aWNhbGx5
IGdyZWF0ZXN0KiogdmFyaWFibGUKbW9zdCBzaWduaWZpY2FudCDigJQgdGhlIG1pcnJvciBpbWFn
ZSBvZiBNYXBsZS4gRm9yIHJvdyA0IGl0IHBlZWxzIGB4NGAgKGhpZ2hlc3QgcG93ZXIgMSwKY29l
ZmZpY2llbnQgYC00KngyXjQtNCp4Ml4yLTFgKSwgdGhlbiBgeDJgLCBnaXZpbmcgKiotNCoqLiBU
aGF0IGlzIGV4YWN0bHkgRGFuJ3MKIk1heGltYSIgY29sdW1uLgoKVGhpcyBvbmUgbWlycm9yLWlt
YWdlIG9yZGVyaW5nIGV4cGxhaW5zIGFsbCAxOCByb3dzIG9mIHRoZSB0YWJsZSwgYm90aCBZIGFu
ZCBOIHJvd3M6CgoqIFJ1biBhZ2FpbnN0IHRoZSBjdXJyZW50IGdpdCBjaGFyc2V0czogb25lLWFy
Z3VtZW50IGBsY29lZmZgIHJlcHJvZHVjZXMgRGFuJ3MgTWF4aW1hCiAgY29sdW1uICoqMTgvMTgq
Ki4KKiBBbiBsY29lZmYgdGhhdCBwZWVscyB0aGUgKmFzY2VuZGluZyBzb3J0ZWQqIHZhcmlhYmxl
IGxpc3QgcmVwcm9kdWNlcyBWaWt0b3IncyBNYXBsZQogIGNvbHVtbiAqKjE4LzE4KiouCgpOb3Rl
IHRoZSB0d28tYXJndW1lbnQgY2FsbCBzaXRlcyBpbiBjaGFyc2V0cy5tYWMgKGBsY29lZmYocmVt
ZCwgb3JkKWAgZXRjLiwgd2hlcmUgYG9yZGAKaXMgdGhlIHVzZXIncyBhc2NlbmRpbmcgdmFyaWFi
bGUgbGlzdCBgW3gxLHgyLHgzLHg0XWApIGFyZSAqYWxyZWFkeSogZXF1aXZhbGVudCB0bwptb2Rl
cm4gTWFwbGUncyBgbGNvZWZmKHJlbWQpYDogdmFyaWFibGVzIGFic2VudCBmcm9tIHRoZSBwb2x5
bm9taWFsIHBlZWwgb2ZmIGFzIG5vLW9wcywKYW5kIHRoZSBvbmVzIHByZXNlbnQgYXJlIHZpc2l0
ZWQgaW4gdGhlIHNhbWUgYXNjZW5kaW5nIG9yZGVyIGFzIG1vZGVybiBgaW5kZXRzYC4gT25seQp0
aGUgKipvbmUtYXJndW1lbnQqKiBzaXRlcyAoYGNoYXJzZXRzX3BmYWN0b3JgLCBgY2hhcnNldHNf
c2ZhY3RvcmAsCmBjaGFyc2V0c19mYWN0b3Jwc2AsIGBjaGFyc2V0c19kZmFjdG9yc2AsIGBjaGFy
c2V0c190cml2aWFsYCwgYW5kIHRoZSBzaXRlcyBpbiB0aGUKc29sdmVyIHNlY3Rpb24pIHVzZSB0
aGUgcmV2ZXJzZWQgb3JkZXIuCgojIyAzLiBUaGUgbm9ybWFsaXphdGlvbiBsaW5lOiBvbmx5IHRo
ZSBzaWduIGNhbiBkaWZmZXIKClRoZSBsaW5lIERhbiBpc29sYXRlZCBoYXMgdGhlIE1hcGxlIGZv
cm0gYG51bWVyKHAvbGNvZWZmKHApKWAgKHBvcnRlZCBhcwpgbnVtKHAvbGNvZWZmKHApKWAsIHNv
bWV0aW1lcyB3cmFwcGVkIGluIGB4dGhydS9tdWx0dGhydWApLiBTaW5jZSBgbGNvZWZmYCBoZXJl
IGlzIHRha2VuCndpdGggcmVzcGVjdCB0byAqYWxsKiB2YXJpYWJsZXMsIGl0cyB2YWx1ZSBpcyBh
IHJhdGlvbmFsICoqbnVtYmVyKiouIEZvciBhbiBpbnRlZ2VyCnBvbHlub21pYWwgYHBgIHdpdGgg
Y29udGVudCBgZ2AgYW5kIGFueSBub256ZXJvIHJhdGlvbmFsIGBjYCwKCiAgICBudW0ocC9jKSA9
IHNpZ24oYykgKiBwL2cKCuKAlCB0aGUgbWFnbml0dWRlIG9mIGBjYCBjYW5jZWxzIGFnYWluc3Qg
dGhlIGRlbm9taW5hdG9yIHRoYXQgYG51bWAgY2xlYXJzLiBTbyB0aGlzCm5vcm1hbGl6YXRpb24g
Y29tcHV0ZXMgdGhlIGludGVnZXItcHJpbWl0aXZlIHBhcnQgb2YgYHBgLCB3aXRoIG92ZXJhbGwg
c2lnbiBjaG9zZW4gc28KdGhhdCAqKnRoZSBsZWFkaW5nIGNvZWZmaWNpZW50IGluIHRoZSBjaG9z
ZW4gdGVybSBvcmRlciBiZWNvbWVzIHBvc2l0aXZlKiouIERpZmZlcmVudAp0ZXJtIG9yZGVyIOKH
kiBwb3NzaWJseSBkaWZmZXJlbnQgc2lnbiwgbmV2ZXIgZGlmZmVyZW50IG1hZ25pdHVkZS4gRW1w
aXJpY2FsbHksIGFjcm9zcyB0aGUKMTggcm93cywgYG51bShwL21heGltYV9sYylgIGFuZCBgbnVt
KHAvbWFwbGVfbGMpYCBhcmUgaWRlbnRpY2FsIGluIDE0IHJvd3MgYW5kIGRpZmZlciBieQpleGFj
dGx5IGFuIG92ZXJhbGwgc2lnbiBpbiB0aGUgNCByb3dzIHdob3NlIHRhYmxlIGVudHJpZXMgaGF2
ZSBvcHBvc2l0ZSBzaWducyAocm93cyA0LCA5LAoxMCwgMTcpOyByb3dzIGxpa2UgMyAoMyB2cyA0
KSBhbmQgNi8xMiAoZXF1YWwgdmFsdWVzKSBjb21lIG91dCBpZGVudGljYWwuIDAgcm93cyBkaWZm
ZXIKaW4gYW55IG90aGVyIHdheS4KClNvIHRoZSBwb3J0LXZzLU1hcGxlIGRpc2FncmVlbWVudCBh
dCB0aGlzIGxpbmUgaXMgcHJlY2lzZWx5OiAqKnNvbWUgcG9seW5vbWlhbHMgYWNxdWlyZQp0aGUg
b3Bwb3NpdGUgb3ZlcmFsbCBzaWduKiouIEEgY2hhcmFjdGVyaXN0aWMgc2V0IGlzIG1hdGhlbWF0
aWNhbGx5IHVuYWZmZWN0ZWQgKGl0cwplbGVtZW50cyBhcmUgZGVmaW5lZCB1cCB0byBub256ZXJv
IGNvbnN0YW50IGZhY3RvcnMpIOKAlCBidXQgZG93bnN0cmVhbSB0aGUgc2lnbiBjYW4gbGVhawpp
bnRvIHdoaWNoIG9mIHNldmVyYWwgZXF1YWwtcmFuayBwb2x5bm9taWFscyBzb3J0cyBmaXJzdCwg
aW50byBmYWN0b3IgYm9va2tlZXBpbmcsIGFuZCBvZgpjb3Vyc2UgaW50byBsaXRlcmFsIGNvbXBh
cmlzb24gd2l0aCByZWNvcmRlZCBNYXBsZSBvdXRwdXRzLCB3aGljaCBpcyB3aGF0IHRoZSA2OCB0
ZXN0cwpkby4KCiMjIDQuIFRocmVlIHJlZmVyZW5jZSBiZWhhdmlvcnMsIG5vdCB0d28KClRoaXMg
aXMgdGhlIHBhcnQgdGhhdCBjaGFuZ2VzIHdoYXQgImZpeGluZyIgc2hvdWxkIG1lYW46CgoxLiAq
KldhbmcncyBNYXBsZSBWLjMgb3V0cHV0cyAoMTk5NikqKiDigJQgd2hhdCBgdGVzdC5tYWNgJ3Mg
YHRlc3Rfb3V0YCBhbmQgRmF0ZW1hbidzCiAgIHRyYWNlIHJlY29yZC4gTWFwbGUgVi4zIHNldHMg
d2VyZSAqKmFkZHJlc3Mtb3JkZXJlZCoqLCBzbyB0aGUgb25lLWFyZ3VtZW50CiAgIGBsY29lZmYo
cClgIHNpZ24gY29udmVudGlvbiBkZXBlbmRlZCBvbiBhbGxvY2F0aW9uIGhpc3RvcnkuIFRoZXNl
IG91dHB1dHMgYXJlIG5vdCBhCiAgIGRldGVybWluaXN0aWMgc3BlY2lmaWNhdGlvbjsgbm90IGV2
ZW4gYSBtb2Rlcm4gTWFwbGUgcmVwcm9kdWNlcyB0aGVtLgoyLiAqKk1vZGVybiBNYXBsZSAo4oml
IDEyLzE1KSoqIOKAlCBkZXRlcm1pbmlzdGljIGNhbm9uaWNhbCBzZXQgb3JkZXI7IHRoaXMgaXMg
d2hhdCBWaWt0b3IncwogICBjb2x1bW4gc2hvd3MuCjMuICoqVGhlIGN1cnJlbnQgcG9ydCoqIOKA
lCB0d28tYXJndW1lbnQgc2l0ZXMgYmVoYXZlIGxpa2UgbW9kZXJuIE1hcGxlOyBvbmUtYXJndW1l
bnQKICAgc2l0ZXMgYmVoYXZlIGxpa2UgbWlycm9yLWltYWdlIE1hcGxlLgoKQ29uY3JldGUgZXZp
ZGVuY2UgdGhhdCAoMSkg4omgICgyKSwgdGFrZW4gZnJvbSB0aGUgdGVzdCBmaWxlIGl0c2VsZjog
dGVzdHMgMjEvMjMvMjUgZXhwZWN0CnRoZSBjb21wb25lbnQgcG9seW5vbWlhbAoKICAgIHg0XjIg
LSB4Mip4NCArIDMqeDIKCkluIFdhbmcncyBjaGFyc2VyIHZhcmlhbnRzLCBjb21wb25lbnRzIGFy
ZSBmaW5hbC1ub3JtYWxpemVkIGJ5CmBudW1lcihjc1tsXS9sY29lZmYoZXhwYW5kKGNzW2xdKSkp
YC4gTW9kZXJuIE1hcGxlOiBgaW5kZXRzID0ge3gyLCB4NH1gLCBwZWVsIGB4MmAKKGRlZ3JlZSAx
LCBjb2VmZmljaWVudCBgMy14NGApLCB0aGVuIGB4NGAg4oaSIGxlYWRpbmcgY29lZmZpY2llbnQg
KiotMSoqLCBzbyB3aGVyZXZlciB0aGF0Cm5vcm1hbGl6YXRpb24gcnVucywgbW9kZXJuIE1hcGxl
IHR1cm5zIHRoaXMgY29tcG9uZW50IGludG8gYC14NF4yICsgeDIqeDQgLSAzKngyYCDigJQgdGhl
CipvcHBvc2l0ZSBzaWduIG9mIFdhbmcncyByZWNvcmRlZCBvdXRwdXQqLiAoVGhlIHBvcnQncyBj
aGFyc2VyLXdpdGgtd2Jhc3NldCBwYXRoLCB3aG9zZQpub3JtYWxpemF0aW9uIHBhc3NlcyBgb3Jk
YCBhbmQgaXMgdGhlcmVmb3JlIG1vZGVybi1NYXBsZS1lcXVpdmFsZW50LCBpbmRlZWQgcHJpbnRz
CmAteDReMit4Mip4NC0zKngyYCBpbiBpdHMgYWN0dWFsIG91dHB1dCBmb3IgdGVzdCAyMy4pIFdh
bmcncyBgK2AgdmVyc2lvbiBpbXBsaWVzIGhpcwoxOTk2IHNlc3Npb24gaGFkIGB4NGAgYmVmb3Jl
IGB4MmAgaW4gdGhhdCBzZXQg4oCUIGFkZHJlc3Mgb3JkZXIgYXQgd29yay4gQSBvbmUtbGluZSBj
aGVjawpWaWt0b3IgY2FuIHJ1biB0byBjb25maXJtIHRoZSBtZWNoYW5pc206IG1vZGVybiBNYXBs
ZSBzaG91bGQgZ2l2ZQpgbGNvZWZmKHg0XjIteDIqeDQrMyp4MikgPSAtMWAgKHNhbWUgcGF0dGVy
biBhcyB0aGUgYGxjb2VmZigteDQreDIpID0gMWAgcm93IGFscmVhZHkgaW4KaGlzIHRhYmxlKSwg
d2hpbGUgV2FuZydzIHJlY29yZGVkIG91dHB1dHMgYXJlIG5vcm1hbGl6ZWQgYXMgaWYgaXQgd2Vy
ZSBgKzFgLgoKVHdvIGNhdmVhdHMgZm9yIGNvbXBsZXRlbmVzcy4gRmlyc3QsIHNvbWUgY29tcG9u
ZW50cyBpbiByZWNvcmRlZCBvdXRwdXRzIG5ldmVyIHBhc3MKdGhyb3VnaCB0aGlzIG5vcm1hbGl6
YXRpb24gYXQgYWxsICh0aGV5IGFyZSBhZGpvaW5lZCBpbnB1dCBwb2x5bm9taWFscyBvciBjb21l
IG91dCBvZgpgZmFjdG9yYCksIHNvIG5vdCBldmVyeSByZWNvcmRlZCBzaWduIGlzIGluZm9ybWF0
aXZlLiBTZWNvbmQsIHNldmVyYWwgb2YgdGhlIHBvcnQncwpjdXJyZW50bHkgKnBhc3NpbmcqIHRl
c3RzIG1hdGNoIFdhbmcncyBWLjMgc2lnbnMgcGFydGx5IGZvciB0aGF0IGluY2lkZW50YWwgcmVh
c29uIOKAlAphZ3JlZW1lbnQgdGhlcmUgaXMgbm90IGV2aWRlbmNlIHRoYXQgdGhlIGNvbnZlbnRp
b25zIGFncmVlLgoKQ29uc2VxdWVuY2U6ICoqc2lnbi1mb3Itc2lnbiBhZ3JlZW1lbnQgd2l0aCBg
dGVzdC5ydW5gL3RoZSBWLjMgdHJhY2UgaXMgbm90IGFuCmFjaGlldmFibGUgdGFyZ2V0IGZvciBh
bnkgZmFpdGhmdWwgcG9ydCoqLCBhbmQgc2hvdWxkbid0IGJlIHRoZSBjb3JyZWN0bmVzcyBjcml0
ZXJpb24uCk1vZGVybiBNYXBsZSBpcyBhIGRldGVybWluaXN0aWMgdGFyZ2V0OyBWaWt0b3IgY2Fu
IHJlZ2VuZXJhdGUgcmVmZXJlbmNlIG91dHB1dHMgdGhlcmUuClRoZSBpbnRlcmFjdGl2ZSBgY2hh
bmdlc2lnbmAgZGVidWdnaW5nIGhlbHBlciBzdGlsbCBwcmVzZW50IGluIGNoYXJzZXRzLm1hYyAo
aXQKcHJvbXB0ZWQgImNoYW5nZXNpZ24gMCBvciBpdGVtICMiIHNvIG9uZSBjb3VsZCBmbGlwIGNv
bXBvbmVudCBzaWducyBieSBoYW5kIHdoaWxlCmNvbXBhcmluZyBhZ2FpbnN0IE1hcGxlKSBpcyBh
IHN5bXB0b20gb2YgZXhhY3RseSB0aGlzOiB0aG9zZSBzaWducyB3ZXJlIG5ldmVyIGdvaW5nIHRv
CmxpbmUgdXAgc3lzdGVtYXRpY2FsbHkgYWdhaW5zdCBhIFYuMyBsb2cuCgojIyA1LiBUaGUgZml4
CgpQYXRjaCAoYGNoYXJzZXRzLWxjb2VmZi5kaWZmYCk6IG1ha2UgYG5vbi1jb25zdGFudC1yYXR2
YXJzYCByZXR1cm4gdGhlIHZhcmlhYmxlcyBpbgpNYXBsZSdzIGNhbm9uaWNhbCBzZXQgb3JkZXIg
KHNob3J0bGV4IGFzY2VuZGluZykgaW5zdGVhZCBvZiByZXZlcnNlZCBDUkUgb3JkZXIuIFRoYXQK
bWFrZXMgb25lLWFyZ3VtZW50IGBsY29lZmZgIChhbmQgaXRzIHVudXNlZCBzaWJsaW5ncyBgdGNv
ZWZmYCwgYGx0ZXJtYDsgYHRvdGFsX2RlZ3JlZWAKaXMgb3JkZXItaW5kZXBlbmRlbnQpIGFncmVl
IHdpdGggbW9kZXJuIE1hcGxlLCBhbmQgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIHRoZQp0d28t
YXJndW1lbnQgYG9yZGAgY2FsbCBzaXRlcyBhbHJlYWR5IHByZXNlbnQgaW4gY2hhcnNldHMubWFj
LiBgZ3JlcGAgY29uZmlybXMgbm8gb3RoZXIKc2hhcmUgcGFja2FnZSBsb2FkcyB0aGlzIGZpbGUu
CgpWZXJpZmljYXRpb24gKE1heGltYSBnaXQgMjAyNi0wNi0yNyB0cmVlLCBTQkNMIDIuNC4xMCBi
dWlsZCk6CgoqIFBhdGNoZWQgb25lLWFyZ3VtZW50IGBsY29lZmZgIHJlcHJvZHVjZXMgVmlrdG9y
J3MgTWFwbGUgY29sdW1uICoqMTgvMTgqKiAodW5wYXRjaGVkOgogIHJlcHJvZHVjZXMgRGFuJ3Mg
TWF4aW1hIGNvbHVtbiAxOC8xOCkuCiogRnVsbCBgdGVzdC5tYWNgIHJ1biAoYWxsIDY4IHRlc3Rz
LCBub3QganVzdCBga25vd25fZ29vZGApLCBiZWZvcmUgdnMgYWZ0ZXIgdGhlIHBhdGNoOgogICoq
aWRlbnRpY2FsIG91dGNvbWVzKiog4oCUIDMzIEdPT0QsIDQgQkFEICgyMywgMjUsIDMxLCA0Niks
IDI0IEVSUk9SLCA3IFRJTUVPVVQg4oCUIGFuZAogIGJ5dGUtaWRlbnRpY2FsIGFjdHVhbCBvdXRw
dXRzIG9uIHRoZSBCQUQgdGVzdHMuIFRoZSBjdXJyZW50bHkgcmVhY2hhYmxlIGNvZGUgcGF0aHMg
aW4KICB0aGVzZSB0ZXN0cyBoaXQgdGhlIG5vcm1hbGl6YXRpb24gb25seSB0aHJvdWdoIHRoZSBg
b3JkYC1wYXNzaW5nIHNpdGVzLCBzbyB0aGUgcGF0Y2gKICBpcyBwdXJlbHkgYSBjb25zaXN0ZW5j
eS9kZXRlcm1pbmlzbSBpbXByb3ZlbWVudCB0aGVyZTsgdGhlIG9uZS1hcmd1bWVudCBzaXRlcyBt
YXR0ZXIKICBvbiB0aGUgcGF0aHMgZXhlcmNpc2VkIGJ5IHRoZSBjaGFyLXNlcmllcy9kZWNvbXBv
c2l0aW9uIGZ1bmN0aW9ucwogIChgY2hhcnNldHNfZmFjdG9ycHNgLCBgY2hhcnNldHNfcGZhY3Rv
cmAsIC4uLiB1c2VkIGJ5IGNzcy9pY3MvZWNzKSwgd2hpY2ggY3VycmVudGx5CiAgZXJyb3Igb3V0
IGVhcmxpZXIgZm9yIHVucmVsYXRlZCByZWFzb25zLgoKQ3VycmVudCA2OC10ZXN0IHN0YXR1cyBm
b3IgcmVmZXJlbmNlIChpZGVudGljYWwgYmVmb3JlL2FmdGVyIHRoZSBwYXRjaCk6CgoqIEdPT0Q6
IDEtMjIsIDI0LCAyNi0zMCwgMzIgKD0gdGhlIDI5IGBrbm93bl9nb29kYCkgcGx1cyA1MiwgNTUs
IDU2LCA1NyAocWljcykuCiogQkFEOiAyMywgMjUsIDMxIChjaGFyc2VyL21jczogc2lnbiBkaWZm
ZXJlbmNlcyB2cyBWLjMgZXhwZWN0YXRpb25zICpwbHVzKiBleHRyYQogIGNvbXBvbmVudHMg4oCU
IGUuZy4gNiBjb21wb25lbnRzIGluc3RlYWQgb2YgNCBpbiB0ZXN0IDIzKSwgNDYgKGNzb2x2ZTog
ZXF1aXZhbGVudAogIHNvbHV0aW9ucyBpbiBkaWZmZXJlbnQgZm9ybS9vcmRlcikuCiogRVJST1I6
IDMzLTQ1IChlY3MvbWVjcy90cmlzZXIg4oCUIGhpdCBtaXNzaW5nIGFsZ2VicmFpYy1leHRlbnNp
b24gbWFjaGluZXJ5OiBgZXZhbGFgLAogIGBSb290T2ZgLCBldGMuKSwgNDgsIDUwLCA1MSwgNTMs
IDU0LCA1OSwgNjMsIDY1LTY4IChpY3MvY2ZhY3Rvci9laWNzL2l2ZC9waWQgZmFtaWx5KS4KKiBU
SU1FT1VUICgzMDAgcyk6IDQ3LCA0OSwgNTgsIDYwLTYyLCA2NC4KCiMjIDYuIFN1Z2dlc3RlZCBu
ZXh0IHN0ZXBzCgoxLiBBcHBseSB0aGUgcGF0Y2gg4oCUIGl0IG1ha2VzIHRoZSBwb3J0J3MgYGxj
b2VmZmAgZGV0ZXJtaW5pc3RpYyBhbmQgZXF1YWwgdG8gbW9kZXJuCiAgIE1hcGxlLCB3aGljaCBp
cyB0aGUgb25seSByZXByb2R1Y2libGUgcmVmZXJlbmNlLiAoSXQgYWxzbyBtYWtlcyB0aGUgYC8q
IHJldmVyc2UgKi9gCiAgIHB1enpsZW1lbnQgaW4gY2hhcnNldHMubWFjIHJlc29sdmFibGU6IHBh
c3NpbmcgYXNjZW5kaW5nIGBvcmRgIHdhcyBhbHJlYWR5IHJpZ2h0OwogICB0aGUgY29tbWVudHMg
Y2FuIGdvLikKMi4gQXNrIFZpa3RvciB0byByZWdlbmVyYXRlIHRoZSA2OCBleHBlY3RlZCBvdXRw
dXRzIChhbmQsIGlmIHVzZWZ1bCBmb3IgZGVidWdnaW5nLCBhCiAgIGZyZXNoIHRyYWNlKSB3aXRo
IGhpcyBtb2Rlcm4gTWFwbGUsIGFuZCByZXBsYWNlIGB0ZXN0X291dGAvYHRlc3QucnVuYC4gRGlm
ZnMgYWdhaW5zdAogICBXYW5nJ3MgVi4zIGxvZyB3aWxsIG90aGVyd2lzZSBjb250YWluIGlycmVk
dWNpYmxlIHNpZ24gbm9pc2UuIFNhbml0eSBjaGVjayB3aGlsZQogICBoZSdzIGF0IGl0OiBgbGNv
ZWZmKHg0XjIteDIqeDQrMyp4MilgIHNob3VsZCByZXR1cm4gYC0xYCBpbiBtb2Rlcm4gTWFwbGUs
IHNvIHRoZQogICBjaGFyc2VyIGNvbXBvbmVudHMgcmVjb3JkZWQgYXMgYHg0XjIteDIqeDQrMyp4
MmAgaW4gYHRlc3QubWFjYCBzaG91bGQgY29tZSBvdXQKICAgc2lnbi1mbGlwcGVkIGluIGEgbW9k
ZXJuIHJ1biB3aGVyZXZlciB0aGUgYG51bWVyKHAvbGNvZWZmKHApKWAgbm9ybWFsaXphdGlvbiBp
cwogICBhcHBsaWVkLgozLiBBbHRlcm5hdGl2ZWx5IChvciBhZGRpdGlvbmFsbHkpLCBtYWtlIGBj
aGFyc2V0c190ZXN0c3ViYCBjb21wYXJlIHBvbHlub21pYWxzIHVwIHRvCiAgIG92ZXJhbGwgc2ln
biDigJQgbWF0aGVtYXRpY2FsbHkganVzdGlmaWVkIGZvciBjaGFyYWN0ZXJpc3RpYyBzZXRzLiBO
b3RlIHRoaXMgYWxvbmUKICAgZG9lcyBub3QgdHVybiAyMy8yNS8zMSBncmVlbjogdGhleSBhbHNv
IHByb2R1Y2Ugc3RydWN0dXJhbGx5IGRpZmZlcmVudCBjb21wb25lbnQKICAgc2V0cyAoZXh0cmEg
Y29tcG9uZW50cyksIHdoaWNoIGlzIGEgc2VwYXJhdGUgaXNzdWUgd29ydGggaXRzIG93biBpbnZl
c3RpZ2F0aW9uLgo0LiBGb3IgdGVuLXBsdXMtdmFyaWFibGUgc3lzdGVtcywgcmVtZW1iZXIgTWFw
bGUncyBzaG9ydGxleCBuYW1lIG9yZGVyIChgeDJgIGJlZm9yZQogICBgeDEwYCk7IHRoZSBwYXRj
aCBpbXBsZW1lbnRzIHRoYXQsIGJ1dCBhbnkgKm90aGVyKiBNYXBsZS1zZXQtb3JkZXIgZW11bGF0
aW9uIGluIHRoZQogICBwb3J0IChgY2hhcnNldHNfc2V0b3JkZXJwYCBldGMuKSBzaG91bGQgdXNl
IHRoZSBzYW1lIGNvbnZlbnRpb24uCgojIyBBcHBlbmRpeDogcmVwcm9kdWN0aW9uCgoqIEJ1aWxk
OiBsaXNwLW9ubHkgYnVpbGQgb2YgdGhlIGdpdCB0cmVlIChgc3JjL21heGltYS1idWlsZC5saXNw
YCkgdW5kZXIgU0JDTCAyLjQuMTA7CiAgY29tcGlsZSBhbmQgbG9hZC9kdW1wIGluICpzZXBhcmF0
ZSogTGlzcCBzZXNzaW9ucy4KKiAxOC1yb3cgdGFibGU6IGBleHBfdGFibGUubWFjYCAvIGBleHBf
dGFibGUyLm1hY2AgKGluIHRoZSBzZXNzaW9uIGFyY2hpdmUpIGxvYWQKICBgY2hhcnNldHMubWFj
YCBhbmQgY2hlY2sgYGxjb2VmZmAgYWdhaW5zdCBib3RoIHRhYmxlIGNvbHVtbnMsIGFuZCBjaGVj
ayB0aGUKICBgbnVtKHAvYylgIHNpZ24tb25seSBwcm9wZXJ0eSBzdGF0ZS1mcmVlbHkgdXNpbmcg
dGhlIHRhYmxlJ3MgY29uc3RhbnRzLgoqIFRlc3Qgc3VpdGU6IHBlci10ZXN0IHN1YnByb2Nlc3Mg
YGtub3duX2dvb2Q6W2ldJCBjaGFyc2V0c190ZXN0KCkkYCwgMzAwIHMgdGltZW91dCwKICByZXN1
bHRzIGNvbXBhcmVkIGJlZm9yZS9hZnRlciBwYXRjaCAoYHJlcy1vcmlnLnR4dGAgLyBgcmVzLWZp
eGVkLnR4dGApLgo=
--000000000000f853f0065813d444
Content-Type: application/octet-stream; name="verify_lcoeff_table.mac"
Content-Disposition: attachment; filename="verify_lcoeff_table.mac"
Content-Transfer-Encoding: base64
Content-ID: <f_msc2x6qd0>
X-Attachment-Id: f_msc2x6qd0
LyogVmVyaWZ5IERhbi9WaWt0b3IncyAxOC1yb3cgbGNvZWZmIHRhYmxlIGFnYWluc3QgdGhlIGxv
YWRlZCBjaGFyc2V0cyBsY29lZmYuCiAgIFJ1biBmcm9tIHNoYXJlL2FsZ2VicmEvY2hhcnNldHM6
ICBtYXhpbWEgLWIgdmVyaWZ5X2xjb2VmZl90YWJsZS5tYWMKICAgV2l0aCB0aGUgdW5wYXRjaGVk
IGNoYXJzZXRzX3Bvd2Vycy5saXNwLCBsY29lZmYoKSBtYXRjaGVzIHRoZSAiTWF4aW1hIiBjb2x1
bW4KICAgMTgvMTg7IHdpdGggdGhlIHBhdGNoZWQgKE1hcGxlLWNhbm9uaWNhbCkgdmVyc2lvbiBp
dCBtYXRjaGVzIHRoZSAiTWFwbGUiCiAgIGNvbHVtbiAxOC8xOC4gIEFsc28gY2hlY2tzIHRoYXQg
bnVtKHAvbGNvZWZmKHApKSBjYW4gb25seSBkaWZmZXIgYnkgYW4KICAgb3ZlcmFsbCBzaWduIGJl
dHdlZW4gdGhlIHR3byBjb252ZW50aW9ucyAobmV2ZXIgYnkgbWFnbml0dWRlKS4gKi8KZGlzcGxh
eTJkOmZhbHNlJApsb2FkKCJjaGFyc2V0cy5tYWMiKSQKZXhwcnM6WwogLXgxLTIqeDEqeDJeMiso
LXgxXjIpKngyLXgzXjIreDEqeDIqeDMsCiAyKngxXjIqeDItMip4MSp4Ml4yKygtMikqeDFeMip4
Ml4yLXgxLXgxXjIsCiAxKzMqeDIqeDNeMisoLXgyKSp4Mys0KngyXjIrKC0yKSp4Ml4zKngzKzQq
eDJeNCwKIDQqeDJeMys0KngyXjUreDIrKC00KSp4NCp4Ml40KygtNCkqeDQqeDJeMi14NCwKIDEr
OCp4Ml42KzEyKngyXjQrNip4Ml4yLAogMTIqeDJeNSsxMip4Ml4zKzMqeDIsCiAtMS00KngyXjQr
KC00KSp4Ml4yLAogNCp4Ml40KzQqeDJeMisxLAogLTIqeDJeMy14Mit4Ml4yKngzK3gyXjIsCiAy
KngyXjQreDJeMisoLTIpKng0KngyXjMrKC14NCkqeDIreDQqeDJeMi14Ml4zLAogLTQqeDJeNS01
KngyXjMrNCp4Ml40LXgyKzIqeDJeMiwKIDQqeDJeNCsyKngyXjIrKC0yKSp4Ml4zLAogLTIqeDJe
My14Mit4Ml4yLAogMip4Ml4zK3gyLXgyXjIsCiAyKng0KngyXjIreDIteDJeMiwKIC0xK3gzXjIs
CiAteDQreDIsCiAtMS0yKngyXjIreDJdJAp0YWJfbWF4aW1hOlstMSwtMiwzLC00LDgsMTIsLTQs
NCwxLC0yLC00LDQsLTIsMiwyLDEsLTEsLTJdJAp0YWJfbWFwbGUgOlstMSwtMiw0LDQsOCwxMiwt
NCw0LC0yLDIsLTQsNCwtMiwyLDIsMSwxLC0yXSQKbm14OjAkIG5tcDowJApmb3IgaToxIHRocnUg
MTggZG8gYmxvY2soW2w6bGNvZWZmKGV4cHJzW2ldKV0sCiAgaWYgbCA9IHRhYl9tYXhpbWFbaV0g
dGhlbiBubXg6bm14KzEsCiAgaWYgbCA9IHRhYl9tYXBsZVtpXSAgdGhlbiBubXA6bm1wKzEsCiAg
aWYgbCAjIHRhYl9tYXhpbWFbaV0gYW5kIGwgIyB0YWJfbWFwbGVbaV0gdGhlbgogICAgcHJpbnQo
InJvdyIsaSwiOiBsY29lZmYgPSIsbCwibWF0Y2hlcyBORUlUSEVSIGNvbHVtbiAobWF4aW1hIiwK
ICAgICAgICAgIHRhYl9tYXhpbWFbaV0sIiwgbWFwbGUiLHRhYl9tYXBsZVtpXSwiKSIpKSQKcHJp
bnQoImxjb2VmZigpIG1hdGNoZXMgdGhlIE1heGltYSBjb2x1bW4gb24iLG5teCwib2YgMTggcm93
cyIpJApwcmludCgibGNvZWZmKCkgbWF0Y2hlcyB0aGUgTWFwbGUgIGNvbHVtbiBvbiIsbm1wLCJv
ZiAxOCByb3dzIikkCmVxczowJCBzZ3M6MCQgYmFkOjAkCmZvciBpOjEgdGhydSAxOCBkbyBibG9j
ayhbYTpudW0oZXhwcnNbaV0vdGFiX21heGltYVtpXSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgYjpudW0oZXhwcnNbaV0vdGFiX21hcGxlW2ldKV0sCiAgaWYgZXhwYW5kKGEtYik9MCB0aGVu
IGVxczplcXMrMQogIGVsc2UgaWYgZXhwYW5kKGErYik9MCB0aGVuIHNnczpzZ3MrMQogIGVsc2Ug
KGJhZDpiYWQrMSwgcHJpbnQoInJvdyIsaSwibm9ybWFsaXphdGlvbnMgZGlmZmVyIGJ5IE1PUkUg
dGhhbiBhIHNpZ24hIikpKSQKcHJpbnQoIm51bShwL2xjKSB3aXRoIHRoZSB0d28gY29udmVudGlv
bnM6IGlkZW50aWNhbCBvbiIsZXFzLAogICAgICAicm93cywgc2lnbi1mbGlwcGVkIG9uIixzZ3Ms
InJvd3MsIG90aGVyIG9uIixiYWQsInJvd3MiKSQK
--000000000000f853f0065813d444
Content-Type: application/octet-stream; name="charsets-lcoeff.diff"
Content-Disposition: attachment; filename="charsets-lcoeff.diff"
Content-Transfer-Encoding: base64
Content-ID: <f_msc2x6qj1>
X-Attachment-Id: f_msc2x6qj1
LS0tIGEvc2hhcmUvYWxnZWJyYS9jaGFyc2V0cy9jaGFyc2V0c19wb3dlcnMubGlzcAorKysgYi9z
aGFyZS9hbGdlYnJhL2NoYXJzZXRzL2NoYXJzZXRzX3Bvd2Vycy5saXNwCkBAIC0xMDgsMTIgKzEw
OCwzNiBAQAogCSAgICAgICgkb3JkaW5hbF9zdHJpbmcgaSkgZiBlKSkpCiAKIDs7IFJldHVybiBh
IE1heGltYSBsaXN0IG9mIHRoZSBub24tY29uc3RhbnQgcmF0IHZhcmlhYmxlcyBpbiBlLgotICAg
Cis7OworOzsgVGhlIGxpc3QgaXMgc29ydGVkIHRoZSB3YXkgTWFwbGUgY2Fub25pY2FsbHkgb3Jk
ZXJzIGEgc2V0IG9mIG5hbWVzOgorOzsgc2hvcnRlciBuYW1lcyBmaXJzdCwgbmFtZXMgb2YgZXF1
YWwgbGVuZ3RoIGluIGxleGljb2dyYXBoaWMgKHN0cmluZykKKzs7IG9yZGVyICgic2hvcnRsZXgi
KS4gIFJhdGlvbmFsZTogdGhlIG9uZS1hcmd1bWVudCBmb3JtcyBsY29lZmYocCksCis7OyB0Y29l
ZmYocCksIGx0ZXJtKHApIG1pcnJvciBNYXBsZSdzIGxjb2VmZi90Y29lZmYsIHdoaWNoIGFyZSBk
ZWZpbmVkCis7OyBhcyBsY29lZmYocCwgaW5kZXRzKHApKS4gIFNpbmNlIHRoZSBzZXRzLWluLWNh
bm9uaWNhbC1vcmRlciBjaGFuZ2UKKzs7IChNYXBsZSAxMiksIHRoZSBtZW1iZXJzIG9mIGEgc2V0
IG9mIG5hbWVzIGFyZSBrZXB0IGluIHRoaXMgb3JkZXIsIGFuZAorOzsgbGNvZWZmKHAsW3gxLC4u
Lix4bl0pID0gbGNvZWZmKC4uLihsY29lZmYocCx4MSksLi4uKSx4biksIGkuZS4gdGhlCis7OyBG
SVJTVCAoY2Fub25pY2FsbHkgc21hbGxlc3QpIG5hbWUgaXMgdGhlIE1PU1Qgc2lnbmlmaWNhbnQg
dmFyaWFibGUgb2YKKzs7IHRoZSBpbmR1Y2VkIHB1cmUgbGV4aWNvZ3JhcGhpYyB0ZXJtIG9yZGVy
LgorOzsKKzs7IFRoaXMgZnVuY3Rpb24gZm9ybWVybHkgcmV0dXJuZWQgdGhlIHJhdCB2YXJpYWJs
ZXMgaW4gcmV2ZXJzZSBvcmRlcgorOzsgKE1heGltYSdzIG1haW4gcmF0IHZhcmlhYmxlIGZpcnN0
LCBlLmcuIFt4NCx4Myx4Mix4MV0pLCB3aGljaCBtYWRlCis7OyBvbmUtYXJndW1lbnQgbGNvZWZm
KHApIHVzZSB0aGUgbWlycm9yLWltYWdlIGxleGljb2dyYXBoaWMgb3JkZXIsIHNvCis7OyB0aGUg
bnVtZXIocC9sY29lZmYocCkpIG5vcm1hbGl6YXRpb25zIGluIGNoYXJzZXRzIGNvdWxkIGRpZmZl
ciBmcm9tCis7OyBXYW5nJ3MgTWFwbGUgcmVzdWx0cyBieSBhbiBvdmVyYWxsIHNpZ24uCisKKyhk
ZWZ1biBtYXBsZS1zZXQtb3JkZXItbGVzc3AgKGEgYikKKyAgKGxldCAoKHNhIChtZnVuY2FsbCAn
JHN0cmluZyBhKSkKKwkoc2IgKG1mdW5jYWxsICckc3RyaW5nIGIpKSkKKyAgICAoY29uZCAoKDwg
KGxlbmd0aCBzYSkgKGxlbmd0aCBzYikpIHQpCisJICAoKD4gKGxlbmd0aCBzYSkgKGxlbmd0aCBz
YikpIG5pbCkKKwkgICh0IChhbmQgKHN0cmluZzwgc2Egc2IpIHQpKSkpKQorCiAoZGVmdW4gbm9u
LWNvbnN0YW50LXJhdHZhcnMgKGUpCiAgIChsZXQgKCh2IChjZHIgKCRzaG93cmF0dmFycyBlKSkp
CiAJKGFjYykpCi0gICAgKGRvbGlzdCAodmkgdiBgKChtbGlzdCBzaW1wKSAsQGFjYykpCi0gICAg
ICAoaWYgKG5vdCAoJGNvbnN0YW50cCB2aSkpIChwdXNoIHZpIGFjYykpKSkpCisgICAgKGRvbGlz
dCAodmkgdikKKyAgICAgIChpZiAobm90ICgkY29uc3RhbnRwIHZpKSkgKHB1c2ggdmkgYWNjKSkp
CisgICAgYCgobWxpc3Qgc2ltcCkgLEAoc29ydCBhY2MgIydtYXBsZS1zZXQtb3JkZXItbGVzc3Ap
KSkpCiAKIDs7IElmIGUgaXMgYSBsaXN0LCBtYXAgJHBvd2VycyBvdmVyIHRoZSBsaXN0LiAgSWYg
ZSBpcyBhIHN1bSBvZiBwb3dlcnMgCiA7OyBvZiBwb3dlcnMgb2YgeCwgcmV0dXJuIGEgbGlzdCBv
ZiB0aGUgZXhwb25lbnRzLgo=
--000000000000f853f0065813d444
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--000000000000f853f0065813d444
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
--000000000000f853f0065813d444--