# hp41programs

Quaternionic Functions2

# Quaternionic Special Functions (II) for the HP-41

Overview

0°)  Generalized Hypergeometric Functions
1°)  Airy Functions
2°)  Anger & Weber Functions
3°)  Associated Legendre Functions

a)  1st kind - Functions of Type 2 / Type 3
b)  2nd kind - Function of Type 2 - | q | < 1
c)  2nd kind - Function of Type 3 - | q | > 1

4°)  Bessel Functions

a)  Bessel Functions of the 1st kind
b)  Bessel Functions of the 2nd kind - Non-Integer order
c)  Bessel Functions of the 2nd kind - Integer order

5°)  Hermite Functions
6°)  Jacobi Functions
7°)  Laguerre's Functions
8°)  Parabolic Cylinder Functions

a)  Ascending Series
b)  Asymptotic Expansion

9°)  Struve Functions
10°) UltraSpherical Functions

-Like real special functions, quaternionic special functions may be expressed in terms of generalized hypergeometric functions.
-The following routines are variants of other programs listed in "Quaternionic Special Functions(I) or Quaternionic Orthogonal Polynomials.
-They call "HGFQ+" below, thus being shorter but also slower to execute.
-On the other hand, the indexes can take all integer values, since "HGFQ+" computes regularized hypergeometric functions too.

-The conventions used in "Quaternionic Functions (I)" still apply to the routines below:
-If there is 1 index, store it into R00
-If there are several indexes or orders, store them into R09  R10  R11 .....

-With, however, one exception for the generalized hypergeometric series. See just hereunder.

0°)  Generalized Hypergeometric Functions

-This program computes   mFp( a1,a2,....,am ; b1,b2,....,bp ; q ) =  SUMk=0,1,2,.....    [(a1)k(a2)k.....(am)k] / [(b1)k(b2)k.....(bp)k] . qk/k!         if   R00 > 0

where (ai)k = ai(ai+1)(ai+2) ...... (ai+k-1)   &  (ai)0 = 1    ,    likewise for  (bj)k    ( Pochhammer's symbol )

or the regularized function F tilde:

mF~p( a1,a2,....,am ; b1,b2,....,bp ; q ) =  SUMk=0,1,2,.....    [ (a1)k(a2)k.....(am)k ] / [Gam(k+b1) Gam(k+b2).....Gam(k+bp)] . qk/k!      if  R00 < 0

where Gam = Euler's Gamma function.

Data Registers:          •  R00 =  +/- m.ppp           ( Registers R00 & R16 thru R15+m+p are to be initialized before executing "HGFQ+"  )

R01 to R04 = q
R05 to R08 = uk
>>>>      R09 to R12 = the result when the program stops.                       R13-R14-R15: temp

•  R16 = a1      •  R17 = a2   ........................   •  Rm+15 = am
•  Rm+16 = b1 •  Rm+17 = b2  ....................   •  Rm+p+15 = bp
Flags: /
Subroutines:   "Q*Q"  "Q^R"          ( cf "Quaternions for the HP-41" )
"1/G+" or "GAM+"  ( cf "Gamma Function for the HP-41" )

-Line 41 is  a three-byte GTO 05
-Lines 59-60 may be replaced by  XEQ "GAM+"   ST/ 10

 01  LBL "HGFQ+"   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 15   14  SIGN   15  STO 05   16  RCL 00   17  ABS   18  INT   19  .1   20  %   21  STO 14   22  CLX   23  RCL 00   24  FRC   25   E3   26  *   27  ABS   28  +   29  .1   30  %   31  15.015   32  ST+ 14   33  +   34  STO 13   35  CLX   36  RCL 14   37  +   38  STO 09 39  RCL 00   40  X>0?   41  GTO 05   42  1   43  STO 10   44  LBL 01   45  RCL IND 09    46  FRC   47  X#0?   48  GTO 01   49  X<> L   50  X>0?   51  GTO 01   52  XY   54  GTO 00   55  LBL 01   56  X<>Y   57  STO 11   58  RCL IND 09   59  XEQ "1/G+"   60  ST* 10   61  RCL 11   62  ENTER^   63  LBL 00   64  RDN   65  DSE 09   66  GTO 01   67  RCL 10   68  X<>Y   69  X>0?   70  GTO 00   71  1   72  X<>Y   73  -   74  STO 15   75  LBL 02   76  ST/ Y 77  1   78  -   79  X<>Y   80  ISG 13   81  LBL 03   82  RCL Y   83  RCL IND 13    84  +   85  ISG 14   86  GTO 04   87  STO L   88  X>0?   89  GTO 03   90  FRC   91  X#0?   92  GTO 03   93  CLX   94  SIGN   95  SIGN   96  LBL 03   97  X<> L   98  1/X   99  LBL 04 100  * 101  ISG 13 102  GTO 03 103  RCL 13 104  FRC 105  15 106  + 107  STO 13 108  X<> 14 109  FRC 110  15 111  + 112  STO 14 113  X<> Z 114  X#0? 115  GTO 02 116  LBL 00 117  X<>Y 118  STO 05 119  RCL 15 120  X<> 00  121  STO 12 122  RCL 04 123  RCL 03 124  RCL 02 125  RCL 01 126  XEQ "Q^R" 127  X<> 05 128  ST* 05 129  ST* T 130  ST* Z 131  * 132  STO 06 133  RDN 134  STO 07 135  X<>Y 136  STO 08 137  RCL 12 138  STO 00 139  LBL 05 140  RCL 05 141  STO 09 142  RCL 06 143  STO 10 144  RCL 07 145  STO 11 146  RCL 08 147  STO 12 148  LBL 06 149  XEQ "Q*Q"   150  STO 05 151  RDN 152  STO 06 153  RDN 154  STO 07 155  X<>Y 156  STO 08 157  1 158  ST+ 13 159  LBL 07 160  RCL IND 13  161  RCL 15 162  + 163  ISG 14 164  FS? 30 165  1/X 166  * 167  ISG 13 168  GTO 07 169  RCL 13 170  FRC 171  15 172  + 173  STO 13 174  X<> 14 175  FRC 176  15 177  + 178  STO 14 179  SIGN 180  RCL 15 181  + 182  STO 15 183  / 184  ST* 05 185  ST* 06 186  ST* 07 187  ST* 08 188  RCL 05 189  RCL 09 190  + 191  STO 09 192  LASTX 193  - 194  ABS 195  RCL 06 196  RCL 10  197  + 198  STO 10 199  LASTX 200  - 201  ABS 202  + 203  RCL 07 204  RCL 11 205  + 206  STO 11 207  LASTX 208  - 209  ABS 210  + 211  RCL 08 212  RCL 12 213  + 214  STO 12 215  LASTX 216  - 217  ABS 218  + 219  X#0? 220  GTO 06 221  RCL 12 222  RCL 11 223  RCL 10           224  RCL 09 225  END

( 305 bytes / SIZE 016+m+p )

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

where     x'+y'.i+z'.j+t'.k = mFp ( a1,a2,....,am ; b1,b2,....,bp ;  x+y.i+z.j+t.k )           if   R00 = + m.ppp     and      R16 = a1  ,  R17 = a2  , ............

or        x'+y'.i+z'.j+t'.k = mF~p ( a1,a2,....,am ; b1,b2,....,bp ;  x+y.i+z.j+t.k )          if    R00 = - m.ppp

Example1:             a1 = PI  ,   a2 = e  ;  b1 = 1 ,  b2 = 2 ,   b3 = 4  ;   q = 1 + 2 i + 3 j + 4 k

PI   STO 16    1  E^X  STO 17  ,   1  STO 18   2  STO 19   4  STO 20

•  2.003  STO 00

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "HGFQ+"  >>>>   -6.691126963                     ---Execution Time= 76s---
RDN      1.302530584
RDN      1.953795874
RDN      2.605061166

2F3( PI , e ; 1 , 2 , 4 ;  1 + 2 i + 3 j + 4 k ) = -6.691126963 + 1.302530584 i + 1.953795874 j + 2.605061166 k

•  2.003  CHS  STO 00

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "HGFQ+"  >>>>   -1.115187818                     ---Execution Time= 86s---
RDN      0.217088431
RDN      0.325632646
RDN      0.434176861

2F~3( PI , e ; 1 , 2 , 4 ;  1 + 2 i + 3 j + 4 k ) = -1.115187818 + 0.217088431 i + 0.325632646 j + 0.434176861 k

-The first result has been simply divided by  Gam(1) Gam(2) Gam(4) = 6

Example2:             a1 = PI  ,   a2 = e  ;  b1 = 1 ,  b2 = -2 ,   b3 = -4  ;   q = 1 + 2 i + 3 j + 4 k

PI   STO 16    1  E^X  STO 17  ,   1  STO 18   -2  STO 19   -4  STO 20

•  2.003  CHS  STO 00        ( the non-regularized hypergeometric function does not exist for these parameters )

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "HGFQ+"  >>>>   -2910223.713                     ---Execution Time= 99s---
RDN      192140.2256
RDN      288210.3383
RDN      384280.4513

2F~3( PI , e ; 1 , -2 , -4 ;  1 + 2 i + 3 j + 4 k ) = -2910223.713 + 192140.2256 i + 288210.3383 j + 384280.4513 k

1°)  Airy Functions

