hp41programs

Bionic Orthopoly

Bionic Orthogonal Polynomials for the HP-41


Overview
 

 0°)  Extra Registers & M-Code Routines
 1°)  Legendre Polynomials
 2°)  Generalized Laguerre's Polynomials
 3°)  Hermite Polynomials
 4°)  Chebyshev Polynomials
 5°)  UltraSpherical Polynomials
 6°)  Jacobi Polynomials
 7°)  Associated Legrendre Functions of the 1st kind - Integer Order and Degree
 
 

0°)  Extra Registers & M-Code Routines
 

-The following programs use 1 to 3 extra-registers that I've called:   U V W
-STO W &  RCL W   are listed in "A few M-Code Routines for the HP-41"
-Registers U and V are coded in the same way.

-Of course, if n is not too large, you can replace these registers by R97  R98  R99

-Other M-Code routines are employed:

  X/E3   X+1   X-1   X/2               cf "A few M-Code Routines for the HP-41"

-The product of 2 bi-ons with proportional "imaginary parts"    B*B1     cf "Bi-ons for the HP-41"

-And M-Code routines that are useful for anions may also be used for bi-ons without any modification:

  A+A  A-A  ST*A  ST/A  AMOVE  ASWAP      cf "Anions" and "Anionic Functions for the HP-41"
 

1°)  Legendre Polynomials
 

Formulae:

    m.Pm(b) = (2m-1).b.Pm-1(b) - (m-1).Pm-2(b)  ,  P0(b) = 1  ,  P1(b) = b
 
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "LEGB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n =  Pm(b)
                                         R6n+1 ........  R8n = Pm-1(b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  X-1  AMOVE  ASWAP  ST*A  ST/A  A-A  B*B1  STO W  RCL W
 
 

 01  LBL "LEGB"
 02  X/E3
 03  STO W
 04  12
 05  AMOVE
 06  CLX
 07  ST*A
 08  14
 09  AMOVE
 10  SIGN
 11  STO 01
 12  LBL 01
 13  13
 14  AMOVE     
 15  RCL W
 16  ENTER^
 17  ISG X
 18  X=0?
 19  GTO 00
 20  STO W
 21  41
 22  AMOVE
 23  X<> Z
 24  INT
 25  ST*A
 26  14
 27  AMOVE     
 28  31
 29  AMOVE
 30  B*B1
 31  RCL W
 32  INT
 33  ST+ X
 34  X-1
 35  ST*A
 36  34
 37  ASWAP     
 38  23
 39  ASWAP
 40  A-A
 41  RCL W
 42  INT
 43  ST/A
 44  32
 45  AMOVE     
 46  GTO 01
 47  LBL 00
 48  RCL 00
 49  X/E3
 50  ISG X
 51  END

 
          ( 98 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 )
     and       1.2n  is the control number of the result

Example:         m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3                 ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

       7   XEQ "LEGB"  >>>>   1.008                                    ---Execution time = 37s---

And we get in registers R01 thru R08

      P7(b) =  ( -240.8232644 + 180.2220151 i )  +  ( -8.4974508 + 82.1615056 i ) e1
                                                                            + ( -6.6831028 + 128.8517448 i ) e2 + ( -4.8687548 + 175.541984 i ) e3
 

2°)  Generalized Laguerre's Polynomials
 

