ALF

# Associated Legendre Functions for the HP-41

Overview

1°) Pnm(x)   with 0 <= m <= n  (integer order & degree)
2°) Pnm(x) & Qnm(x)   with 0 <= m <= n  (integer order & degree)
3°) Associated Legendre Functions Pnm(x) & Qnm(x)  (fractional order & degree)  | x | < 1

4°) Associated Legendre Functions of the first kind ( fractional order & degree )  with  | x | < 1
5°) Associated Legendre Functions of the first kind ( fractional order & degree )  with  -1 < x  < 3
6°) Associated Legendre Functions of the first kind ( fractional order & degree )  with   x > 1

7°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  | x | < 1
8°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  -1 < x  < 3
9°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  | x | > 1

1°) Pnm(x)   with 0 <= m <= n  (integer order & degree)

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

Pmm(x) = (-1)m (2m-1)!!  ( 1-x2 )m/2   if  | x | < 1                   where (2m-1)!! = (2m-1)(2m-3)(2m-5).......5.3.1
Pmm(x) =   (2m-1)!!  ( x2-1 )m/2   if  | x | > 1

-If  m = 0 , we have Legendre polynomials ( see also "Orthogonal Polynomials for the HP-41" )

Data Registers: /
Flags: /
Subroutines: /

-Synthetic registers M N O may be replaced by any data registers.
-Line 43 = TEXT0 or another NOP like STO X  .....

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

( 110 bytes / SIZE 000 )

 STACK INPUTS OUTPUTS Z m / Y n Pnm-1(x) X x Pnm(x)

Examples:

4  ENTER^
7  ENTER^
3  XEQ "PMN"  >>>>  P74(3) =  37920960    X<>Y    P64(3) =  2963520    ( execution time = 6 seconds )

3   ENTER^
100  ENTER^
0.7  XEQ "PMN"  >>>>  P1003(0.7) = -58239.28386   X<>Y    P993(0.7) =  13003.91702   ( in 1mn31s )

2°) Pnm(x) & Qnm(x) with 0 <= m <= n  (integer order & degree)

Formulae:

Pnm(x) = ( x2-1 )m/2 dmPn(x)/dxm  if  | x | > 1           Pnm(x) = (-1)m ( 1- x2 )m/2 dmPn(x)/dxm  if  | x | < 1
Qnm(x) = ( x2-1 )m/2 dmQn(x)/dxm  if  | x | > 1         Qnm(x) = (-1)m ( 1- x2 )m/2 dmQn(x)/dxm  if  | x | < 1

-if  m = 0   Pnm(x) = Pn(x) = Legendre polynomials  ( cf "Orthogonal Polynomials for the HP-41" )
and   Qnm(x) = Qn(x)  with  Q0(x) = 0.5 Ln | (1+x)/(1-x) |  ;  Q1(x) = x/2 Ln | (1+x)/(1-x) | - 1  and   n.Qn(x) = (2n-1).x.Qn-1(x) - (n-1).Qn-2(x)

-We have employed the recurrence relations:   Pnm+1(x) = | x2-1 |-1/2 [ (n-m).x. Pnm(x) - (n+m). Pn-1m(x) ]   ( the same relation holds for Qnm(x) )

Important note:

-If | x | is significantly greater than 1 , Qnm(x) is obtained ( very ) inaccurately and "ALF2C" is preferable ( see 9°) below )
( the recurrende relation is unstable in this case )

Data Registers:      R00 to Rnn: temp
Flags:   F02    if flag F02 is clear "PQMN" calculates  Pnm(x)
F05    if flag F02 is set ,  "PQMN" calculates  Qnm(x)
Subroutines: /

