hp41programs

Quternionic Ortho Pol

Quaternionic Orthogonal Polynomials for the HP-41


Overview
 

 1°)  Legendre Polynomials
 2°)  Generalized Laguerre's Polynomials
 3°)  Laguerre's Functions
 4°)  Hermite Polynomials
 5°)  Hermite Functions
 6°)  Chebyshev Polynomials
 7°)  Chebyshev Functions
 8°)  UltraSpherical Polynomials
 9°)  UltraSpherical Functions
10°) Jacobi Polynomials
11°) Jacobi Functions
 

-The following routines employ the formulae that are used for real variables, which is a natural extension.
-However, I'm not sure that the orthogonality properties still hold for quaternionic arguments...
 

1°)  Legendre Polynomials
 
 

Formulae:      n.Pn(q) = (2n-1).q.Pn-1(q) - (n-1).Pn-2(q)  ,  P0(q) = 1  ,  P1(q) = q
 

Data Registers:      •  R00 = n > 0                      ( Register R00 is to be initialized before executing "LEGQ" )

                                    R01 to R04 = q                   At the end,  R05 to R08 = Pn(q)   &   R09 to R12 = Pn-1(q)
Flags: /
Subroutine:   "Q*Q"  ( cf "Quaternions for the HP-41" )

-Lines 09 to 16 may be replaced by  6.012   CLRGX   if you have an HP-41CX
 
 

01  LBL "LEGQ"
02  STO 01
03  RDN
04  STO 02
05  RDN
06  STO 03
07  X<>Y
08  STO 04
09  CLX    
10  STO 06
11  STO 07
12  STO 08
13  STO 09
14  STO 10
15  STO 11
16  STO 12
17  SIGN
18  STO 05
19  RCL 00
20   E3
21  /
22  +
23  STO 17
24  LBL 01
25  XEQ "Q*Q"
26  STO 13
27  RDN
28  STO 14
29  RDN
30  STO 15
31  X<>Y
32  STO 16
33  RCL 17       
34  INT
35  ENTER^
36  ST+ X
37  1
38  ST- Z
39  -
40  ST* 13
41  ST* 14
42  ST* 15
43  ST* 16
44  X<>Y
45  ST* 09
46  ST* 10
47  ST* 11
48  ST* 12
49  RCL 13       
50  X<> 05
51  X<> 09
52  ST- 05
53  RCL 14
54  X<> 06
55  X<> 10
56  ST- 06
57  RCL 15
58  X<> 07
59  X<> 11
60  ST- 07
61  RCL 16
62  X<> 08
63  X<> 12
64  ST- 08
65  RCL 17
66  INT
67  ST/ 05
68  ST/ 06
69  ST/ 07
70  ST/ 08
71  ISG 17
72  GTO 01
73  RCL 08       
74  RCL 07
75  RCL 06
76  RCL 05
77  END

 
   ( 124 bytes / SIZE 018 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Pn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R00 = n    integer    ( 0 < n < 1000 )

Example:         n = 7     q = 1 + i/2 + j/3 + k/4

   7   STO 00

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "LEGQ"   >>>>    36.20819589 = R05                         ---Execution time = 25s---
                                 RDN   -51.58337289 = R06
                                 RDN   -34.38891526 = R07
                                 RDN   -25.79168646 = R08

        P7( 1 + i/2 + j/3 + k/4 ) =  36.20819589 - 51.58337289 i - 34.38891526 j - 25.79168646 k            and in registers R09 thru R12:

       P6( 1 + i/2 + j/3 + k/4 ) =  -9.248135365 - 26.20689563 i - 17.47126375 j - 13.10344782 k
 

2°)  Generalized Laguerre's Polynomials
 

Formulae:      L0(a) (q) = 1  ,   L1(a) (q) = a+1-q   ,    n Ln(a) (q) = (2.n+a-1-q) Ln-1(a) (x) - (n+a-1) Ln-2(a) (q)
 

Data Registers:      •  R09 = a   •  R10 = n > 0                ( Registers R09 & R10 are to be initialized before executing "LANQ" )

                 At the end,  R05 to R08 = Ln(a)(q)   &   R11 to R14 = Ln-1(a)(q)
Flags: /
Subroutine:   "Q*Q"  ( cf "Quaternions for the HP-41" )
 
 