Formulae:

      L0(a) (b) = 1  ,   L1(a) (b) = a+1-b   ,    m Lm(a) (b) = (2.m+a-1-b) Lm-1(a) (b) - (m+a-1) Lm-2(a) (b)
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "LANB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n = Lm(b)
                                         R6n+1 ........  R8n = Lm-1(b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  X-1  AMOVE  ASWAP  ST*A  ST/A  A-A  B*B1
                         STO V   RCL V   STO W  RCL W
 
 

 01  LBL "LANB"
 02  X/E3
 03  STO W
 04  X<>Y
 05  STO V
 06  12
 07  AMOVE
 08  CLX
 09  ST*A
 10  14
 11  AMOVE
 12  SIGN
 13  STO 01
 14  LBL 01
 15  13
 16  AMOVE 
 17  RCL W
 18  ISG X
 19  X=0?
 20  GTO 00
 21  STO W
 22  23
 23  AMOVE     
 24  12
 25  ASWAP 
 26  X<> Z
 27  INT
 28  ST+ X
 29  X-1
 30  RCL V
 31  +
 32  ST- 01
 33  B*B1
 34  14
 35  ASWAP     
 36  SIGN
 37  RCL W
 38  INT
 39  -
 40  RCL V
 41  -
 42  ST*A
 43  24
 44  ASWAP     
 45  A-A
 46  RCL W
 47  INT
 48  ST/A
 49  32
 50  AMOVE     
 51  GTO 01
 52  LBL 00
 53  RCL 00
 54  X/E3
 55  ISG X
 56  END

 
     ( 104 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           Y             a           /
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 ) ,  a  is a real number
     and        1.2n  is the control number of the result

Example:     a = sqrt(2)    m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3           ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

       2   SQRT
       7   XEQ "LANB"  >>>>   1.008                                    ---Execution time = 39s---

And we get in registers R01 thru R08

      L7sqrt(2) (b) =  ( -5.035303539 - 80.93462041 i )  + ( -27.58137526 - 1.567289524 i ) e1
                                                                                   + ( -43.15232859 - 0.238461640 i ) e2 + ( -58.72328181 + 1.090366269 i ) e3
 

3°)  Hermite Polynomials
 

Formulae:

        H0(b) = 1  ,  H1(b) = 2 b
        Hm(b) = 2.b Hm-1(b) - 2 (m-1) Hm-2(b)
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "HMTB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n =  Hm(b)
                                         R6n+1 ........  R8n = Hm-1(b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  AMOVE  ASWAP  ST*A  ST/A  A-A  B*B1
                         STO W  RCL W
 
 

 01  LBL "HMTB"
 02  X/E3
 03  STO W
 04  12
 05  AMOVE
 06  CLX
 07  ST*A
 08  14
 09  AMOVE
 10  SIGN
 11  STO 01
 12  LBL 01
 13  13
 14  AMOVE      
 15  RCL W
 16  ENTER^
 17  ISG X
 18  X=0?
 19  GTO 00
 20  STO W
 21  41
 22  AMOVE      
 23  X<> Z
 24  INT
 25  ST*A
 26  14
 27  AMOVE
 28  31
 29  AMOVE      
 30  B*B1
 31  34
 32  ASWAP
 33  23
 34  ASWAP
 35  A-A
 36  2
 37  ST*A
 38  32
 39  AMOVE      
 40  GTO 01
 41  LBL 00
 42  RCL 00
 43  X/E3
 44  ISG X
 45  END

 
       ( 87 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 )
     and       1.2n  is the control number of the result

Example:         m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3                 ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

       7   XEQ "HMTB"  >>>>   1.008                                    ---Execution time = 34s---

And we get in registers R01 thru R08

      H7(b) =  ( 3548.365108 + 3989.424742 i )  +  ( 2872.096870 - 177.1388928 i ) e1
                                                                            + ( 4466.300006 - 506.1044224 i ) e2 + ( 6060.503142 - 835.0699520 i ) e3
 

4°)  Chebyshev Polynomials
 

Formulae:

      CF 02          Tm(b) = 2b.Tm-1(b) - Tm-2(b)   ;  T0(b) = 1  ;   T1(b) = b        ( first kind )
      SF 02          Um(b) = 2b.Um-1(b) - Um-2(b)  ;  U0(b) = 1  ;  U1(b) = 2b    ( second kind )
 

