# hp41programs

Conical Functions

# Conical Functions for the HP-41

Overview

0°)  Gamma Function

a) Real Arguments:  Gam(x)
b) Complex Arguments:  1/Gam(z)

1°) Conical Functions of the First Kind
2°) Conical Functions of the First & Second Kind

-The programs listed in paragraph 1 & 2 calculate the conical functions of the 1st and 2nd kind
-They are defined via associated Legendre functions:

Pµ-1/2+i.L (x)  is the conical function of the 1st kind    where    Pnm  is the associated function of the 1st kind
Qµ-1/2+i.L (x) is the conical function of the 2nd kind     and      Qnm is the associated function of the 2nd kind  ( the result is usually a complex number )

-Here, we assume -1 < x < +1

-We need to compute the Gamma function which is involved in the definition of the Legendre functions

0°)  Gamma Function

a)  Real Arguments:  Gam(x)

Formula:

Gam(x) = [ x^(x-1/2) ] sqrt(2.Pi) exp [ -x + ( 1/12 )/( x + ( 1/30 )/( x + ( 53/210)/( x + (195/371)/( x + ...  )))) ]

Data Registers: /
Flags: /
Subroutines: /

 01 LBL "GAM"  02 1  03 X<>Y  04 5  05 X<>Y  06 LBL 01  07 ST* Z  08 1  09 +  10 XY  17 /  18 RCL Y         19 +  20 210  21 *  22 53  23 X<>Y  24 / 25 RCL Y  26 +  27 30  28 *  29 1/X  30 RCL Y         31 +  32 12  33 *  34 1/X  35 RCL Y  36 - 37 E^X  38 PI  39 ST+ X         40 SQRT  41 R^  42 X#0?  43 /  44 *  45 X<>Y  46 R^  47 .5 48 ST- Y  49 *  50 Y^X  51 ST* Y         52 *  53 X#0?  54 RTN  55 DEG  56 90  57 TAN  58 END

( 87 bytes / SIZE 000 )

 STACK INPUT OUTPUT X x Gam(x)

Examples:

PI   XEQ "GAM3"   >>>>      Gam(PI)    =  2.288037794                          ( in 3.5 seconds )
-7.28  RTN    R/S       >>>>    Gam(-7.28) =  0.0004577130755                  ( in 5.6 seconds )
-4     RTN    R/S       >>>>      Gam(-4)    =   infinity = 9.999999999 E99

b)  Complex Arguments:  1/Gam(z)

-The same formula is used to calculate  1/Gam(x+i.y)

Data Registers: /
Flags: /
Subroutines:    "1/Z" , "Z*Z" , "Z/Z"                               ( cf "Complex Functions for the HP-41" )

 01 LBL "1/GAMZ"  02 RAD  03 X<>Y  04 STO O  05 X<>Y  06 0  07 STO N  08 SIGN  09 STO M              10 LBL 01  11 RDN  12 RCL X  13 RCL M  14 *  15 STO P  16 CLX  17 RCL N  18 R^  19 *  20 ST- P  21 X<> P  22 X<> M  23 LASTX 24 *  25 X<> N              26 RCL Y  27 *  28 ST+ N  29 CLX  30 SIGN  31 +  32 5  33 X>Y?  34 GTO 01  35 RDN  36 STO Z  37 371  38 ST* Z  39 *  40 XEQ "1/Z"  41 195  42 ST* Z  43 *  44 X<>Y  45 RCL O  46 + 47 X<>Y  48 R^  49 +  50 210  51 ST* Z  52 *  53 XEQ "1/Z"  54 53  55 ST* Z  56 *  57 X<>Y  58 RCL O              59 +  60 X<>Y  61 R^  62 +  63 30  64 ST* Z  65 *  66 XEQ "1/Z"  67 X<>Y  68 RCL O  69 + 70 X<>Y  71 R^  72 +  73 12  74 ST* Z  75 *  76 XEQ "1/Z"  77 X<>Y  78 RCL O              79 -  80 X<>Y  81 R^  82 -  83 E^X  84 P-R  85 PI  86 ST+ X  87 SQRT  88 ST* Z  89 *  90 STO P  91 X<> T  92 X<>Y  93 X<> O 94 RCL Y  95 PI  96 SIGN  97 ST+ X  98 1/X  99 - 100 RCL Y 101 R^ 102 R-P 103 LN 104 XEQ "Z*Z" 105 E^X 106 P-R 107 RCL O             108 RCL P 109 XEQ "Z*Z" 110 RCL N 111 RCL M 112 R^ 113 R^ 114 XEQ "Z/Z" 115 DEG 116 CLA 117 END