-This program uses 4 synthetic registers M N O P
-Don't interrupt "PQMN": the content of register P could be altered
-These 4 registers may of course be replaced by any unused data registers ( Rpp with p > n )
-Line 83 = line 100 = TEXT0  or another NOP instruction like STO X , LBL 00 , ....

 01  LBL "PQMN"   02  X<> Z   03  STO O   04  RDN   05  CF 05   06  X=0?   07  SF 05   08   E3   09  /   10  1   11  +   12  STO M   13  X<>Y   14  STO Y   15  LASTX   16  STO 00   17  FC? 02   18  GTO 01   19  ST+ Y   20  RCL Z   21  -   22  /   23  ABS   24  SQRT   25  LN 26  STO 00            27  LBL 01   28  STO N   29  RCL Z   30  *   31  STO P   32  -   33  RCL M   34  INT   35  1/X   36  ENTER^   37  SIGN   38  -   39  FS? 02   40  X#0?   41  GTO 02   42  SIGN   43  STO Y   44  CHS   45  LBL 02   46  *   47  RCL P   48  +   49  RCL N   50  X<>Y 51  STO IND M    52  ISG M   53  GTO 01   54  RCL Z   55  1   56  ST- M   57  X<> O   58  X=0?   59  GTO 04   60  1   61  -   62   E3   63  /   64  STO O   65  X<> M   66  INT   67  STO N   68  STO P   69  X<>Y   70  LBL 03   71  RCL IND N   72  RCL Y   73  *   74  RCL N   75  RCL M 76  INT   77  -   78  ST* Y   79  LASTX   80  ST+ X   81  +   82  DSE N   83  ""   84  RCL IND N    85  *   86  -   87  X<>Y   88  X^2   89  ENTER^   90  SIGN   91  ST+ N   92  -   93  ABS   94  SQRT   95  X=0?   96  SIGN   97  /   98  STO IND N   99  DSE N 100  "" 101  X<>Y 102  ISG O 103  GTO 03 104  RCL P 105  STO N 106  SIGN 107  RCL O 108  FRC 109  + 110  RCL M          111  INT 112  + 113  STO O 114  X<>Y 115  ISG M 116  GTO 03 117  X<>Y 118  LBL 04 119  RDN 120  SIGN 121  RDN 122  FS?C 05 123  RCL 00 124  CLA 125  END

( 187 bytes / SIZE nnn+1 )

 STACK INPUTS OUTPUTS Z m / Y n / X x F(x) L / x

with  F(x) =  Pnm(x)  if flag F02 is clear  and   F(x) =   Qnm(x)  if flag F02 is set.

Example:    Calculate   P74(0.6)  &   Q74(0.6)

CF 02

4      ENTER^
7      ENTER^
0.6     XEQ "PQMN"  yields   P74(0.6) = 715.3090560   ( in 17 seconds )

SF 02

4      ENTER^
7      ENTER^
0.6       R/S          gives     Q74(0.6) = -1011.171802  ( in 17 seconds )

-Similarly:      P74(1.2) = 6327.212011   &   Q74(1.2) = 82.12107441

-For x = 1.2   Q74(x)  is still acceptable ( "ALF2B" produces  82.12107808 )
but for x = 3 , the errors are too great and "ALF2B" is much better ( cf 7°) below )

3°) Associated Legendre Functions Pnm(x) & Qnm(x)  (fractional order & degree)  | x | < 1

-Actually, these functions are solutions of the differential equation:  ( 1- x2 ) d2y/dx2 - 2.x.dy/dx + [ n(n+1) - m2/( 1- x2 ) ] y = 0
-Thus, we can seek these solutions by substituting the series  y = a0 + a1.x + a2.x2 + ...... + ak.xk + ...... in this differential equation.
-This approach leads to the recurrence relation:  (k+1)(k+2) ak+2 = [ m2+2k2-n(n+1) ] ak + [ (k-2)(1-k) + n(n+1) ] ak-2        ( a-1= a-2 = 0 )

a0 = 2m/pi1/2 cos pi(n+m)/2 . Gam((n+m+1)/2) / Gam((n-m+2)/2)
a1 = 2m+1/pi1/2 sin pi(n+m)/2 . Gam((n+m+2)/2) / Gam((n-m+1)/2)    for  Pnm(x)

a0 = -2m-1pi1/2 sin pi(n+m)/2 Gam((n+m+1)/2) / Gam((n-m+2)/2)
a1 = 2m pi1/2 cos pi(n+m)/2 Gam((n+m+2)/2) / Gam((n-m+1)/2)   for  Qnm(x)