Formulae:

Ai(x) =   f(q) - g(q)                             with            f(q) = [ 3 -2/3 / Gamma(2/3) ]  0F1( 2/3 ; q3/9 )
Bi(x) = [ f(q) + g(q) ] sqrt(3)               and            g(q) = [ 3 -1/3 / Gamma(1/3) ]  0F1( 4/3 ; q3/9 )   q

Data Registers:    R00 thru R24:  temp

At the end,  R01 to R04 = Ai(q)
and        R05 to R08 = Bi(q)
Flags: /
Subroutines:   "Q*Q"  "Q^R"  ( cf "Quaternions for the HP-41" )  &  "HGFQ+"  ( cf § 0°) )

 01  LBL "AIRYQ"  02  STO 17 03  RDN 04  STO 18 05  RDN 06  STO 19 07  RDN 08  STO 20 09  RDN 10  STO 00 11  CLX 12  4 13  STO 16 14  CLX 15  3 16  ST/ 16 17  X<> 00 18  XEQ "Q^R" 19  STO 00 20  CLX 21  9 22  ST/ 00 23  ST/ T 24  ST/ Z 25  / 26   E-3 27  X<> 00 28  XEQ "HGFQ+" 29  STO 05 30  RDN 31  STO 06 32  RDN 33  STO 07 34  X<>Y 35  STO 08 36  1.017004 37  REGSWAP 38  XEQ "Q*Q" 39  STO 21 40  CLX 41  .2588194038 42  ST* 21 43  ST* T 44  ST* Z 45  * 46  STO 22 47  RDN 48  STO 23 49  X<>Y 50  STO 24 51  2 52  ST/ 16 53  RCL 20 54  RCL 19 55  RCL 18 56  RCL 17 57  XEQ "HGFQ+" 58  STO 01 59  STO 05 60  CLX 61  .3550280539   62  ST* 01 63  ST* 05 64  ST* T 65  ST* Z 66  * 67  STO 02 68  STO 06 69  RDN 70  STO 03 71  STO 07 72  X<>Y 73  STO 04 74  STO 08 75  RCL 21 76  ST- 01 77  ST+ 05 78  RCL 22 79  ST- 02 80  ST+ 06 81  RCL 23            82  ST- 03 83  ST+ 07 84  RCL 24 85  ST- 04 86  ST+ 08 87  3 88  SQRT 89  ST* 05 90  ST* 06 91  ST* 07 92  ST* 08 93  RCL 04 94  RCL 03 95  RCL 02 96  RCL 01 97  END