01  LBL "LANQ"
02  CHS
03  STO 01
04  RDN
05  CHS
06  STO 02
07  RDN
08  CHS
09  STO 03
10  X<>Y
11  CHS
12  STO 04
13  RCL 09
14  1
15  +
16  ST+ 01
17  CLX
18  STO 06
19  STO 07
20  STO 08
21  STO 11
22  STO 12
23  STO 13
24  STO 14
25  SIGN
26  STO 05
27  RCL 10
28   E3
29  /
30  +
31  STO 00
32  LBL 01
33  XEQ "Q*Q" 
34  X<> 05
35  STO 15
36  RDN
37  X<> 06
38  STO 16
39  RDN
40  X<> 07
41  STO 17
42  X<>Y
43  X<> 08
44  STO 18
45  2
46  ST+ 01
47  SIGN
48  RCL 00        
49  INT
50  -
51  RCL 09
52  -
53  ST* 11
54  ST* 12
55  ST* 13
56  ST* 14
57  RCL 15
58  X<> 11
59  ST+ 05
60  RCL 16
61  X<> 12
62  ST+ 06
63  RCL 17        
64  X<> 13
65  ST+ 07
66  RCL 18
67  X<> 14
68  ST+ 08
69  RCL 00
70  INT
71  ST/ 05
72  ST/ 06
73  ST/ 07
74  ST/ 08
75  ISG 00
76  GTO 01
77  RCL 08
78  RCL 07        
79  RCL 06
80  RCL 05
81  END
 

 
   ( 125 bytes / SIZE 019 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Ln(a)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a  &  R10 = n   integer    ( 0 < n < 1000 )

Example:        a = sqrt(2)     n = 7     q = 1 + 2 i + 3 j + 4 k

   2   SQRT   STO 09
   7   STO 10

   4   ENTER^
   3   ENTER^
   2   ENTER^
   1   XEQ "LANQ"   >>>>  872.2661289  = R05                         ---Execution time = 25s---
                                 RDN    47.12527427 = R06
                                 RDN    70.68791171 = R07
                                 RDN    94.25054886 = R08

        L7sqrt(2) ( 1 + 2 i + 3 j + 4 k ) =  872.2661289 + 47.12527427 i + 70.68791171 j + 94.25054886 k                           and

       L6sqrt(2) ( 1 + 2 i + 3 j + 4 k ) =   335.6848018 + 123.7427961 i + 185.6141942 j + 247.4855923 k           ( in registers R11 thru R14 )
 

3°)  Laguerre's Functions
 

Formulae:      Ln(a)(q) = [ Gam(n+a+1) / Gam(n+1) / Gam(a+1) ] M(-n,a+1,q)

   where  Gam = Gamma function
     and      M  = Kummer's function
 

Data Registers:      •  R09 = a   •  R10 = n                 ( Registers R09 & R10 are to be initialized before executing "LANQ+" )

                 At the end,  R11 to R14 = Ln(a)(q)
Flags: /
Subroutines:

   "KUMQ"  ( cf "Quaternionic Special Functions for the HP-41" )
   "1/G+" or "GAM+" ... ( cf "Gamma Function for the HP-41" )
 
 

01  LBL "LANQ+"
02  X<> 09
03  STO 15
04  X<> 10
05  CHS
06  X<> 09
07  SIGN
08  ST* X
09  ST+ 10
10  X<> L
11  XEQ "KUMQ"
12  1
13  RCL 09
14  -
15  XEQ "1/G+"
16  STO 00
17  RCL 10
18  XEQ "1/G+"   
19  ST* 00
20  RCL 10
21  RCL 09
22  -
23  XEQ "1/G+"
24  RCL 00
25  X<>Y
26  /
27  ST* 11
28  ST* 12
29  ST* 13
30  ST* 14
31  RCL 09          
32  CHS
33  STO 10
34  RCL 15
35  STO 09
36  RCL 14
37  RCL 13
38  RCL 12
39  RCL 11          
40  END

 
   ( 81 bytes / SIZE 016 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Ln(a)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a  &  R10 = n    a & n # -1 , -2 , -3 , ...............

Example:        a = sqrt(3)     n = PI     q = 1 + 2 i + 3 j + 4 k

   3   SQRT   STO 09
  PI   STO 10

   4   ENTER^
   3   ENTER^
   2   ENTER^
   1   XEQ "LANQ+"   >>>>  -59.37663941 = R11                         ---Execution time = 69s---
                                   RDN     3.135355694 = R12
                                   RDN     4.703033529 = R13
                                   RDN     6.270711372 = R14

        Lpisqrt(3) ( 1 + 2 i + 3 j + 4 k ) =  -59.37663941 + 3.135355694 i + 4.703033529 j + 6.270711372 k
 

4°)  Hermite Polynomials
 

