Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/*
 * This file:
 *   http://anggtwu.net/MAXIMA/2025-1-exact.mac.html
 *   http://anggtwu.net/MAXIMA/2025-1-exact.mac
 *          (find-angg "MAXIMA/2025-1-exact.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 *
 * (defun e () (interactive) (find-angg "MAXIMA/2025-1-exact.mac"))
 * (find-angg "MAXIMA/lazynouns.lisp")
 * (find-angg "MAXIMA/2025-methods.mac")
 * (find-angg "MAXIMA/2024-2-C2-E5.mac")
 *
 * «.Exact»		(to "Exact")
 * «.Exact-tests»	(to "Exact-tests")
 * «.caixinhas»		(to "caixinhas")
 * «.caixinhas-tests»	(to "caixinhas-tests")
 * «.boyce»		(to "boyce")
*/
load("~/MAXIMA/2025-methods.mac");
load("~/MAXIMA/lazynouns.lisp");
texput(z_x, "z_x ");
texput(z_y, "z_y ");

/* «Exact»  (to ".Exact")
 * (c2m251edosexatasp 3 "metodo-e-exemplo")
 * (c2m251edosexatasa   "metodo-e-exemplo")
*/
E5_3(z,z_x,z_y) := matrix(
  [d *. z,       "=", z_x *. dx +. z_y *. dy          , "=", 0],
  [diff_(z,x,1), "=", z_x       +. z_y *. diff_(y,x,1), "=", 0],
  [z,            "=", C                               , "", ""]);

E5_0()        := E5_3(z,      z_x,       z_y);
E5_1(z)       := E5_3(z, diff(z,x), diff(z,y));
E5_2(z_x,z_y) := E5_3(z,      z_x,       z_y);