( 200 bytes / SIZE 025 )

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

where      Ai (x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k   = R01 thru R04
and       Bi (x+y.i+z.j+t.k)  = x"+y".i+z".j+t".k  = R05 thru R08

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

4   1/X
3   1/X
2   1/X
1   XEQ "AIRYQ"    >>>>    0.105299445 = R01                   ---Execution time = 73s---
RDN   -0.078442074 = R02
RDN   -0.052294716 = R03
RDN   -0.039221037 = R04

Thus,    Ai ( 1 + i/2 + j/3 + k/4 ) = 0.105299445 - 0.078442074 i - 0.052294716 j - 0.039221037 k

and     Bi ( 1 + i/2 + j/3 + k/4 ) = 0.973463977 + 0.394832415 i + 0.263221610 j + 0.197416207 k    in   R05 to R08

Note:

-This program returns accurate results for "small" arguments only.

2°)  Anger & Weber Functions

Formulae:

Jn(q) = + (q/2) sin ( 90°n ) 1F~2( 1 ; (3-n)/2 , (3+n)/2 ; -q2/4 )                 Anger's functions

+ cos ( 90°n ) 1F~2( 1 ; (2-n)/2 , (2+n)/2 ; -q2/4 )

En(q) = - (q/2) cos ( 90°n )  1F~2( 1 ; (3-n)/2 , (3+n)/2 ; -q2/4 )             Weber's functions

+ sin ( 90°n ) 1F~2( 1 ; (2-n)/2 , (2+n)/2 ; -q2/4 )

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

When the program stops,   R01 to R04 = Jn(q)        ( Anger functions )
R05 to R08 = En(q)       ( Weber functions )              R19 to R22 = q
Flags:  /
Subroutines:  "Q*Q"                        ( cf "Quaternions for the HP-41" )
"1/G+"  or  "GAM+"   ( cf  "Gamma Function" )
"HGFQ+"

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

( 236 nytes / SIZE 032 )

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

where      Jn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k   = R01 thru R04            provided        R00 = n
and       En(x+y.i+z.j+t.k)  = x"+y".i+z".j+t".k  = R05 thru R08

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

PI  STO 00

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "ANWEBQ"   >>>>  -11.24234895 = R01                         ---Execution time = 2mn45s---
RDN    -3.564968429 = R02
RDN    -5.347452640 = R03
RDN    -7.129936866 = R04

JPi( 1 + 2 i + 3 j + 4 k ) = -11.24234895 - 3.564968429 i - 5.347452640 j - 7.129936866 k

and      EPi( 1 + 2 i + 3 j + 4 k ) = -9.566817361 + 4.177204893 i + 6.265807340 j + 8.354409782 k             in  R05 to R08

Notes:

-If n is an integer,  Jn(x) = Jn(x) = Bessel function of the first kind.
-Unlike the version listed in "Quaternionic special functions (I)", this routine also works if n = +/-2 , +/-3 , ..........

3°)  Associated Legendre Functions

a)  1st kind - Functions of Type 1/2 / Type 3

Formulae:

