[comp.sys.handhelds] HP-info/bugs/upgrade

dave@bgtys6.uucp (Dave Hubert) (02/19/91)

Does anyone have any good eiganvalue/eigenvector programs for the 
HP-48sx, or any other useful linear math programs?? (Text-format, cause
I have to type it in).

I would also appreciate someone sending me a list of bugs with version
D rom for 48sx.  I read something about problems with polar 
representation?  I've tried talking to HP, and they didn't help at all.
Apparently, HP is not in the buisness of giving out lists of bugs
with the rom, but HP will appreciate you telling them any problems
you've been having, so they can add it to their list.

The 1-800 number I called in Canada didn't even know about the 
different versions of rom.  Does anyone know if there is an upgrade
available for Canada?  I am in a bachelor of mathematics program,
and I'll probably start to run into the polar bug or whatever
sooner or later. Help? Someone??

Thanks in advance...
-----------------------------------------------------------------------
    Dave Hubert     |                                   ___         ___
    Ottawa, Canada  | This is where you paste the      /  / /\    //  /
    (613) 763-8979  | standard disclaimer to any      /--< /  \  //\_/
    U of Waterloo   | intelligence whatsoever.       /___//    \//  \
    Coop, Math-CS   |                      -- Bell Northern Research --
-----------------------------------------------------------------------

akcs.tasmith@hpcvbbs.UUCP (Ted A Smith) (02/20/91)

I just happen to have some eigenvalue/eigenvector routines...

Here is a quick and dirty eigenvalue/eigenvector decomposition for
  real symetric matricies.
 
I used the Jacobi method.
 
The termination test is a hack (I just test to see if the
  eigenvector matrix has changed in a given pass!)  I don't
  have any idea if there is a possibility of non-termination.
 
Eigen takes a real symetric matrix in level 1 and returns
  the matrix of eigenvectors in level 2 and the eigenvalues
  are along the diagonal of the matrix in level 1.  (The
  offdiagonal values should be small in relation to the
  diagonal values.)
 
EClr can be used to 0 the offdiagonal values.
 
EFun takes a real symetric matrix (M) in level 2 and a function
  of 1 real arg (F) in level 1 and returns F(M) in level 1.
 
For example in analogy with 'SIN(x)^2+COS(x)^2==1':
  [[ 1 2 3 ] [ 2 4 5 ] [ 3 5 6 ]]
  DUP  \<< SIN \>> EFun DUP *
  OVER \<< COS \>> EFun DUP * +
 
  [[ .999999999981 9.89E-12 -1.881E-11 ]
   [ 1.188E-11 .999999999959 -3.3E-12 ]
   [ -1.801E-11 -2.3E-12 .999999999962 ]]
 
Ted A Smith
PO Box 6308
Longmont CO 80501
H) (303)651-2092
W) (303)447-1572
HPBBS - akcs user tasmith
Feb 6, 1991

%%HP: T(3)A(D)F(.);
DIR
  Eigen
    \<< DUP IDN SWAP
        DUP SIZE 1 GET \-> d
      \<<
        DO OVER
          SWAP 1 d 1 -
          FOR i i 1 + d
            FOR j
              DUP { j j } GET OVER { i i } GET -
              OVER { i j } GET 3 PICK { j i } GET +
              IF DUP
              THEN
                /
                IF DUP
                THEN
  DUP SIGN SWAP ABS DUP SQ 1 + \v/ + /
                ELSE
  DROP 1
END
DUP SQ 1 + \v/ INV SWAP OVER * DUP NEG 4 PICK IDN
{ j i } ROT PUT { i j } ROT PUT { i i }
3 PICK PUT { j j } ROT PUT
ROT OVER * OVER TRN 4 ROLL * ROT *
              ELSE
                DROP2
              END
            NEXT
          NEXT
        UNTIL
  ROT 3 PICK SAME
        END 1 d
        FOR i 1 d
          FOR j
            IF i j SAME NOT
            THEN
      { i j } 0 PUT
            END
          NEXT
        NEXT
      \>>
    \>>
  EFun
    \<< \-> f
      \<< Eigen 1 OVER SIZE 1 GET
        FOR i
  { i i } DUP2 GET f EVAL PUT
        NEXT
OVER TRN * *
      \>>
    \>>
  EClr
    \<< DUP SIZE 1 GET \-> d
      \<< 1 d
        FOR i 1 d
          FOR j
            IF i j SAME NOT
            THEN
      { i j } 0 PUT
            END
          NEXT
        NEXT
      \>>
    \>>
END
Sorry about the indentation... Must be a tab stop problem.
A casual read indicates no problems however.