Data Registers:      •  R00 = 2n > 3                            ( Registers R00 thru R2n are to be initialized before executing "CHBB" )

                                      •  R01   ......  •  R2n = the n components of the bion b

                                         R4n+1 ........  R6n =  Tm(b)  or  Um(b)
                                         R6n+1 ........  R8n = Tm-1(b) or Um-1(b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flag: F02               if F02 is clear, "CHBB" calculates the Chebyshev polynomials of the first kind:   Tm(b)
                               if F02 is set,    "CHBB" calculates the Chebyshev polynomials of the second kind:   Um(b)

Subroutines:   X/E3  X-1  AMOVE  ASWAP  ST*A  A-A  B*B1
                         STO W  RCL W
 
 

 01  LBL "CHBB"
 02  X/E3
 03  STO W
 04  12
 05  AMOVE
 06  14
 07  AMOVE
 08  2
 09  ST*A
 10  12
 11  ASWAP       
 12  CLX
 13  ST*A
 14  14
 15  FS? 02
 16  AMOVE      
 17  SIGN
 18  STO 01
 19  LBL 01
 20  13
 21  AMOVE
 22  RCL W
 23  ISG X
 24  X=0?
 25  GTO 00       
 26  STO W
 27  B*B1
 28  34
 29  ASWAP
 30  23
 31  ASWAP       
 32  A-A
 33  23
 34  ASWAP
 35  GTO 01
 36  LBL 00
 37  INT
 38  X-1
 39  RCL 00        
 40  X/E3
 41  ISG X
 42  END

 
       ( 82 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           Y             /           m
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 )
     and       1.2n  is the control number of the result

Example:         m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3                 ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

  •   Chebyshev Polynomial 1st kind

       CF 02
       7   XEQ "CHBB"  >>>>   1.008                                    ---Execution time = 25s---

And we get in registers R01 thru R08

      T7(b) =  ( -558.0438464 + 462.2275712 i )  + ( -7.670764800 + 203.3249536 i ) e1
                                                                            + ( 4.299603200 + 317.8005888 i ) e2 + ( 16.26997120 + 432.2762240 i ) e3
 

  •   Chebyshev Polynomial 2nd kind

       SF 02
       7   XEQ "CHBB"  >>>>   1.008                                    ---Execution time = 25s---

And we get in registers R01 thru R08

      U7(b) =  ( -1176.666563 + 804.7309824 i )  + ( -61.19336960 + 378.9647872 i ) e1
                                                                            + ( -65.14447360 + 596.0805376 i ) e2 + ( -69.09557760 + 813.1962880 i ) e3
 

5°)  UltraSpherical Polynomials
 

Formulae:

       C0(a) (b) = 1  ;   C1(a) (b) = 2.a.b   ;    (m+1).Cm+1(a) (b) = 2.(m+a).b.Cm(a) (b) - (m+2a-1).Cm-1(a) (b)      if  a # 0

       Cm(0) (b) = (2/m).Tm(b)
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "USPB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n =  Cm(a) (b)
                                         R6n+1 ........  R8n = Cm-1(a) (b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  X-1  AMOVE  ASWAP  ST*A  ST/A  A+A  B*B1
                         STO W  RCL W  STO V  RCL V
                         "CHBB"  if  a = 0  ( cf paragraph above )
 
 

 01  LBL "USPB"
 02  X<>Y
 03  X#0?
 04  GTO 00
 05  X<>Y
 06  CF 02
 07  XEQ "CHBB"
 08  2
 09  RCL Z
 10  /
 11  ST*A
 12  GTO 02
 13  LBL 00
 14  STO V
 15  X<>Y
 16  X/E3
 17  STO W
 18  12
 19  AMOVE
 20  CLX
 21  ST*A
 22  14
 23  AMOVE 
 24  SIGN
 25  STO 01
 26  LBL 01
 27  13
 28  AMOVE       
 29  RCL W
 30  ISG X
 31  X=0?
 32  GTO 02        
 33  STO W
 34  B*B1
 35  RCL W
 36  INT
 37  X-1
 38  RCL V
 39  +
 40  ST+ X
 41  ST*A
 42  14
 43  ASWAP       
 44  2
 45  RCL W
 46  INT
 47  -
 48  RCL V
 49  ST+ X
 50  -
 51  ST*A
 52  34
 53  ASWAP
 54  23
 55  ASWAP
 56  A+A
 57  RCL W
 58  INT
 59  ST/A
 60  23
 61  ASWAP       
 62  GTO 01
 63  LBL 02
 64  RCL 00
 65  X/E3
 66  ISG X
 67  END

 
           ( 124 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           Y             a           /
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 ) ,  a  is a real number
     and        1.2n  is the control number of the result

Example:     a = sqrt(2)    m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3           ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

       2   SQRT
       7   XEQ "USPB"  >>>>   1.008                                    ---Execution time = 40s---

And we get in registers R01 thru R08

      C7sqrt(2) (b) =  ( -3142.090579 + 2008.230127 i )  + ( -198.7572026 + 969.5883167 i ) e1
                                                                                     + ( -232.4941704 + 1528.458350 i ) e2 + ( -266.2311383 + 2087.328384 i ) e3
 

-Likewise, you will find:

     C7(0) (b) =  ( -159.4410990 + 132.0650203 i )  + ( -2.191647086 + 58.09284388 i ) e1
                                                                                + ( 1.228458057 + 90.80016822 i ) e2 + ( 4.648563200 + 123.5074926 i ) e3
 

6°)  Jacobi Polynomials
 