Type 1/2      Pnm(q) = [ (q+1)/(1-q) ]m/2  2F~1(-n , n+1 ; 1-m ; (1-q)/2 )        (  q # 1 )         F~ = regularized hypergeometric function

Type 3        Pnm(q) = [ (q+1)/(q-1) ]m/2  2F~1(-n , n+1 ; 1-m ; (1-q)/2 )        (  q # 1 )

Data Registers:    •  R09 = m            ( Registers R09 &  R10 are to be initialized before executing "ALF1Q" )
•  R10 = n

Flag:    F03      Clear F03 to compute the function of type 2
Set   F03 to compute the function of type 3

Subroutines:  "HGFQ+" ( cf §0 )  "Q*Q"  "Q^R"  "1/Q"  ( cf "Quaternions for the HP-41" )

 01  LBL "ALF1Q"   02  STO 19  03  RDN  04  STO 20  05  RDN  06  STO 21  07  X<>Y  08  STO 22  09  RCL 10  10  STO 17  11  CHS  12  STO 16  13  1  14  ST+ 17  15  RCL 09  16  STO 23  17  -  18  STO 18  19  2.001 20  CHS  21  STO 00  22  RCL 19  23  1  24  -  25  SIGN  26  RCL 22  27  RCL 21  28  RCL 20  29  2  30  CHS  31  ST/ L  32  ST/ Y  33  ST/ Z  34  ST/ T  35  X<> L  36  XEQ "HGFQ+"  37  RCL 19  38  STO 05 39  1  40  ST+ 05  41  -  42  FC? 03  43  CHS  44  RCL 22  45  STO 08  46  FC? 03  47  CHS  48  RCL 21  49  STO 07  50  FC? 03  51  CHS  52  RCL 20  53  STO 06  54  FC? 03  55  CHS  56  R^  57  XEQ "1/Q" 58  STO 01  59  RDN  60  STO 02  61  RDN  62  STO 03  63  X<>Y  64  STO 04  65  RCL 23  66  2  67  /  68  STO 00  69  XEQ "Q*Q"      70  XEQ "Q^R"  71  STO 01  72  RDN  73  STO 02  74  RDN  75  STO 03  76  X<>Y 77  STO 04  78  RCL 09  79  STO 05  80  RCL 10  81  STO 06  82  RCL 11  83  STO 07  84  RCL 12  85  STO 08  86  RCL 23  87  STO 09  88  RCL 16  89  CHS  90  STO 10  91  XEQ "Q*Q"      92  END

( 158 bytes / SIZE 024 )

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

where      Pmn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k                  with       R09 = m   &   R10 = n

Function of type 2 if CF 03
Function of type 3 if SF 03

Example1:      m = sqrt(2)    n = sqrt(3)       q = 0.4 + 0.5 i + 0.6 j + 0.7 k

2  SQRT   STO 09    3  SQRT   STO 10

•  CF 03   Legendre Function of type 1/2

0.7   ENTER^
0.6   ENTER^
0.5   ENTER^
0.4   XEQ "ALF1Q"   >>>>    -0.866899244         ---Execution time = 4m08s---
RDN    -1.808960471
RDN    -2.170752567
RDN    -2.532544660

Psqrt(2)sqrt(3) ( 0.4 + 0.5 i + 0.6 j + 0.7 k ) = -0.866899244 - 1.808960471 i - 2.170752567 j - 2.532544660 k

•  SF 03   Legendre Function of type 3

0.7   ENTER^
0.6   ENTER^
0.5   ENTER^
0.4   XEQ "ALF1Q"   >>>>    -2.494183065         ---Execution time = 4m08s---
RDN      1.424529609
RDN      1.709435533
RDN      1.994341458

Psqrt(2)sqrt(3) ( 0.4 + 0.5 i + 0.6 j + 0.7 k ) = -2.494183065 + 1.424529609 i + 1.709435533 j + 1.994341458 k

Example2:      m = 1    n = 3       q = 0.4 + 0.5 i + 0.6 j + 0.7 k

1   STO 09    3   STO 10

•  CF 03   Legendre Function of type 1/2

0.7   ENTER^
0.6   ENTER^
0.5   ENTER^
0.4   XEQ "ALF1Q"   >>>>     10.31801144           ---Execution time = 34s---
RDN    -5.472130005
RDN    -6.566555996
RDN    -7.660982026

P13 ( 0.4 + 0.5 i + 0.6 j + 0.7 k ) = 10.31801144 - 5.472130005 i - 6.566555996 j - 7.660982026 k

•  SF 03   Legendre Function of type 3

0.7   ENTER^
0.6   ENTER^
0.5   ENTER^
0.4   XEQ "ALF1Q"   >>>>   -11.47843674           ---Execution time = 34s---
RDN    -4.918918944
RDN    -5.902702745
RDN    -6.886486535

P13 ( 0.4 + 0.5 i + 0.6 j + 0.7 k ) = -11.47843674 - 4.918918944 i - 5.902702745 j - 6.886486535 k

Note:

-In general, the series is convergent if  | 1 - q | < 2

b) 2nd kind - Functions of Type 2 - | q | < 1

Formula:      Qnm(q) = 2m pi1/2  (1-q2)-m/2 [ -Gam((1+m+n)/2)/(2.Gam((2-m+n)/2)) . sin pi(m+n)/2 .  2F1(-n/2-m/2 ; 1/2+n/2-m/2 ; 1/2 ; q2 )
+ q Gam((2+n+m)/2) / Gam((1+n-m)/2) . cos pi(m+n)/2 . 2F1((1-m-n)/2 ; (2+n-m)/2 ; 3/2 ; q2 )  ]

Data Registers:    •  R09 = m     •  R10 = n          ( Registers R09 &  R10 are to be initialized before executing "ALF2Q2" )

R00 thru R36: temp
Flags: /
Subroutines:  "HGFQ+"
"Q*Q"  "Q^R"  "1/Q"  ( cf "Quaternions for the HP-41" )
"1/G+"  or  "GAM+"   ( cf  "Gamma Function" )

 01  LBL "ALF2Q2"   02  STO 19   03  RDN   04  STO 20   05  RDN   06  STO 21   07  RDN   08  STO 22   09  RDN   10  STO 00   11  CLX   12  2   13  X<> 00   14  XEQ "Q^R"   15  STO 23   16  RDN   17  STO 24   18  RDN   19  STO 25   20  X<>Y   21  STO 26   22  RCL 10   23  STO 17   24  STO 28   25  RCL 09   26  STO 27   27  ST- 17   28  +   29  STO 29   30  CHS   31  STO 16   32  .5   33  ST* 16   34  ST* 17 35  ST+ 17   36  STO 18   37  2.001   38  STO 00   39  RCL 26   40  RCL 25   41  RCL 24   42  RCL 23   43  XEQ "HGFQ+"   44  STO 30   45  RDN   46  STO 31   47  RDN   48  STO 32   49  X<>Y   50  STO 33   51  1   52  ASIN   53  RCL 29   54  *   55  STO 34   56  SIN   57  STO 36   58  RCL 18   59  RCL 16   60  -   61  XEQ "1/G+"   62  ST/ 36   63  RCL 17   64  STO 35   65  RCL 18   66  +   67  STO 17   68  XEQ "1/G+" 69  RCL 36   70  *   71  2   72  /   73  ST* 30   74  ST* 31   75  ST* 32   76  ST* 33   77  RCL 18   78  ST+ 16   79  RCL 04   80  RCL 03   81  RCL 02   82  RCL 01   83  ISG 18   84  XEQ "HGFQ+"   85  STO 05   86  RDN   87  STO 06   88  RDN   89  STO 07   90  X<>Y   91  STO 08   92  RCL 19   93  STO 01   94  RCL 20   95  STO 02   96  RCL 21   97  STO 03   98  RCL 22   99  STO 04 100  RCL 29 101  2 102  ST+ Y 103  / 104  XEQ "1/G+" 105  STO 36 106  RCL 35 107  XEQ "1/G+" 108  RCL 34 109  COS 110  * 111  RCL 36 112  / 113  ST* 01 114  ST* 02 115  ST* 03 116  ST* 04 117  XEQ "Q*Q"      118  STO 05 119  CLX 120  RCL 31 121  - 122  STO 06 123  CLX 124  RCL 32 125  - 126  STO 07 127  CLX 128  RCL 33 129  - 130  STO 08 131  RCL 30 132  ST- 05 133  RCL 27 134  STO 09 135  2 136  / 137  CHS 138  STO 00 139  RCL 28 140  STO 10 141  1 142  ST- 23 143  RCL 26 144  CHS 145  RCL 25 146  CHS 147  RCL 24 148  CHS 149  RCL 23 150  CHS 151  XEQ "Q^R"      152  STO 01 153  RDN 154  STO 02 155  RDN 156  STO 03 157  X<>Y 158  STO 04 159  PI 160  SQRT 161  2 162  RCL 09 163  Y^X 164  * 165  ST* 01 166  ST* 02 167  ST* 03 168  ST* 04 169  XEQ "Q*Q"  170  END

( 309 bytes / SIZE 037 )

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

where      Qnm(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k             with       R09 = m  ,  R10 = n

Examples:       m = 0.4    n = 1.3       q = 0.1 + 0.2 i + 0.3 j + 0.4 k

0.4   STO 09
1.3   STO 10

0.4    ENTER^
0.3    ENTER^
0.2    ENTER^
0.1    XEQ "ALF2Q2"  >>>>   -0.944581517               ---Execution time = 3mn14s---
RDN   -0.368022565
RDN   -0.552033847
RDN   -0.736045129

Q1.30.4( 0.1 + 0.2 i + 0.3 j + 0.4 k ) = -0.944581517 - 0.368022565 i - 0.552033847 j - 0.736045129 k

-Likewise, "ALF2Q2"  returns in 110 seconds:

Q43( 0.1 + 0.2 i + 0.3 j + 0.4 k ) = 131.9022422 - 13.96653106 i - 20.94979658 j - 27.93306214 k

c)  2nd kind - Functions of Type 3 - | q | > 1

Formula:

Qnm(q) =  exp( i m.PI ) 2 -n-1 sqrt(PI) Gam(m+n+1) q -m-n-1 (q2-1)m/2  2F~1( (2+m+n)/2 , (1+m+n)/2 ; n+3/2 ; 1/q2 )

-Left-multiplying by exp( i m.PI ) produces a different result from right-multiplying by exp( i m.PI )
-In the following program, the left-multiplication has been choosen, but it is only conventional.

Data Registers:       •  R09 = m     •  R10 = n         ( Registers R09 &  R10 are to be initialized before executing "ALF2Q3" )

R00 thru R28: temp
Flags:  /
Subroutines:  "HGFQ+"
"Q*Q"  "Q^R"  "1/Q"  ( cf "Quaternions for the HP-41" )
"1/G+"  or  "GAM+"   ( cf  "Gamma Function" )

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

( 223 bytes / SIZE 029 )

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

where      Qnm(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k                  with       R09 = m  ,  R10 = n

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

2    SQRT   STO 09
3    SQRT   STO 10

4    ENTER^
3    ENTER^
2    ENTER^
1    XEQ "ALF2Q3"  >>>>   -0.478904369             ---Execution time = 79s---
RDN     1.598255777
RDN   -1.355956854
RDN     1.755128356

Qsqrt(2)-sqrt(3) ( 1 + 2 i + 3 j + 4 k ) = -0.478904369 + 1.598255777 i - 1.355956854 j + 1.755128356 k

4°)  Bessel Functions

a) Bessel Functions - 1st Kind