defstruct(Exact(z_, z_x_, z_y_));
Exact_from3(z,z_x,z_y) := Exact(z, z_x, z_y);
Exact_from2  (z_x,z_y) := Exact(z, z_x, z_y);
Exact_from1(z)         := Exact(z, diff(z,x), diff(z,y));
Exact_from0()          := Exact(z, z_x, z_y);
Exact__E5  (e)         := E5_3(e@z_, e@z_x_, e@z_y_);
Exact__ode (e)         := (e@z_x_ + e@z_y_ * 'diff(y,x) = 0);
Exact__odesolve(e)     := ode2(e@@ode(),y,x);
Exact__odesols (e)     := solve(e@@odesolve(), y);
Exact__odesubst(e,eq)  := subst(eq,e@@ode());
Exact__z_xy    (e)     := diff(e@z_x_,y);
Exact__z_yx    (e)     := diff(e@z_y_,x);
Exact__exact   (e)     := e@@z_xy() = e@@z_yx();
Exact__zfromzx (e)     := integrate(e@z_x_,x) + expand("?"*(1+y+y^2+y^3));
Exact__zfromzy (e)     := integrate(e@z_y_,y) + expand("?"*(1+x+x^2+x^3));

/* «Exact-tests»  (to ".Exact-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac");
E5_0();
E5_1(x^2+y^2);
E5_2(2*x,2*y);

ee : Exact_from0();
ee : Exact_from1(x^2+y^2);
ee : Exact_from2(2*x, 2*y);
ee@@E5();
ee@@ode();
ee@@odesolve();
sols  : ee@@odesols();
sol   : sols[1];
test1 : ee@@odesubst(sol);
test2 : ev(test1, diff);

*/



/* «caixinhas»  (to ".caixinhas")
*/
mkmatrix5(x,xs,y,ys,expr) ::=
  buildq([x,xs,y,ys,expr],
         apply('matrix,
               makelist(makelist(ev(expr),x,xs),y,ys)));

[maxxp,maxyp] : [3,3];
polycoef(poly,xp,yp) := ratcoef(ratcoef(poly, 'x,xp), 'y,yp);
caixinhas0(expr) :=
  mkmatrix5(xp,seq(0,maxxp), yp,seqby(maxyp,0,-1), expr);
caixinhas (poly) :=
  mkmatrix5(xp,seq(0,maxxp), yp,seqby(maxyp,0,-1), polycoef(poly,xp,yp));

caixinhas_3(z__, z__x, z__y) := [caixinhas(z__), caixinhas(z__x), caixinhas(z__y)];
caixinhas_2     (z__x, z__y) :=                 [caixinhas(z__x), caixinhas(z__y)];
caixinhas_1(z__)             := caixinhas_3(z__, diff(z__,x), diff(z__,y));

Exact__caixinhas_z  (e) := caixinhas  (e@z_);
Exact__caixinhas_z_x(e) := caixinhas        (e@z_x_);
Exact__caixinhas_z_y(e) := caixinhas                (e@z_y_);
Exact__caixinhas_2  (e) := caixinhas_2(      e@z_x_, e@z_y_);
Exact__caixinhas_3  (e) := caixinhas_3(e@z_, e@z_x_, e@z_y_);
Exact__effs         (e) := [e@@exact(),
                            caixinhas(ee@@zfromzx()),
                            caixinhas(ee@@zfromzy())];
Exact__effsc        (e) := [map('caixinhas, e@@exact()),
                            caixinhas(ee@@zfromzx()),
                            caixinhas(ee@@zfromzy())];

/* «caixinhas-tests»  (to ".caixinhas-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac");
polycoef  (x^2*y^3*4, 2,3);
caixinhas0([xp,yp]);
caixinhas  (x^2*y^3*4);
caixinhas_1(x^2*y^3*4);
[maxxp,maxyp] : [2,3];
caixinhas_1(x^2*y^3*4);

ee : Exact_from1(x^2+y^2);
ee@@caixinhas_2();
ee@@caixinhas_3();

[maxxp,maxyp] : [3,3];
ee : Exact_from1(x^2*y^3);
ee@@caixinhas_2();
ee@@caixinhas_3();
ee@@effs();
ee@@effsc();

*/




/*
** (c2m251edosexatasp 5 "maxima-exact")
** (c2m251edosexatasa   "maxima-exact")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac")$
ee : Exact_from0()$
ee@@E5();
ee : Exact_from1(x^2+y^2)$
ee@@E5();
ee : Exact_from2(2*x, 2*y)$
ee@@E5();
ee@@ode();
ee@@odesolve();
sols  : ee@@odesols();
sol   : sols[1];
test1 : ee@@odesubst(sol);
test2 : ev(test1, diff);

* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac");
ee : Exact_from1(x^2*y^3);
ee@@caixinhas_3();
ee@@caixinhas_2();
ee : Exact_from1(x^2+y^2);
ee@@caixinhas_3();
ee@@caixinhas_2();

p : A*x^0*y^2 + B*x^1*y^2 + C*x^2*y^2
  + D*x^0*y^1 + E*x^1*y^1 + F*x^2*y^1
  + G*x^0*y^0 + H*x^1*y^0 + I*x^2*y^0;
caixinhas(p);
ee : Exact_from1(p);
ee@@caixinhas_3();

** (find-books "__analysis/__analysis.el" "boyce-diprima-pt" "72" "2.6. Equações Exatas")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac");
[maxxp,maxyp] : [3,3];
[maxxp,maxyp] : [2,2];
ee : Exact_from1(x*y^2 + x^2*y^2);
ee : Exact_from1(x*y^2 + x^2*y^2 + x^2);
ee : Exact_from1(x^2 + x*y^2);             "Boyce, exemplo 1"$
ee@@caixinhas_2();
ee@@caixinhas_3();

o : 10*x^4*y^5;
diff(o, x);
diff(o, y);

ee : Exact_from2(2*x+3, 2*y-2);
ee : Exact_from3(2*x*y, 2*x+3, 2*y-2);
ee@@caixinhas_3();

*/


/* «boyce»  (to ".boyce")
** (c2m251edosexatasp 7 "maxima-caixinhas-2")
** (c2m251edosexatasa   "maxima-caixinhas-2")
** (find-books "__analysis/__analysis.el" "boyce-diprima-pt" "72" "2.6. Equações Exatas")
** (find-books "__analysis/__analysis.el" "boyce-diprima-pt" "76" "Problemas")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("2025-1-exact.mac");
linel : 110;

[maxxp,maxyp] : [2,2];
"1"$  ee : Exact_from3("?", 2*x+3, 2*y-2);
ee@@caixinhas_2();
ee@@effsc();

"2"$  ee : Exact_from3("?", 2*x+4*y, 2*x-2*y);
ee@@caixinhas_2();
ee@@effsc();

[maxxp,maxyp] : [3,3];
"3"$  ee : Exact_from3("?", 3*x^2 - 2*x*y + 2, 6*y^2 - x^2 + 3);
ee@@caixinhas_2();
ee@@effsc();

*/