The Museum of HP Calculators

# Associated Legendre Functions for the HP-41

This program is Copyright © 2006 by Jean-Marc Baillard and is used here by permission.

This program is supplied without representation or warranty of any kind. Jean-Marc Baillard and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.

Overview

1°) Pnm(x)   with 0 <= m <= n  (integer order & degree)   ( new )
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   ( improved )

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

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   ( new )
9°) Associated Legendre Functions of the second kind ( fractional order & degree ) with  | x | > 1       ( improved )

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.

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  ""             ( TEXT 0  or another NOP instruction like  STO X  ...  )
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: F05 & F02    if flag F02 is clear "PQMN" calculates  Pnm(x)
if flag F02 is set    "PQMN" ----------  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 )

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  ""                       TEXT0   or another NOP instruction like  LBL 00  STO X  ...  etc  ...
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  ""                       TEXT0   or another NOP instruction like  LBL 00  STO X  ...  etc  ...
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)

a) SIZE 008  ( or greater )

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

c) 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 )

and  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" ----------  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.

Example:    Calculate   P1.30.4(0.7)  &   Q1.30.4(0.7)

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+"            or   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+"       or    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:    Abramowitz and Stegun , "Handbook of Mathematical Functions" -  Dover Publications -  ISBN  0-486-61272-4
Press , Vetterling , Teukolsky , Flannery , "Numerical Recipes in C++" - Cambridge University Press - ISBN  0-521-75033-4