Data Registers:      R00 to R09: temp  ( when the program stops, R00 = x & R01 = Pnm(x)  or  Qnm(x) )
Flags:  F02              if flag F02 is clear "ALF" calculates  Pnm(x)
if flag F02 is set    "ALF" calculates  Qnm(x)
Subroutine:  "1/G"  ( Reciprocal of the Gamma Function ) or "1/G+" for a better accuracy.

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

( 177 bytes / SIZE 010 )

 STACK INPUTS OUTPUTS Z m / Y n F(x) X x F(x)

with  F(x) =  Pnm(x)  if flag F02 is clear  and   F(x) =   Qnm(x) if flag F02 is set.

Examples:

CF 02

0.4   ENTER^
1.3   ENTER^
0.7   XEQ "ALF"  >>>>   P1.30.4(0.7) =  0.274932821     ( in 1mn59s )

SF 02

0.4   ENTER^
1.3   ENTER^
0.7      R/S          >>>>   Q1.30.4(0.7)  =  -1.317935684    ( in  1mn45s )

SF 02

3    ENTER^
1    ENTER^
0.2     R/S           >>>>   Q13(0.2)  =  -1.701034548    ( in 51s )

4°) Associated Legendre Functions of the first kind ( fractional order & degree ) with  | x | < 1

Formula:       Pnm(x) = 2m pi1/2  (x2-1)-m/2 [ 1/Gam((1-m-n)/2) / Gam((2-m+n)/2) .  F(-n/2-m/2 ; 1/2+n/2-m/2 ; 1/2 ; x2 )
- 2x/Gam((1+n-m)/2) / Gam((-n-m)/2) .  F((1-m-n)/2 ; (2+n-m)/2 ; 3/2 ; x2 )  ]

Data Registers:         R00 to R07: temp
Flags: /
Subroutines:  "GAM" or "GAM+"  ( Gamma function )  ,  "HGF"   ( Hypergeometric functions )

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

( 107 bytes / SIZE 008 )

 STACK INPUTS OUTPUTS Z m / Y n / X x Pnm(x)

Example:

0.4   ENTER^
1.3   ENTER^
0.7   XEQ "ALF1"  >>>>   P1.30.4(0.7)  =  0.274932822     ( in 58s )

5°) Associated Legendre Functions of the first kind ( fractional order & degree ) with  -1 < x  < 3

Formula:      Pnm(x) = |(x+1)/(x-1)|m/2  F(-n ; n+1 ; 1-m ; (1-x)/2 ) / Gamma(1-m)        (  x # 1 )

Data Registers:         R00 to R06: temp
Flags: /
Subroutines:  "GAM"  ( Gamma function ) ,   "HGF"   ( Hypergeometric functions )

 01  LBL "ALF1B" 02  STO 04 03  RDN 04  STO 02 05  CHS 06  STO 01 07  1 08  ENTER^ 09  ST+ 02 10  R^ 11  STO 05           12  - 13  STO 03 14  CLX 15  RCL 04 16  - 17  2 18  ST/ 05 19  / 20  XEQ "HGF" 21  X<> 03 22  XEQ "GAM"  23  ST/ 03 24  RCL 03 25  RCL 04 26  1 27  + 28  RCL 04           29  LASTX 30  - 31  / 32  ABS 33  RCL 05           34  Y^X 35  * 36  END

( 58 bytes / SIZE 006 )

 STACK INPUTS OUTPUTS Z m / Y n / X x Pnm(x)

Example:    Calculate   P1.30.4(1.9)

0.4  ENTER^
1.3  ENTER^
1.9  XEQ "ALF1B"  gives   2.980130385  ( in 26 seconds )

-This program will not work if m = 1,2,3,4, ..... unless you replace line 20 by  XEQ "HGF2"  and line 22 by  FC? 00  XEQ "GAM"  FC?C 00

-With this modification, you'll find, for example:   P73(1.7) = 102985.1588   ( in 9 seconds )

6°) Associated Legendre Functions of the first kind ( fractional order & degree )  with   x > 1