Formulae:        H0(q) = 1  ,  H1(q) = 2 q
                         Hn(q) = 2.q Hn-1(q) - 2 (n-1) Hn-2(q)
 

Data Registers:      •  R00 = n > 0                                      ( Register R00 is to be initialized before executing "HMTQ" )

                 At the end,  R05 to R08 = Hn(q)   &   R09 to R12 = Hn-1(q)
Flags: /
Subroutine:   "Q*Q"  ( cf "Quaternions for the HP-41" )
 
 

01  LBL "HMTQ"
02  ST+ X
03  STO 01
04  RDN
05  ST+ X
06  STO 02
07  RDN
08  ST+ X
09  STO 03
10  X<>Y
11  ST+ X
12  STO 04
13  CLX
14  STO 06
15  STO 07
16  STO 08
17  STO 09
18  STO 10
19  STO 11
20  STO 12
21  SIGN
22  STO 05
23  RCL 00
24   E3
25  /
26  +
27  STO 17
28  LBL 01
29  XEQ "Q*Q" 
30  STO 13
31  RDN
32  STO 14
33  RDN
34  STO 15
35  X<>Y
36  STO 16        
37  1
38  RCL 17
39  INT
40  -
41  ST+ X
42  ST* 09
43  ST* 10
44  ST* 11
45  ST* 12
46  RCL 09
47  RCL 13
48  +
49  X<> 05
50  STO 09
51  RCL 10        
52  RCL 14
53  +
54  X<> 06
55  STO 10
56  RCL 11
57  RCL 15
58  +
59  X<> 07
60  STO 11
61  RCL 12
62  RCL 16
63  +
64  X<> 08
65  STO 12
66  ISG 17
67  GTO 01
68  RCL 08        
69  RCL 07
70  RCL 06
71  RCL 05
72  END

 
   ( 105 bytes / SIZE 018 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Hn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R00 = n    integer    ( 0 < n < 1000 )

Example:         n = 7     q = 1 + 2 i + 3 j + 4 k

   7   STO 00

   4   ENTER^
   3   ENTER^
   2   ENTER^
   1   XEQ "HMTQ"   >>>>      -23716432 = R05                         ---Execution time = 20s---
                                  RDN         -3653024 = R06
                                  RDN         -5479536 = R07
                                  RDN         -7306048 = R08

        P7( 1 + 2 i + 3 j + 4 k ) =  -23716432 - 3653024 i - 5479536 j - 7306048 k            and in registers R09 thru R12:

       P6( 1 + 2 i + 3 j + 4 k ) =  -1122232 + 682816 i + 1024224 j + 1365632 k
 

5°)  Hermite Functions
 

Formula:     Hn(q) = 2n sqrt(PI) [ (1/Gam((1-n)/2))  M(-n/2,1/2,q2) - ( 2.q / Gam(-n/2) ) M((1-n)/2,3/2,q2) ]

     where  Gam = Gamma function
       and      M  = Kummer's function
 

Data Registers:      •  R00 = n                                       ( Register R00 is to be initialized before executing "HMTQ+" )

                 At the end,  R01 to R04 = Hn(q)            R05 to R23:  temp
