### # #### # ###
# # # # ## # #
# # # # # # # #
####### # # #### # # ###
# # # # # ##### # #
# # # # # # # #
# # #### #### # ###
AN ALGEBRA LIBRARY FOR THE HP48
Version 4.0
(c) 1994-97 by Claude-Nicolas Fiechter & Mika Heiskanen
1. ACKNOWLEDGEMENTS, COPYRIGHT & DISCLAIMER OF WARRANTY
=======================================================
All the files of the ALG48 library are copyrighted (c) by
Claude-Nicolas Fiechter and Mika Heiskanen.
ALG48 is distributed in the hope that it will be useful, but the
COPYRIGHT HOLDERS PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM.
This version of ALG48 is a GiftWare release. You may use it as long as
you like, but only for non-commercial purposes and only as a private
person. Permission to copy the whole, unmodified, ALG48 library is
granted provided that the copies are not made or distributed for resale
(excepting nominal copying fees) and provided that you conspicuously and
appropriately include on each copy this copyright notice and disclaimer
of warranty.
Special thanks to Dominique Rodriguez for his LaTeX version of the
documentation for ALG48 v2.1, and to Joe Horn for his many useful
comments, suggestions and detailed bug reports.
2. OVERVIEW
===========
ALG48 is a comprehensive symbolic math package for the HP48. It includes
commands for algebraic simplification, factorization, partial fraction
expansion, symbolic integration, symbolic matrices manipulation, and for
solving systems of nonlinear polynomial equations.
ALG48 differs from other math packages for the HP48 in two important
aspects:
1. ALG48 can manipulate, simplify, and factorize multivariate
polynomials and functions, i.e., algebraic expressions with
several variables.
2. ALG48 only does exact calculation, using unlimited precision
integers and advanced computer algebra algorithms (as opposed to
doing approximate calculation using floating point numbers and
numerical algorithms). This not only means you will not get wrong
or approximate results ($2.00001$, $4.9999$ and the like), but
also that all and only exact simplifications are performed.
Here are some examples of ALG48 operations. The time taken for the
commands on a HP48GX (with ~60K free) are given in brackets.
* Simplification of multivariate polynomials
and rational functions:
Y
1 - ---
X+Y
1 - -------
X
1 - ---
X+Y 2 2
------------------------- = RSIM => INV(X + X*Y + Y )
2 X [X*Y ] [1.8s]
Y - -------- * [--- - X]
X [Y-X ]
1 + ---
Y-X
* including polynomials and rational functions with
non-rational subexpressions:
COS(A)*SIN(A)-COS(A)-SIN(A)+1 SIN(A)-1
----------------------------- = RSIM => --------
COS(A)*SIN(A)+COS(A)-SIN(A)-1 [0.9s] SIN(A)+1
* Complete factorization of polynomials and rational functions:
9 8 7 6 5 4 3 2
75X -435X +852X -576X -663X +3027X -4911X +3402X-735X
2
= FCTR [4.9s] => 3 * X * (X^2-3*X+1) * (X^4+X-5) * (5X-7)
* including polynomials and rational functions in several variables:
5 4 2 3 2 3 3 2 2 2 2 3 3 2
3*X *Y+9*X Y -3X Y +21X Y-2X +X Y -6X Y+5X +3XY +17XY-14X-Y +7Y -5Y+35
= FCTR [11.2s] => (X^2+3XY-Y+7) * (3X^3Y-2X+Y^2+5)
* Simplification of non-rational expressions:
SQRT(X^3+X^2-X-1) SQRT(X-1)
------------------------- = ASIM => -----------
SQRT(12*SQRT(5)+49)*(X+1) [4.3s] 3*SQRT(5)+2
* including exponential functions:
X*EXP(3*LN(X)+LN(X^2)) - 1 4 2
-------------------------- = ASIM => 2*X +2*X +2
LN(SQRT(EXP(X^2-1))) [1.8s]
* and trigonometric functions:
COS(ASIN(SIN(X)-COS(X)))^2 SIN(X)*COS(X)
-------------------------- = ASIM => -------------
LN(SIN(X)*COS(X)*TAN(X)) [8.6s] LN(SIN(X))
* Partial fraction expansion along one or several variables:
X^3Y^2-3X^3Y+3X^3-X^2Y^2+2X^2Y-3X^2-XY^4+5XY^3-8XY^2+5XY-Y^3+3Y^2-2Y
--------------------------------------------------------------------
X^2Y^2-3X^2Y+2X^2-XY^3+2XY^2+XY-2X+Y^3-3Y^2+2Y
X X Y Y
= PF => Y + X + --- - --- + --- + ---
[8.3s] Y-2 Y-1 X-Y X-1
* Rational function integration:
27X^7-42X^6-106X^5-47X^4+224X^3-147X^2+313X+138
-------------------------------------------------
15x^8-15x^7+15x^6-60x^5+90x^4-105x^3+45x^2+60x-45
9X-11 X+1 3
= X RINT => --------- + SQRT(2) ATAN( ------- ) + - LN(X^3+X+1)
[8.8s] 3X^2-6X+3 SQRT(2) 5
* Symbolic vector and matrix operations:
Inverse
{{ 3 2*X^2 1 } {{ 2*X^4+1 (-4*X^4-1)/(2*X) X^2 }
{ 4*X 2*X^3 2*X } = AINV => { -2*X^2 2*X -1 }
{ 2*X^2 -1 2*X^2 }} [5.5s] { -2*X^4-2 (4*X^4+3)/(2*X) -X^2 }}
Determinant
{{ 1 T T T }
{ 1 K T T } 3 2 2 3 3
{ 1 T K T } = MDET => K -3K T+3KT -T = FCTR => (K-T)
{ 1 T T K }} [1.6s] [1.8s]
Addition, Subtraction, Negation, Multiplication,
Division, Exponentiation, Transpose ...
* Solution of systems of linear equations (Ax = b)
with symbolic coefficients
b: { 1 2 3 }
A: {{ 1-T 2 -4 }
{ 3/2-T 3 -5 }
{ 5/2+T 5 -7 }}
= ADIV [3.3s] =>
x: { INV(-2*T) (7*T+1)/(4*T) 3/4 }
* Solution of systems of nonlinear polynomial equations
using Groebner bases
{ 2X^2+XY-Y+1=0
-3XY-X+2Y^2-2=0
2X^2-3XY^2+2Y^3-3Y+1=0 }
= { X Y } GSOLVE [4.9s] =>
{ X Y-1 } , { 2X-6Y-5 14Y^2+21Y+9 }
Additional features include:
* Provides arithmetic operations on unlimited-size integer numbers,
including modular arithmetic, integer factorization, and primality
testing.
* Can be used to easily calculate with fractions.
* Can perform algebraic operations over finite fields (modular
polynomials).
* Can handle polynomials and rational functions of arbitrary degrees
and with arbitrary many variables (limited only by your HP48's memory
and by your patience).
* Entirely written in system-RPL and machine language.