Formula:      Pnm(x) = 2-n-1pi-1/2Gam(-1/2-n) x-n+m-1/ ((x2-1)m/2Gam(-n-m)) F(1/2+n/2-m/2;1+n/2-m/2;n+3/2;1/x2)
+2npi-1/2Gam(1/2+n) xn+m/ ((x2-1)m/2Gam(1+n-m)) F(-n/2-m/2;1/2-n/2-m/2;1/2-n;1/x2)

( The factor pi-1/2 in the second term is omitted by mistake in the "Handbook of Mathematical Functions" page 332 )

Data Registers:         R00 to R08: temp
Flags: /
Subroutines:  "GAM"  ( Gamma function ) ,  "HGF"   ( Hypergeometric functions )

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

( 138 bytes / SIZE 008 )

 STACK INPUTS OUTPUTS Z m / Y n / X x Pnm(x)

Example:    Calculate   P1.7-0.6(4.8)

-0.6  ENTER^
1.7  ENTER^
4.8  XEQ "ALF1C"  >>>>>  10.67810283    ( in 38 seconds )

-Many other relations between the Legendre Functions and the hypergeometric Functions may be found  in the "Handbook of Mathematical Functions".

7°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  | x | < 1

Formula:      Qnm(x) = 2m pi1/2  (1-x2)-m/2 [ -Gam((1+m+n)/2)/(2.Gam((2-m+n)/2)) . sin pi(m+n)/2 .  F(-n/2-m/2 ; 1/2+n/2-m/2 ; 1/2 ; x2 )
+ x.Gam((2+n+m)/2) / Gam((1+n-m)/2) . cos pi(m+n)/2 . F((1-m-n)/2 ; (2+n-m)/2 ; 3/2 ; x2 )  ]

Data Registers:         R00 to R07: temp
Flags: /
Subroutines:  "1/G"   ( 1/Gamma function ) ,  "HGF"   ( Hypergeometric functions )

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

( 125 bytes / SIZE 008 )

 STACK INPUTS OUTPUTS Z m / Y n / X x Qnm(x)

Examples:

0.4  ENTER^   1.3   ENTER^   0.7   XEQ "ALF2"   >>>>     Q1.30.4(0.7) =  -1.317935680   ( in 66 seconds )
2.4  ENTER^   0.4   ENTER^   0.1        R/S            >>>>      Q0.42.4(0.1) =   0.102528105   ( in 30 seconds )

8°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  -1 < x < 3

Formula:      Qnm(x) =  A  (1/2)  [  Gam(1+m+n) Gam(-m) / Gam(1+n-m)  |(x-1)/(x+1)|m/2  F(-n ; n+1 ; 1+m ; (1-x)/2 )
+ Gam(m)  |(x+1)/(x-1)|m/2 B  F(-n ; n+1 ; 1-m ; (1-x)/2 )  ]

where    A = ei.m.pi   &  B = 1                 if  x > 1       ( the result is a complex number in this case )
and       A =  1        &  B = cos(m.pi)     if  x < 1

-Since Gam(m) and Gam(-m) appear in this formula, it cannot be used if m is an integer.

Data Registers:         R00 to R07: temp
Flag:   F07
Subroutines:  "GAM+"  or  "GAM"  ( Gamma function ) ,   "HGF"                        ( Hypergeometric functions )

 01  LBL "ALF2B" 02  STO 04 03  CLX 04  SIGN 05  STO 03 06  X<>Y 07  CHS 08  STO 01 09  - 10  STO 02 11  X<>Y 12  STO 05 13  ST+ 03 14  1 15  RCL 04 16  - 17  2 18  / 19  XEQ "HGF" 20  STO 06 21  RCL 03 22  RCL 01 23  - 24  XEQ "GAM+" 25  ST* 06 26  RCL 05 27  CHS 28  XEQ "GAM+" 29  ST* 06 30  RCL 02 31  RCL 05 32  - 33  XEQ "GAM+" 34  ST/ 06 35  1 36  RCL 05 37  - 38  STO 03 39  RCL 00 40  XEQ "HGF" 41  STO 03 42  RCL 05 43  XEQ "GAM+" 44  ST* 03 45  RCL 04 46  RCL 04 47  1 48  ST- Z 49  + 50  / 51  SF 07 52  X>0? 53  CF 07 54  ABS 55  RCL 05           56  Y^X 57  SQRT 58  ST/ 03 59  RCL 06 60  * 61  RCL 03 62  FC? 07 63  + 64  1 65  CHS 66  ACOS 67  RCL 05           68  * 69  X<>Y 70  P-R 71  0 72  FS? 07 73  STO Z 74  FS?C 07 75  X<> T 76  + 77  2 78  ST/ Z 79  / 80  END