Flags: /
Subroutines:

     "Q*Q"       ( cf "Quaternions for the HP-41" )
     "KUMQ"   ( cf "Quaternionic Special Functions for the HP-41" )
     "1/G+"       ( cf "Gamma Function for the HP-41" )
 
 

  01  LBL "HMTQ+"
  02  STO 01
  03  STO 05
  04  STO 16
  05  RDN
  06  STO 02
  07  STO 06
  08  STO 17
  09  RDN
  10  STO 03
  11  STO 07
  12  STO 18
  13  X<>Y
  14  STO 04
  15  STO 08
  16  STO 19
  17  XEQ "Q*Q"
  18  STO 01
  19  RDN
  20  STO 02
  21  RDN
  22  STO 03
  23  X<>Y
  24  STO 04
  25  RCL 00
  26  STO 15
  27  CHS
  28  .5
  29  STO 10
  30  *
  31  STO 09
  32  RCL 04
  33  RCL 03
  34  RCL 02
  35  RCL 01
  36  XEQ "KUMQ"
  37  STO 20
  38  RDN
  39  STO 21
  40  RDN
  41  STO 22
  42  X<>Y
  43  STO 23
  44  .5
  45  ST+ 09
  46  RCL 09
  47  XEQ "1/G+"
  48  ST* 20
  49  ST* 21
  50  ST* 22
  51  ST* 23
  52  RCL 04
  53  RCL 03
  54  RCL 02
  55  RCL 01
  56  ISG 10
  57  XEQ "KUMQ"
  58  STO 05
  59  RDN
  60  STO 06
  61  RDN
  62  STO 07
  63  X<>Y
  64  STO 08
  65  RCL 16
  66  STO 01
  67  RCL 17
  68  STO 02
  69  RCL 18
  70  STO 03
  71  RCL 19
  72  STO 04
  73  RCL 15
  74  2
  75  /
  76  CHS
  77  XEQ "1/G+"
  78  ST+ X
  79  CHS
  80  ST* 01
  81  ST* 02
  82  ST* 03
  83  ST* 04
  84  XEQ "Q*Q"   
  85  STO 01
  86  RDN
  87  STO 02
  88  RDN
  89  STO 03
  90  X<>Y
  91  STO 04
  92  RCL 20
  93  ST+ 01
  94  RCL 21
  95  ST+ 02
  96  RCL 22
  97  ST+ 03
  98  RCL 23
  99  ST+ 04
100  2
101  RCL 15
102  STO 00
103  Y^X
104  PI
105  SQRT             
106  *
107  ST* 01
108  ST* 02
109  ST* 03
110  ST* 04
111  RCL 04
112  RCL 03
113  RCL 02
114  RCL 01
115  END

 
   ( 190 bytes / SIZE 024)
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Hn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R00 = n

Example:         n = PI     q = 1 + i/2 + j/3 + k/4

  PI   STO 00

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "HMTQ+"   >>>>  -17.81760491 = R01                         ---Execution time = 100s---
                                    RDN    2.845496140 = R02
                                    RDN    1.896997429 = R03
                                    RDN    1.422748073 = R04

        Hpi( 1 + i/2 + j/3 + k/4 ) =  -17.81760491 + 2.845496140 i + 1.896997429 j + 1.422748073 k
 

6°)  Chebyshev Polynomials
 

Formulae:

      CF 02          Tn(q) = 2q.Tn-1(q) - Tn-2(q)   ;  T0(q) = 1  ;   T1(q) = q        ( first kind )
      SF 02          Un(q) = 2q.Un-1(q) - Un-2(q)  ;  U0(q) = 1  ;  U1(q) = 2q    ( second kind )
 

Data Registers:      •  R00 = n                                       ( Register R00 is to be initialized before executing "CHBQ" )

                              When the program stops,  Tn(q) or Un(q)  are in registers R05 thru R08
                                                                    Tn-1(q) or Un-1(q)  are in registers R09 thru R12

Flag: F02               if F02 is clear, "CHBQ" calculates the Chebyshev polynomials of the first kind:   Tn(q)
                               if F02 is set,    "CHBQ" calculates the Chebyshev polynomials of the second kind:   Un(q)

Subroutine:   "Q*Q"  ( cf "Quaternions for the HP-41" )
 
 