( 202 bytes / SIZE 000 )

 STACK INPUTS OUTPUTS Y y B X x A

where  1 / Gam(x+iy) = A + iB

Example:

-1.6   ENTER^
2.4   XEQ "1/GAMZ"   >>>>    0.537740405                         ---Execution time = 8s---
X<>Y    1.367824860

Whence,    1 / Gam ( 2.4 - 1.6 i ) = 0.537740405 + 1.367824860 i

Note:

-Synthetic register P is used, so don't interrupt "1/GAMZ"

1°) Conical Functions of the First Kind

Formula:

Pµ-1/2+i.L (x) = [ 1/Gam(1-µ) ] (1+x)µ/2 (1-x)µ/2 ]  F(-1/2+i.L , -1/2-i.L , 1-µ ; (1-x)/2 )

where F = "the" hypergeometric function

Data Registers:  R00 thru R06: temp
Flags: /
Subroutine:  "GAM"   ( cf paragraph 0°a) )

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

( 83 bytes / SIZE 007 )

 STACK INPUTS OUTPUTS Z µ / Y L / X -1 < x < +1 Pµ-1/2+i.L (x)

Example:      µ = 0.4   L = 0.7   x = 0.2

0.4  ENTER^
0.7  ENTER^
0.2  XEQ "COF0"   >>>>    P0.4-1/2+0.7.i (0.2) = 1.276705572                       ---Execution time = 23s---

Note:

-This program doesn't work if  µ = 1 , 2 , 3 , ......

2°) Conical Functions of the First & Second Kind

-The associated Legendre functions are computed by the formulas:

Pnm(x) = 2m pi1/2  (1-x2)-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 )  ]

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 thru R13: temp
Flags:  F10 is cleared by this program

CF 02 <-> Conical function of the 1s kind
SF 02 <-> Conivcal Function of the 2nd kind

Subroutines:  "1/GAMZ"  ( cf §0°)b) )   "Z*Z"  "1/Z"  "Z/Z"     ( cf "Complex Functions for the HP-41" )

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

( 302 bytes / SIZE 014 )

 STACK INPUTS CF02OUTPUT SF02OUTPUT Z µ / / Y L / B X -1 < x < +1 Pµ-1/2+i.L (x) A

Where  Pµ-1/2+i.L (x)  is the conical funtion of the first kind and  A + i.B = Qµ-1/2+i.L (x)  is the conocal function of the second kind

Example:      µ = 0.4   L = 0.7   x = 0.2

CF 02
0.4  ENTER^
0.7  ENTER^
0.2  XEQ "COF"   >>>>    P0.4-1/2+0.7.i (0.2) = 1.276705582                       ---Execution time = 31s---

SF 02
0.4  ENTER^
0.7  ENTER^
0.2  XEQ "COF"   >>>>    0.145917573                       ---Execution time = 57s---
X<>Y   -1.518537903

-Whence  Q0.4-1/2+0.7.i (0.2) = 0.145917573 - 1.518537903 i

Note:

-Unlike "COF0", "COF" also works if µ = 1 , 2 , 3 , ....
-For example, with µ = 3, we get:  P3-1/2+0.7.i (0.2) = 1.343462151

Remark:

-The accuracy will be better if you have M-Code routines to compute  Z*Z  1/Z  Z/Z  and so on ...

Reference:

[1]   Abramowitz and Stegun - "Handbook of Mathematical Functions" -  Dover Publications -  ISBN  0-486-61272-4