Formulae:

        P0(a;c) (b) = 1  ;   P1(a;c) (b) = (a-c)/2 + b (a+c+2)/2

        2m(m+a+c)(2m+a+c-2) Pm(a;c) (b) = [ (2m+a+c-1).(a2-c2) + b (2m+a+c-2)(2m+a+c-1)(2m+a+c) ] Pm-1(a;c) (b)
                                                              - 2(m+a-1)(m+c-1)(2m+a+c) Pm-2(a;c) (b)
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "JCPB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n =  Pm(a;c) (b)
                                         R6n+1 ........  R8n = Pm-1(a;c) (b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  X-1  AMOVE  ASWAP  ST*A  ST/A  A+A  B*B1
                         STO W  RCL W  STO V  RCL V  STO U   RCL U

-Lines 22 & 96  are three-byte GTO's
 
 

  01  LBL "JCPB"
  02  X/E3
  03  STO W
  04  RDN
  05  STO V
  06  X<>Y
  07  STO U
  08  12
  09  AMOVE
  10  CLX
  11  ST*A
  12  14
  13  AMOVE
  14  SIGN
  15  STO 01
  16  LBL 01
  17  13
  18  AMOVE
  19  RCL W
  20  ISG X
  21  X=0?
  22  GTO 00
  23  STO W
  24  23
  25  AMOVE     
  26  12
  27  ASWAP
  28  X<> Z
  29  INT
  30  ST+ X
  31  RCL U
  32  +
  33  RCL V
  34  +
  35  ENTER^
  36  STO M
  37  X-1
  38  ENTER^     
  39  STO N
  40  X-1
  41  *
  42  *
  43  ST*A
  44  RCL N
  45  RCL U
  46  X^2
  47  RCL V
  48  X^2
  49  -
  50  *
  51  ST+ 01
  52  B*B1
  53  14
  54  ASWAP     
  55  SIGN
  56  RCL W
  57  INT
  58  STO M
  59  -
  60  RCL U
  61  -
  62  STO N
  63  ST+ X
  64  RCL M
  65  RCL V
  66  +
  67  X-1
  68  STO O
  69  *
  70  RCL M
  71  ST+ X
  72  RCL U
  73  +
  74  RCL V
  75  +
  76  *
  77  ST*A
  78  24
  79  ASWAP     
  80  A+A
  81  RCL O
  82  RCL N
  83  -
  84  RCL M
  85  RCL U
  86  +
  87  RCL V
  88  +
  89  *
  90  RCL M
  91  ST+ X
  92  *
  93  ST/A
  94  32
  95  AMOVE     
  96  GTO 01
  97  LBL 00
  98  RCL 00
  99  X/E3
100  ISG X
101  CLA
102  END

 
      ( 178 bytes / SIZE 8n+1 )
 
 

      STACK        INPUT      OUTPUT
           Z             a           /
           Y             c           /
           X             m         1.2n

   where      m is an integer    ( 0 <= m < 1000 ) ,  a & c  are real numbers
     and        1.2n  is the control number of the result

Example:     a = sqrt(2)   c = sqrt(3)   m = 7       b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3    ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

       2   SQRT
       3   SQRT
       7   XEQ "JCPB"  >>>>   1.008                                    ---Execution time = 55s---

And we get in registers R01 thru R08

      P7sqrt(2) , sqrt(3) (b) =  ( -1604.402811 + 779.134567 i )  + ( -142.7952083 + 499.3596976 i ) e1
                                                                                              + ( -182.8117487 + 790.4247449 i ) e2 + ( -222.8282902 + 1081.489792 i ) e3
 

7°)  Associated Legrendre Functions of the 1st kind - Integer Order and Degree
 

"PMNB" compute the functions of type 2 - if CF 03 - or the functions of type 3 - if  SF 03.
 

Formulae:        (n-m) Pnm(a) = a (2n-1) Pn-1m(a) - (n+m-1) Pn-2m(a)

     Type 2                Pmm(a) = (-1)m (2m-1)!!  ( 1-a2 )m/2                    where (2m-1)!! = (2m-1)(2m-3)(2m-5).......5.3.1
     Type 3                Pmm(a) =   (2m-1)!!  ( a2-1 )m/2
 