01  LBL "CHBQ"
02  STO 01
03  ST+ 01
04  FS? 02
05  CLX
06  STO 09
07  RDN
08  STO 02
09  ST+ 02
10  FS? 02
11  CLX
12  STO 10
13  RDN
14  STO 03
15  ST+ 03
16  FS? 02
17  CLX
18  STO 11
19  X<>Y
20  STO 04
21  ST+ 04
22  FS? 02
23  CLX
24  STO 12        
25  CLX
26  STO 06
27  STO 07
28  STO 08
29  SIGN
30  STO 05
31  RCL 00
32   E3
33  /
34  +
35  STO 13
36  LBL 01
37  XEQ "Q*Q"
38  ST- 09
39  X<> 09
40  CHS
41  X<> 05
42  STO 09
43  X<> 10
44  -
45  X<> 06
46  STO 10
47  X<> 11
48  -
49  X<> 07
50  STO 11        
51  X<> 12
52  -
53  X<> 08
54  STO 12
55  ISG 13
56  GTO 01
57  RCL 08
58  RCL 07
59  RCL 06        
60  RCL 05
61  END
 

 
   ( 94 bytes / SIZE 013 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Tn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k        if   CF 02       with       R00 = n    integer    ( 0 < n < 1000 )
      or         Un(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 02

Example:         n = 7     q = 1 + 2 i + 3 j + 4 k

   7   STO 00

   •   CF 02      Chebyshev Polynomials 1st kind

   4   ENTER^
   3   ENTER^
   2   ENTER^
   1   XEQ "CHBQ"   >>>>       -9524759                          ---Execution time = 16s---
                                  RDN       -1117678
                                  RDN       -1676517
                                  RDN       -2235356

        T7( 1 + 2 i + 3 j + 4 k ) =  -9524759 - 1117678 i - 1676517 j - 2235356 k

   •   SF 02      Chebyshev Polynomials 2nd kind

   4   ENTER^
   3   ENTER^
   2   ENTER^
   1   XEQ "CHBQ"   >>>>     -18921448                          ---Execution time = 16s---
                                  RDN       -2198096
                                  RDN       -3297144
                                  RDN       -4396192

        U7( 1 + 2 i + 3 j + 4 k ) =  -18921448 - 2198096 i - 3297144 j - 4396192 k
 
 

7°)  Chebyshev Functions
 

Formulae:

      CF 02          Tn(cos Q) = cos n.Q                          ( first kind )                           with       cos Q = q
      SF 02          Un(cos Q) = [ sin (n+1).Q ] / sin Q   ( second kind )
 

Data Registers:      •  R00 = n                                       ( Register R00 is to be initialized before executing "CHBQ+" )

                                     R01 thru R09: temp

Flag: F02               if F02 is clear, "CHBQ+" calculates the Chebyshev function of the first kind:   Tn(q)
                               if F02 is set,    "CHBQ+" calculates the Chebyshev function of the second kind:   Un(q)

Subroutine:   "Q*Q"  "ACOSQ"  "COSQ"  "SINQ"  "1/Q"  ( cf "Quaternions for the HP-41" )
 
 

01  LBL "CHBQ+"
02  X<> 00
03  STO 09
04  X<> 00
05  XEQ "ACOSQ"
06  FS? 02
07  GTO 00
08  X<> 09
09  STO 00
10  ST* 09
11  ST* Y
12  ST* Z
13  ST* T
14  X<> 09
15  XEQ "COSQ"  
16  RTN
17  LBL 00
18  STO 05
19  RDN
20  STO 06
21  RDN
22  STO 07
23  RDN
24  STO 08
25  RDN
26  XEQ "SINQ"  
27  XEQ "1/Q"
28  STO 01
29  RDN
30  STO 02
31  RDN
32  STO 03
33  X<>Y
34  STO 04
35  RCL 09
36  STO 00
37  1
38  +
39  ST* 05
40  ST* 06
41  ST* 07
42  RCL 08
43  *
44  RCL 07
45  RCL 06
46  RCL 05
47  XEQ "SINQ"  
48  STO 05
49  RDN
50  STO 06
51  RDN
52  STO 07
53  X<>Y
54  STO 08
55  XEQ "Q*Q"   
56  END

 
   ( 107 bytes / SIZE 010 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Tn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k        if   CF 02       with       R00 = n
      or         Un(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 02

Example:         n = PI     q = 0.1 + 0.2 i + 0.3 j + 0.4 k

  PI   STO 00

   •   CF 02      Chebyshev Function 1st kind

   0.4   ENTER^
   0.3   ENTER^
   0.2   ENTER^
   0.1   XEQ "CHBQ+"   >>>>     -0.143159414                          ---Execution time = 22s---
                                      RDN       -0.905090620
                                      RDN       -1.357635929
                                      RDN       -1.810181239

        TPI( 0.1 + 0.2 i + 0.3 j + 0.4 k ) =  -0.143159414 - 0.905090620 i - 1.357635929 j - 1.810181239 k

   •   SF 02      Chebyshev Function 2nd kind

   0.4   ENTER^
   0.3   ENTER^
   0.2   ENTER^
   0.1   XEQ "CHBQ+"   >>>>      -0.386199512                          ---Execution time = 29s---
                                      RDN       -1.369695950
                                      RDN       -2.054543924
                                      RDN       -2.739391897

        UPI( 0.1 + 0.2 i + 0.3 j + 0.4 k ) =  -0.386199512 - 1.369695950 i - 2.054543924 j - 2.739391897 k
 

8°)  UltraSpherical Polynomials
 

Formulae:      C0(a) (q) = 1  ;   C1(a) (q) = 2.a.q   ;    (n+1).Cn+1(a) (q) = 2.(n+a).x.Cn(a) (q) - (n+2a-1).Cn-1(a) (q)      if  a # 0

                      Cn(0) (q) = (2/n).Tn(q)
 

Data Registers:      •  R09 = a   •  R10 = n > 0                ( Registers R09 & R10 are to be initialized before executing "USPQ" )

                 At the end,  R05 to R08 = Cn(a)(q)
                             &   R11 to R14 = Cn-1(a)(q)  if  a # 0

Flag:   F02 if a = 0
Subroutines:   "Q*Q"    ( cf "Quaternions for the HP-41" )    &   "CHBQ" if a = 0
 
 

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

 
   ( 164 bytes / SIZE 020 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Cn(a)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a  &  R10 = n   integer    ( 0 < n < 1000 )

Example:        a = sqrt(2)     n = 7     q = 1 + i/2 + j/3 + k/4

   2   SQRT   STO 09
   7   STO 10

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "USPQ"   >>>>    324.5443961                         ---Execution time = 28s---
                                 RDN   -689.5883609
                                 RDN   -459.7255744
                                 RDN   -344.7941813

        C7sqrt(2) ( 1 + i/2 + j/3 + k/4 ) =  324.5443961 - 689.5883609 i - 459.7255744 j - 344.7941813 k

-Likewise,   C7(0) ( 1 + i/2 + j/3 + k/4 ) =  29.24554794 - 33.27910357 i - 22.18606906 j - 16.63955179 k    ( in 19 seconds )
 

9°)  UltraSpherical Functions
 

Formulae:    Assuming  a # 0

          Cn(a)(q) = [ Gam(n+2a) / Gam(n+1) / Gam(2a) ]  2F1( -n , n+2a , n+1/2 , (1-q)/2 )

          where  2F1 is the hypergeometric function and Gam = Gamma function
 

Data Registers:      •  R09 = a # 0   •  R10 = n                ( Registers R09 & R10 are to be initialized before executing "USPQ+" )

                 At the end,  R12 to R15 = Cn(a)(q)

Flags:  /
Subroutines:

   "HGFQ"                  ( cf "Quaternionic Special Functions for the HP-41" )
   "1/G+" or "GAM+"  ( cf "Gamma Function for the HP-41" )
 
 

01  LBL "USPQ+"
02  STO 01
03  RDN
04  STO 02
05  RDN
06  STO 03
07  X<>Y
08  STO 04
09  RCL 09
10  STO 11
11  STO 16
12  ST+ X
13  RCL 10
14  CHS
15  STO 09
16  -
17  STO 10         
18  .5
19  ST+ 11
20  CHS
21  ST* 01
22  ST* 02
23  ST* 03
24  ST* 04
25  ST- 01
26  RCL 04
27  RCL 03
28  RCL 02
29  RCL 01
30  XEQ "HGFQ"
31  RCL 10
32  XEQ "1/G+"
33  STO 00
34  RCL 09
35  CHS
36  STO 10
37  1
38  +
39  XEQ "1/G+"   
40  ST/ 00
41  RCL 16
42  STO 09
43  ST+ X
44  XEQ "1/G+"
45  RCL 00
46  /
47  ST* 12
48  ST* 13
49  ST* 14          
50  ST* 15
51  RCL 15
52  RCL 14
53  RCL 13
54  RCL 12
55  END

 
   ( 89 bytes / SIZE 017 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Cn(a)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a # 0  &  R10 = n

Example:        a = sqrt(2)     n = sqrt(3)     q = 1 + i/2 + j/3 + k/4

   2   SQRT   STO 09
   3   SQRT   STO 10

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "USPQ"   >>>>    3.241115510                         ---Execution time = 77s---
                                 RDN    4.848277901
                                 RDN    3.232185263
                                 RDN    2.424138947

        Csqrt(3)sqrt(2) ( 1 + i/2 + j/3 + k/4 ) =  3.241115510 + 4.848277901 i + 3.232185263 j + 2.424138947 k
 

10°)  Jacobi Polynomials
 

Formulae:      P0(a;b) (q) = 1  ;   P1(a;b) (q) = (a-b)/2 + q (a+b+2)/2

        2n(n+a+b)(2n+a+b-2) Pn(a;b) (q) = [ (2n+a+b-1).(a2-b2) + q (2n+a+b-2)(2n+a+b-1)(2n+a+b) ] Pn-1(a;b) (q)
                                                              - 2(n+a-1)(n+b-1)(2n+a+b) Pn-2(a;b) (q)
 

Data Registers:          R00 thru R22: temp                   ( Registers R09-R10-R11 are to be initialized before executing "PABNQ" )

                                 •  R09 = a
                                 •  R10 = b
                                 •  R11 = n > 0

                 At the end,  R05 to R08 = Pn(a;b)(q)               R16 to R19 = q
                             &   R12 to R15 = Pn-1(a;b)(q)

Flags:  /
Subroutine:   "Q*Q"    ( cf "Quaternions for the HP-41" )

-Lines 48 & 137 are three-byte  GTOs
-Lines 129 to 136 may be replaced by   16.001004   REGMOVE
 
 

  01  LBL "PABNQ"
  02  STO 01
  03  STO 05
  04  STO 16
  05  RDN
  06  STO 02
  07  STO 06
  08  STO 17
  09  RDN
  10  STO 03
  11  STO 07
  12  STO 18
  13  X<>Y
  14  STO 04
  15  STO 08
  16  STO 19
  17  CLX
  18  STO 13
  19  STO 14
  20  STO 15
  21  SIGN
  22  STO 12
  23  RCL 11
  24   E3
  25  /
  26  +
  27  STO 00
  28  RCL 09
  29  RCL 10
  30  +
  31  STO 22           
  32  2
  33  ST+ Y
  34  /
  35  ST* 05
  36  ST* 06
  37  ST* 07
  38  ST* 08
  39  RCL 09
  40  RCL 10
  41  -
  42  2
  43  /
  44  ST+ 05
  45  LBL 01
  46  ISG 00
  47  FS? 30
  48  GTO 00 
  49  RCL 22
  50  RCL 00
  51  INT
  52  ST+ X
  53  +
  54  STO 20
  55  RCL 00
  56  INT
  57  RCL 09
  58  +
  59  1
  60  -
  61  STO 21           
  62  *
  63  RCL 00
  64  INT
  65  RCL 10
  66  +
  67  1
  68  -
  69  ST+ 21
  70  *
  71  ST+ X
  72  CHS
  73  ST* 12
  74  ST* 13
  75  ST* 14
  76  ST* 15
  77  RCL 20
  78  STO Y
  79  1
  80  -
  81  STO 20
  82  *
  83  RCL 21
  84  *
  85  ST* 01
  86  ST* 02
  87  ST* 03
  88  ST* 04
  89  RCL 20
  90  RCL 09
  91  X^2
  92  RCL 10
  93  X^2
  94  -
  95  *
  96  ST+ 01
  97  XEQ "Q*Q"   
  98  ST+ 12
  99  RDN
100  ST+ 13
101  RDN
102  ST+ 14
103  X<>Y
104  ST+ 15
105  RCL 21
106  RCL 22
107  RCL 00
108  INT
109  ST+ Y
110  ST+ X
111  *
112  *
113  ST/ 12
114  ST/ 13
115  ST/ 14
116  ST/ 15
117  RCL 05
118  X<> 12
119  STO 05
120  RCL 06
121  X<>13
122  STO 06
123  RCL 07           
124  X<>14
125  STO 07
126  RCL 08
127  X<> 15
128  STO 08
129  RCL 16
130  STO 01
131  RCL 17
132  STO 02
133  RCL 18
134  STO 03
135  RCL 19
136  STO 04
137  GTO 01
138  LBL 00
139  RCL 08
140  RCL 07
141  RCL 06
142  RCL 05
143  END

 
   ( 215 bytes / SIZE 023 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Pn(a;b)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a  ,  R10 = b  ,  R11 = n         ( n integer  0 < n < 1000 )

Example:        a = sqrt(2)     b = sqrt(3)    n = 7      q = 1 + i/2 + j/3 + k/4

   2   SQRT   STO 09
   3   SQRT   STO 10
   7   STO 11

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "PABNQ"   >>>>   143.5304515                         ---Execution time = 34s---
                                    RDN   -310.8681606
                                    RDN   -207.2454402
                                    RDN   -155.4340801

        P7sqrt(2);sqrt(3) ( 1 + i/2 + j/3 + k/4 ) =  143.5304515 - 310.8681606 i - 207.2454402 j - 155.4340801 k
 

11°)  Jacobi Functions

                                                                                              ~
Formula:           Pn(a;b) (q) = [ Gam(a+n+1) / Gam(n+1) ]  2F1 ( -n , a+b+n+1 , a+1 , (1-q)/2 )

             where  2F1 tilde is the regularized hypergeometric function
 

Data Registers:          R00 thru R17: temp                ( Registers R09-R10-R11 are to be initialized before executing "JCPQ" )

                                 •  R09 = a
                                 •  R10 = b
                                 •  R11 = n

                 At the end,  R12 to R15 = Pn(a;b) (q)

Flag:  F00
Subroutines:

      "HGFQ"                  ( cf "Quaternionic Special Functions for the HP-41" )
      "1/G+" or "GAM+"  ( cf "Gamma Function for the HP-41" )
 
 

01  LBL "JCPQ"
02  STO 01
03  RDN
04  STO 02
05  RDN
06  STO 03
07  X<>Y
08  STO 04
09  2
10  1/X
11  CHS
12  ST* 01
13  ST* 02
14  ST* 03
15  ST* 04
16  ST- 01
17  RCL 11
18  ENTER^
19  CHS
20  X<> 09
21  STO 11
22  STO 16        
23  RCL 10
24  STO 17
25  +
26  +
27  1
28  ST+ 11
29  +
30  STO 10
31  RCL 04
32  RCL 03
33  RCL 02
34  RCL 01
35  XEQ "HGFQ"
36  FS?C 00
37  GTO 00
38  RCL 11
39  XEQ "1/G+"
40  ST* 12
41  ST* 13
42  ST* 14
43  ST* 15
44  LBL 00
45  1
46  RCL 09
47  -
48  XEQ "1/G+"
49  STO 00
50  RCL 09        
51  CHS
52  ENTER^
53  X<> 11
54  +
55  XEQ "1/G+"
56  RCL 00
57  X<>Y
58  /
59  ST* 12
60  ST* 13
61  ST* 14
62  ST* 15
63  RCL 16
64  STO 09        
65  RCL 17
66  STO 10
67  RCL 15
68  RCL 14
69  RCL 13
70  RCL 12
71  END
 

 
   ( 122 bytes / SIZE 018 )
 
 

      STACK        INPUTS      OUTPUTS
           T             t            t'
           Z             z            z'
           Y             y            y'
           X             x            x'

   where      Pn(a;b)(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k         with       R09 = a  ,  R10 = b  ,  R11 = n

Examples:        a = sqrt(2)     b = sqrt(3)    n = PI      q = 1 + i/2 + j/3 + k/4

   2   SQRT   STO 09
   3   SQRT   STO 10
  PI  STO 11

   4   1/X
   3   1/X
   2   1/X
   1   XEQ "JCPQ"   >>>>   -10.14397526                         ---Execution time = 73s---
                                RDN     11.74139998
                                RDN       7.827599989
                                RDN       5.870699990

        PPIsqrt(2);sqrt(3) ( 1 + i/2 + j/3 + k/4 ) =  -10.14397526 + 11.74139998 i + 7.827599989 j + 5.870699990 k
 

-Likewise,   PPI(-4;+4) ( 1 + i/2 + j/3 + k/4 ) =  0.360213558 - 0.125970281 i - 0.083980187 j - 0.062985140 k    ( in 109 seconds )

Note:

-Unless the function is a polynomial, the series is convergent if  | 1 - q | < 2