Formulae:

Jn(q) = (q/2)n0F~1( n+1 ; -q2/4 )                    Bessel                      (  Ftilde = regularized hypergeometric functions )

In(q) = (q/2)n0F~1( n+1 ;  q2/4 )                modified Bessel

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

R01 thru R21: temp

Flag:   CF 01  to compute Bessel functions
SF 01  to comput modified Bessel functions

Subroutines:  "Q^R"  "Q*Q"  ( cf "Quaternions for the HP-41" )
"HGFQ+"       ( cf paragraph 0 )

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

( 111 bytes / SIZE 022 )

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

where      Jn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    CF 01            with       R00 = n
and        In(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 01             with       R00 = n

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

•   CF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "JNQ"   >>>>   -11.22987515                         ---Execution time = 69s---
RDN    -3.570801506
RDN    -5.356202250
RDN    -7.141603010

JPI( 1 + 2 i + 3 j + 4 k ) = -11.22987515 - 3.570801506 i - 5.356202250 j - 7.141603010 k

•   SF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "JNQ"   >>>>     0.315197912                         ---Execution time = 77s---
RDN    -0.129988659
RDN    -0.194982989
RDN    -0.259977319

IPI( 1 + 2 i + 3 j + 4 k ) = 0.315197912 - 0.129988659 i - 0.194982989 j - 0.259977319 k

b) Bessel Functions - 2nd Kind - Non-Integer order

-This program returns Yn(q) if F01 is clear or Kn(q) if F01 is set,
where n is a real number and q = x + y i + z j + t k  is a quaternion.

Formulae:

Yn(q) = [ Jn(q) cos(n(pi)) - J-n(q) ] / sin(n(pi))      with        n  #  .... -3 ; -2 ; -1 ; 0 ; 1 ; 2 ; 3 ....
Kn(q) = (pi/2) [ I-n(q) - In(q) ] / sin(n(pi))

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

R01 thru R21: temp

R22 thru R25 = q
R26 thru R29 = Yn(q) or Kn(q)