Data Registers:           •  R00 = 2n > 3                       ( Registers R00 thru R2n are to be initialized before executing "PMNB" )

                                      •  R01   ......  •  R2n = the n components of the bion b which are saved in registers  R2n+1 to R4n

                                         R4n+1 ........  R6n =  Pnm (b)
                                         R6n+1 ........  R8n = Pn-1m (b)

  >>>  When the program stops:     R01   ......  R2n = the n components of the result

Flags: /
Subroutines:   X/E3  X-1  X/2  AMOVE  ASWAP  ST*A  ST/A  A+A  B*B1  "B^X"
                         STO W  RCL W  STO V  RCL V  STO U   RCL U
 
 
 

 01  LBL "PMNB"
 02  STO V
 03  X<>Y
 04  STO U
 05  12
 06  AMOVE
 07  B*B1
 08  SIGN
 09  ST- 01
 10  CHS
 11  FC? 03
 12  ST*A
 13  RCL U
 14  X/2
 15  XEQ "B^X"
 16  RCL U
 17  ST+ X
 18  1
 19  ST+ Y
 20  X<>Y
 21  LBL 01
 22  2
 23  -
 24  X>0?
 25  ST* Y
 26  X>0?
 27  GTO 01        
 28  CLX
 29  SIGN
 30  FC? 03
 31  CHS
 32  RCL U
 33  Y^X
 34  *
 35  ST*A
 36  RCL 00
 37  4
 38  *
 39  .1
 40  %
 41  ISG X
 42  +
 43  RCL 00        
 44  -
 45  CLRGX
 46  RCL V
 47  X/E3
 48  RCL U
 49  +
 50  STO W
 51  LBL 02
 52  13
 53  AMOVE
 54  RCL W
 55  ISG X
 56  X=0?
 57  GTO 00        
 58  STO W
 59  INT
 60  ST+ X
 61  X-1
 62  ST*A
 63  B*B1
 64  4
 65  RCL 00
 66  ST* Y
 67  ENTER^
 68  SIGN
 69  RCL U
 70  -
 71  RCL W
 72  INT
 73  -
 74  SIGN
 75  LBL 03 
 76  CLX
 77  X<> IND Z  
 78  LASTX
 79  *
 80  ST+ IND Y
 81  DSE Z
 82  DSE Y
 83  GTO 03
 84  RCL W
 85  INT
 86  RCL U
 87  -
 88  ST/A
 89  34
 90  AMOVE       
 91  GTO 02 
 92  LBL 00
 93  RCL 00
 94  X/E3
 95  ISG X
 96  END

 
      ( 160 bytes / SIZE 8n+1 )
 
 

      STACK        INPUTS      OUTPUTS
           Y            m            /
           X            n          1.2n

   where     m & n are integers with   0 <= m <= n
     and      1.2n   is the control number of the result.

Example:      m = 3  ,  n = 7  ,   b = ( 0.1 + 0.2 i ) + ( 0.3 + 0.4 i ) e1 + ( 0.5 + 0.6 i ) e2 + ( 0.7 + 0.8 i ) e3            ( biquaternion ->  8  STO 00 )

       0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

  •  CF 03   Legendre Function of type 2

    3   ENTER^
    7   XEQ "PMNB"  >>>>  1.008                               ---Execution time = 48s---

And we have in R01 thru R08

     P37 ( b ) = ( 6071.566263 + 53115.31993 i )  + ( 17513.35572 - 15006.54081 i ) e1
                                                                            + ( 26120.31168 - 24811.27212 i ) e2 + ( 34727.26763 - 34016.00343 i ) e3

  •  SF 03   Legendre Function of type 3

-Store again        0.1  STO 01   0.2  STO 02   0.3  STO 03   0.4  STO 04   0.5  STO 05   0.6  STO 06   0.7  STO 07   0.8  STO 08

    3   ENTER^
    7   XEQ "PMNB"  >>>>  1.008                               ---Execution time = 48s---

And we have in R01 thru R08

     P37 ( b ) = ( -46823.11240 + 45127.54828 i )  + ( 1048.341587 + 18931.32096 i ) e1
                                                                            + ( -3149.918553 + 29448.99338 i ) e2 + ( 5251.495520 + 39966.66578 i ) e3

Notes:

-This program does not check if m & n are integers that satisfy 0 <= m <= n
-Register W may be replaced by register V.
-These functions are not always polynomials, but the method is similar to the other routines of this page...