( 133 bytes / SIZE 007 )

 STACK INPUTS OUTPUTS Z m / Y n B X x A

with   Qnm(x) =  A + i.B

Examples:

0.7   ENTER^
1.2   ENTER^
1.9   XEQ "ALF2B"  >>>>    -0.081513574
X<>Y    0.112193809     thus,     Q1.20.7(1.9) = -0.081513574 + 0.112193809 . i      ( in 53 seconds )

0.4   ENTER^
1.3   ENTER^
0.7      R/S    >>>>     Q1.30.4(0.7) =  -1.317935682   ( in 37 seconds )      ( B is always equal to zero if  | x | < 1 )

9°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  | x | > 1

Formula:      Qnm(x) = ei.mpi 2-n-1 pi1/2 x-n-m-1 (x2-1)m/2 F(1+n/2+m/2 ; 1/2+n/2+m/2 ; n+3/2 ; 1/x2 )  Gamma(1+n+m) / Gamma(n+3/2)

( the result is a complex number )

-If  x < -1 and  -n-m-1 is not an integer, there will be a "DATA ERROR" message.

Data Registers:         R00 to R07: temp
Flags: /
Subroutines:  "GAM"  ( Gamma function ) ,  "HGF"   ( Hypergeometric functions )

 01  LBL "ALF2C" 02  STO 04 03  CLX 04  SIGN 05  + 06  STO 03 07  STO 05 08  X<>Y 09  STO 06 10  + 11  .5 12  ST+ 03 13  * 14  STO 02 15  LASTX 16  + 17  STO 01 18  RCL 04 19  X^2 20  1/X 21  XEQ "HGF"   22  STO 01 23  RCL 05 24  RCL 06 25  + 26  XEQ "GAM"  27  ST* 01 28  RCL 03 29  XEQ "GAM" 30  ST/ 01 31  RCL 01 32  1 33  RCL 00 34  - 35  RCL 06         36  Y^X 37  PI 38  * 39  SQRT 40  * 41  RCL 04 42  ST+ X 43  RCL 05 44  Y^X 45  / 46  1 47  CHS 48  ACOS 49  RCL 06           50  * 51  X<>Y 52  P-R 53  END

( 80 bytes / SIZE 007 )

 STACK INPUTS OUTPUTS Z m / Y n B X x A

with   Qnm(x) =  A + i.B

Examples:    Compute    Q1.20.7(1.9)

0.7   ENTER^
1.2   ENTER^
1.9   XEQ "ALF2C"  yields    -0.081513570
X<>Y    0.112193804     thus,     Q1.20.7(1.9) = -0.081513570 + 0.112193804 . i      ( in 29 seconds )

-Similarly, we find  Q74(3) = 0.004063232  ( in 18 seconds )  ( "PQMN" would give a wrong result! )

-This program will not work if  n+3/2 = 0,-1,-2,-3,-4, ..... unless you replace line 21 by  XEQ "HGF2"  ( cf "Hypergeometric Function for the HP-41" )
and line 29 by  FC? 00  XEQ "GAM"  FC?C 00

-With this modification, you'll find, for example:   Q -1.52(7) = 0.114719166   ( in 16 seconds )

-If you need  | Qnm(x) | only, delete lines 54 to 60 and for instance:   |  Q1.20.7(1.9) | = 0.138679169   ( this real result is in L-register otherwise )

References:

[1]  Abramowitz and Stegun , "Handbook of Mathematical Functions" -  Dover Publications -  ISBN  0-486-61272-4
[2]  Press , Vetterling , Teukolsky , Flannery , "Numerical Recipes in C++" - Cambridge University Press - ISBN  0-521-75033-4