Flag:  F01                   CF 01  to compute  Yn(q)
SF 01  to compute   Kn(q)
Subroutine:    "JNQ"

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

( 117 bytes / SIZE 030 )

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

where      Yn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    CF 01            with       R00 = n
and        Kn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 01            with       R00 = n

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

•   CF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "YNQ"   >>>>   9.617564021 = R26                         ---Execution time = 160s---
RDN    -4.171358848 = R27
RDN    -6.257038260 = R28
RDN    -8.342717710 = R29

So,   YPI( 1 + 2 i + 3 j + 4 k ) = 9.617564021 - 4.171358848 i - 6.257038260 j - 8.342717710 k

•   SF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "YNQ"   >>>      0.203067069 = R26                         ---Execution time = 170s---
RDN    -0.055030888 = R27
RDN    -0.082546335 = R28
RDN    -0.110061783 = R29

Whence,   KPI( 1 + 2 i + 3 j + 4 k ) = 0.203067069 - 0.055030888 i - 0.082546335 j - 0.110061783 k

Note:

-This program does not work if n is an integer.

c) Bessel Functions - 2nd Kind - Integer order

-"YNQ1" returns Yn(q) if F01 is clear or Kn(q) if F01 is set,
where n is a non-negative integer and q = x + y i + z j + t k  is a quaternion.

-The formulas are the same as those for real arguments.
-Some registers have been simply renumbered compared
to the version listed in "Quaternionic Special Functions(I)"

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

R01 thru R27: temp

R13 thru R16 = Yn(q) or Kn(q)

Flag:  F01                   CF 01  to compute  Yn(q)
SF 01  to compute   Kn(q)
Subroutines:    "JNQ"                           ( cf § 4-a) )
"LNQ"  "Q^R"  "Q*Q"  ( cf "Quaternions for the HP-41" )

 01  LBL "YNQ1"   02  STO 22   03  RDN   04  STO 23   05  RDN   06  STO 24   07  RDN   08  STO 25   09  RDN   10  XEQ "JNQ"   11  STO 05   12  RDN   13  STO 06   14  RDN   15  STO 07   16  X<>Y   17  STO 08   18  2   19  ST/ 22   20  ST/ 23   21  ST/ 24   22  ST/ 25   23  RCL 25   24  RCL 24   25  RCL 23   26  RCL 22   27  XEQ "LNQ"   28  STO 01   29  RDN   30  STO 02   31  RDN   32  STO 03   33  X<>Y   34  STO 04   35  1   36  FS? 01   37  CHS   38  STO 26   39  RCL 00   40  STO 17   41  STO 27   42  Y^X   43  ST+ X   44  ST* 01   45  ST* 02   46  ST* 03   47  ST* 04   48  XEQ "Q*Q"   49  STO 13   50  RDN 51  STO 14   52  RDN   53  STO 15   54  X<>Y   55  STO 16   56  RCL 22   57  STO 01   58  STO 05   59  RCL 23   60  STO 02   61  STO 06   62  RCL 24   63  STO 03   64  STO 07   65  RCL 25   66  STO 04   67  STO 08   68  XEQ "Q*Q"   69  STO 18   70  RDN   71  STO 19   72  RDN   73  STO 20   74  X<>Y   75  STO 21   76  CLX   77  STO 05   78  STO 06   79  STO 07   80  STO 08   81  LBL 01   82  RCL 17   83  RCL 27   84  -   85  FACT   86  RCL 27   87  1   88  -   89  X<0?   90  CLST   91  STO 00   92  FACT   93  /   94  RCL 26   95  RCL 00   96  Y^X   97  *   98  STO 01   99  RCL 21 100  RCL 20 101  RCL 19 102  RCL 18 103  XEQ "Q^R" 104  X<> 01 105  ST* 01 106  ST* Z 107  ST* T 108  * 109  ST+ 06 110  RDN 111  ST+ 07 112  X<>Y 113  ST+ 08 114  RCL 01 115  ST+ 05 116  DSE 27 117  GTO 01 118  RCL 17 119  CHS 120  STO 00 121  RCL 25 122  RCL 24 123  RCL 23 124  RCL 22 125  XEQ "Q^R" 126  STO 01 127  RDN 128  STO 02 129  RDN 130  STO 03 131  X<>Y 132  STO 04 133  XEQ "Q*Q" 134  ST- 13 135  RDN 136  ST- 14 137  RDN 138  ST- 15 139  X<>Y 140  ST- 16 141  1.15443133 142  X<> 17 143  STO 00 144  ABS 145  LBL 02 146  X#0? 147  1/X 148  ST- 17 149  X<> L 150  DSE X 151  GTO 02 152  RCL 18 153  RCL 26 154  ST* 22 155  ST* 23 156  ST* 24 157  ST* 25 158  CHS 159  * 160  STO 05 161  RCL 19 162  LASTX 163  * 164  STO 06 165  RCL 20 166  LASTX 167  * 168  STO 07 169  RCL 21 170  LASTX 171  * 172  STO 08 173  CLX 174  STO 02 175  STO 03 176  STO 04 177  STO 10 178  STO 11 179  STO 12 180  SIGN 181  STO 27 182  RCL 17 183  RCL 00 184  FACT 185  1/X 186  STO 01 187  * 188  STO 09 189  LBL 03 190  XEQ "Q*Q" 191  STO 01 192  RDN 193  STO 02 194  RDN 195  STO 03 196  X<>Y 197  STO 04 198  RCL 27 199  STO Y 200  RCL 00 201  + 202  * 203  ST/ 01 204  ST/ 02 205  ST/ 03 206  ST/ 04 207  RCL 17 208  LASTX 209  1/X 210  - 211  RCL 27 212  1/X 213  - 214  STO 17 215  ISG 27 216  CLX 217  RCL 01 218  * 219  RCL 09  220  + 221  STO 09 222  LASTX 223  - 224  ABS 225  RCL 02 226  RCL 17 227  * 228  RCL 10 229  + 230  STO 10 231  LASTX 232  - 233  ABS 234  + 235  RCL 03 236  RCL 17 237  * 238  RCL 11 239  + 240  STO 11 241  LASTX       242  - 243  ABS 244  + 245  RCL 04 246  RCL 17 247  * 248  RCL 12 249  + 250  STO 12 251  LASTX 252  - 253  ABS 254  + 255  X#0? 256  GTO 03 257  RCL 09 258  STO 05 259  RCL 10 260  STO 06 261  RCL 11 262  STO 07 263  RCL 12 264  STO 08 265  RCL 25 266  RCL 24 267  RCL 23 268  RCL 22 269  XEQ "Q^R" 270  STO 01 271  RDN 272  STO 02 273  RDN 274  STO 03 275  X<>Y 276  STO 04 277  XEQ "Q*Q" 278  ST+ 13 279  RDN 280  ST+ 14 281  RDN 282  ST+ 15 283  X<>Y 284  ST+ 16 285  PI 286  FS? 01 287  -2 288  ST/ 13 289  ST/ 14 290  ST/ 15 291  ST/ 16 292  RCL 16 293  RCL 15 294  RCL 14 295  RCL 13 296  END

