**HP Prime CAS: Degree of a Polynomial and Homogeneous Test**

**Note**

The
following two programs degpoly and ishomogeneous are CAS Mode specific
programs. When you are creating a new
program file in this instance, make sure the CAS box is checked on the New
Program screen (see below).

**Degree of a Polynomial**

The
program degpoly is a more complete version of the degree command. The degree command tests a single variable,
default to x if no variable is specified.
The program degpoly calculates the degree of a polynomial, considering
four variables: x, y, z, and t.
Combinations of these four variables, such as x*y, x*y*z, and t*z are also
considered.

**HP Program degpoly:**

#cas

degpoly(poly):=

BEGIN

// 2016-07-31 EWS

// x,y,z,t

LOCAL tms,cnt,pt,lst,wp,dg,dgr;

tms:=part(poly);

lst:={};

FOR pt FROM 1 TO tms DO

wp:=part(poly,pt);

dg:=degree(wp,x)+degree(wp,y)+

degree(wp,z)+degree(wp,t);

lst:=concat(lst,{dg});

END;

dgr:=MAX(lst);

return dgr;

END;

#end

I
recommend that you type out the commands when programming in CAS mode. Make sure the suffix “CAS.” is removed from
any command inside the program.

**Accessing CAS Programs**

In
CAS mode, press [Vars], then the soft key (CAS), select Program for the list of
programs

Examples:

degpoly(x^2
+ 3*x – 1) returns 2

degpoly(x^2
+ 3*y – 1) returns 2

degpoly(x*y
– y^2 + t) returns 2

degpoly(x^2*y^2
– 3*z^2) returns 4

**Polynomial Homogeneous Test**

A
polynomial is homogeneous if all of the nonzero terms has the same degree. Tests a polynomial of four variables x, y, z,
and t and their combinations (x*y, x*z, x*y*z, etc). If the polynomial in question is homogeneous,
the program returns a 1 (for true), otherwise 0 is returned (for false).

HP
Prime Program ishomogeneous

#cas

ishomogeneous(poly):=

BEGIN

// 2016-08-03 EWS

// x,y,z,t

LOCAL tms,cnt,pt,lst,wp,dg,dgr;

tms:=part(poly);

lst:={};

FOR pt FROM 1 TO tms DO

wp:=part(poly,pt);

dg:=degree(wp,x)+degree(wp,y)+

degree(wp,z)+degree(wp,t);

lst:=concat(lst,{dg});

// test

IF pt≥2 THEN

IF lst(pt)≠lst(pt-1) THEN

RETURN 0;

KILL;

END;

END;

END;

return 1;

END;

#end

Examples:

ishomogeneous(x^2
+ 3) returns 0

ishomogeneous(x^2
+ 3*y^2) returns 1 (all terms are of
degree 2)

ishomogeneous(x^2*z
– 3*y^2*t + x^3) returns 1 (all terms
are of degree 3)

ishomogeneous(x^2*z
– 3*y^2) returns 0

Source:

Avner
Ash and Robert Gross. “Elliptic
Tales. Curves, Counting, and Number
Theory” Princeton University Press, New
Jersey 2016.

This
blog is property of Edward Shore, 2016.