( 456 bytes / SIZE 028 )

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

where      Yn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    CF 01            with       R00 = n   is a non-negative integer
and        Kn(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 01            with       R00 = n   ....................................

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

•   CF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "YNQ"   >>>>    7.690027238 = R13                         ---Execution time = 158s---
RDN    -5.224812676 = R14
RDN    -7.837219010 = R15
RDN  -10.44962535   = R16

Y3( 1 + 2 i + 3 j + 4 k ) = 7.690027238 - 5.224812676 i - 7.837219010 j - 10.44962535 k

•   SF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "YNQ"   >>>      0.208767798 = R13                         ---Execution time = 174s---
RDN    -0.047983196 = R14
RDN    -0.071974793 = R15
RDN    -0.095966393 = R16

K3( 1 + 2 i + 3 j + 4 k ) = 0.208767798 - 0.047983196 i - 0.071974793 j - 0.095966393 k

-Likewise, we find:

Y0( 1 + 2 i + 3 j + 4 k ) = 29.92977303 + 8.767829494 i + 13.15174424 j + 17.53565898 k    ( in 150 seconds )
K0( 1 + 2 i + 3 j + 4 k ) = 0.190884049 + 0.016289913 i + 0.024434869 j + 0.032579826 k    ( in 167 seconds )

Note:

-If  n is a negative integer, we can use  Y-n(q)  =  (-1)n  Yn(q)

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 = 1F1

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

At the end,  R01 to R04 = Hn(q)            R05 to R26:  temp
Flags: /
Subroutines:   "HGFQ+"
"Q*Q"     ( cf "Quaternions for the HP-41" ) ,   "1/G+"  or  "GAM+"     ( cf "Gamma Function for the HP-41" )

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

( 207 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 = 128s---
RDN    2.845496141 = R02
RDN    1.896997429 = R03
RDN    1.422748073 = R04

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

6°)  Jacobi Functions

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

where  2F1 tilde is the regularized hypergeometric function

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

At the end,  R01 to R04 = Pn(a;b) (q)

Flags:  /
Subroutines:   "HGFQ+"  &   "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 09 18  STO 19 19  1 20  + 21  STO 18  22  RCL 10 23  STO 20            24  + 25  RCL 11 26  CHS 27  STO 16 28  - 29  STO 17 30  2.001 31  CHS 32  STO 00 33  RCL 04 34  RCL 03 35  RCL 02 36  RCL 01 37  XEQ "HGFQ+" 38  STO 01 39  RDN 40  STO 02 41  RDN 42  STO 03 43  X<>Y 44  STO 04 45  1 46  RCL 16 47  CHS 48  STO 11 49  + 50  XEQ "1/G+" 51  STO 00 52  RCL 11 53  RCL 18 54  + 55  XEQ "1/G+"     56  RCL 00 57  X<>Y 58  / 59  ST* 01 60  ST* 02 61  ST* 03 62  ST* 04 63  RCL 19 64  STO 09 65  RCL 20 66  STO 10  67  RCL 04           68  RCL 03 69  RCL 02 70  RCL 01 71  END

( 118 bytes / SIZE 021 )

 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.14397527                         ---Execution time = 93s---
RDN     11.74139998
RDN       7.827599988
RDN       5.870699987

PPIsqrt(2);sqrt(3) ( 1 + i/2 + j/3 + k/4 ) =  -10.14397527 + 11.74139998 i + 7.827599988 j + 5.870699987 k

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

Note:

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

7°)  Laguerre's Functions

Formula:      Ln(a)(q) = [ Gam(n+a+1) / Gam(n+1) ]  1F~1( -n , a+1 , q )

where  Gam = Gamma function
and     1F~1 = Regularized Kummer's function

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

R00 thru R18: temp
Flags: /
Subroutines:   "HGFQ+"  &  "1/G+" or "GAM+" ... ( cf "Gamma Function for the HP-41" )

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

( 86 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   ,  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.37663940                          ---Execution time = 96s---
RDN     3.135355689
RDN     4.703033554
RDN     6.270711371

Lpisqrt(3) ( 1 + 2 i + 3 j + 4 k ) =  -59.37663940 + 3.135355689 i + 4.703033554 j + 6.270711371 k

8°)  Parabolic Cylinder Functions

a)  Ascending Series

Formula:            Dn(q) = Hn(q/sqrt(2))  2 -n/2  exp(-q2/4)    where   Hn(q) = Hermite function

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

R01 to R26:  temp
Flags: /
Subroutines:   "HMTQ"  ( §5 )
"Q*Q" & "E^Q"    ( cf "Quaternions for the HP-41" )

 01  LBL "DNQ"     02  STO 01  03  CLX  04  2  05  SQRT  06  ST/ 01  07  ST/ T  08  ST/ Z 09  /  10  RCL 01  11  XEQ "HMTQ"  12  2  13  RCL 00  14  2  15  CHS  16  ST/ 18 17  ST/ 19  18  ST/ 20  19  ST/ 21   20  /  21  Y^X  22  ST* 01            23  ST* 02  24  ST* 03 25  ST* 04  26  RCL 21  27  RCL 20  28  RCL 19  29  RCL 18  30  XEQ "E^Q"      31  STO 05  32  RDN 33  STO 06  34  RDN  35  STO 07  36  X<>Y  37  STO 08  38  XEQ "Q*Q"     39  END

( 75 bytes / SIZE 027 )

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

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

Example:         n = 0.4      q = 1 + 1.1 i + 1.2 j + 1.3 k

0.4   STO 00

1.3   ENTER^
1.2   ENTER^
1.1   ENTER^
1     XEQ "DNQ"   >>>>    2.606105106                         ---Execution time = 3m17s---
RDN    -0.969116889
RDN    -1.057218427
RDN    -1.145319961

D0.4( 1 + 1.1 i + 1.2 j + 1.3 k ) = 2.606105106 - 0.969116889 i - 1.057218427 j - 1.145319961 k

b)  Asymptotic Expansion     ( large q )

Formula:           Dn(q) ~ qn exp(-q2/4) 2F0( (1-n)/2 , -n/2 ;; -2/q2 )

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

R01 thru R26: temp
Flags: /
Subroutines:  "HGFQ+" ( §0°) )  "Q*Q"   "1/Q"   "E^Q"   "Q^R"   ( cf "Quaternions for the HP-41" )

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

( 163 bytes / SIZE 027 )

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

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

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

PI   STO 00

4    ENTER^
3    ENTER^
2    ENTER^
1    XEQ "AEDNQ"   >>>>   -33138.87207                     ---Execution time =61s---
RDN      93318.15128
RDN      139977.2270
RDN      186636.3026

DPI( 1 + 2 i + 3 j + 4 k ) =  -33138.87207 + 93318.15128 i + 139977.2270 j + 186636.3026 k

Notes:

-As usual, infinte loops will occur if q is too small.
-However, this program may also be used if q is relatively small when n is a positive integer.

9°)  Struve Functions

Formulae:

Hn(q) = (q/2)n+1 1F~2( 1 ; 3/2 , n + 3/2 ; - q2/4 )           where  1F~2  is a regularized hypergeometric function.
Ln(q) = (q/2)n+1 1F~2( 1 ; 3/2 , n + 3/2 ;  q2/4 )

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

R01 thru R23: temp

Flag:                   CF 01  to calculate Hn(q)
SF 01  -----------  Ln(q)

Subroutines:    "Q*Q"  "Q^R"    ( cf "Quaternions for the HP-41" )
"HGFQ+"

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

( 123 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       if    CF 01         provided       R00 = n
and        Ln(x+y.i+z.j+t.k)  = x'+y'.i+z'.j+t'.k       if    SF 01          ..................................

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

•   CF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "HLNQ"   >>>>    8.546633225                          ---Execution time = 80s---
RDN    -4.085079933
RDN    -6.127619902
RDN    -8.170159868

So,   Hpi( 1 + 2 i + 3 j + 4 k ) = 8.546633225 - 4.085079933 i - 6.127619902 j - 8.170159868 k

•   SF 01

4   ENTER^
3   ENTER^
2   ENTER^
1   XEQ "HLNQ"   >>>      1.864582788                          ---Execution time = 85s---
RDN    -0.116220198
RDN    -0.174330298
RDN    -0.232440397

Whence,   Lpi( 1 + 2 i + 3 j + 4 k ) = 1.864582788 - 0.116220198 i - 0.174330298 j - 0.232440397 k

Note:

-Unlike the version listed in "Quaternionic Special Functions(I)"
n can take the values  -3/2 , -5/2 , ...............

10°)  UltraSpherical Functions

Formula:    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,  R01 to R04 = Cn(a)(q)

Flags:  /
Subroutines:   "HGFQ+"  &    "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 19 11  ST+ X 12  RCL 10 13  CHS 14  STO 16 15  - 16  STO 17 17  RCL 09            18  2 19  1/X 20  CHS 21  ST* 01 22  ST* 02 23  ST* 03 24  ST* 04 25  ST- 01 26  - 27  STO 18 28  2.001 29  STO 00 30  RCL 04 31  RCL 03 32  RCL 02 33  RCL 01 34  XEQ "HGFQ+" 35  STO 01 36  RDN 37  STO 02 38  RDN 39  STO 03 40  X<>Y 41  STO 04 42  RCL 17 43  XEQ "1/G+" 44  STO 00 45  RCL 16 46  CHS 47  STO 10 48  1 49  + 50  XEQ "1/G+"     51  ST/ 00 52  RCL 19 53  STO 09 54  ST+ X 55  XEQ "1/G+" 56  RCL 00 57  / 58  ST* 01 59  ST* 02 60  ST* 03 61  ST* 04 62  RCL 04             63  RCL 03 64  RCL 02 65  RCL 01 66  END

( 119 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 # 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 = 103s---
RDN    4.848277896
RDN    3.232185262
RDN    2.424138947

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