Appell

# Appell Hypergeometric Functions for the HP-41

Overview

1°)  Appell Hypergeometric Function F1
2°)  Appell Hypergeometric Function F2
3°)  Appell Hypergeometric Function F3
4°)  Appell Hypergeometric Function F4

-These are functions of 2 variables x , y  defined by double series.

1°)  Appell Hypergeometric Function F1

-The Appell hypergeometric function F1 is defined by:

F1( a , b , b' , c ; x , y ) = Summ,n=0 to infinity   [ (a)m+n (b)m (b')n / (c)m+n ]  ( xm / m! ) ( yn /n! )

where  (a)k = a(a+1)(a+2).....(a+k-1)   if  k > 0  and  (a)0 = 1       ( Pochhammer symbol )

Data Registers:      R00 & R05 to R09: temp                        ( Registers R01 thru R04 are to be initialized before executing "APLF1" )

•  R01 = a      •  R02 = b     •  R04 =  c
•  R03 = b'
Flags: /
Subroutines: /

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

( 79 bytes / SIZE 010 )

 STACK INPUTS OUTPUTS Y y F1(x,y) X x F1(x,y)

Example:      With   a = sqrt(2)   b = sqrt(3)   b' = sqrt(5)   c = sqrt(6)        ( to be stored into  R01 thru R04 )

0.2  ENTER^
0.1  XEQ "APLF1"  >>>>  F1( 21/2 , 31/2 , 51/2 , 61/2 , 0.1 , 0.2 )  = 1.489564421          ---Execution time = 73s---

Note:

-The series is convergent if   Max { | x | , | y | }  <  1

2°)  Appell Hypergeometric Function F2

-The Appell hypergeometric function F2 is defined by:

F2( a , b , b' , c , c' ; x , y ) = Summ,n=0 to infinity   [ (a)m+n (b)m (b')n / (c)m (c')n ]  ( xm / m! ) ( yn /n! )

Data Registers:      R00 & R06 to R09: temp                       ( Registers R01 thru R05 are to be initialized before executing "APLF2" )

•  R01 = a      •  R02 = b     •  R04 =  c
•  R03 = b'    •  R05 =  c'
Flags: /
Subroutines: /

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

( 78 bytes / SIZE 010 )

 STACK INPUTS OUTPUTS Y y F2(x,y) X x F2(x,y)

Example:      With   a = sqrt(2)   b = sqrt(3)   b' = sqrt(5)   c = sqrt(6)   c' = sqrt(7)        ( to be stored into  R01 thru R05 )

0.2  ENTER^
0.1  XEQ "APLF2"  >>>>  F2( 21/2 , 31/2 , 51/2 , 61/2 , 71/2  ; 0.1 , 0.2 )  = 1.481853808          ---Execution time = 92s---

Note:

-The series is convergent if    | x | + | y |  <  1

3°)  Appell Hypergeometric Function F3

-The Appell hypergeometric function F3 is defined by:

F3( a , a' , b , b' , c ; x , y ) = Summ,n=0 to infinity   [ (a)m (a')n (b)m (b')n / (c)m+n ]  ( xm / m! ) ( yn /n! )

Data Registers:      R00 & R06 to R09: temp                     ( Registers R01 thru R05 are to be initialized before executing "APLF3" )

•  R01 = a      •  R03 = b     •  R05 =  c
•  R02 = a'     •  R04 = b'
Flags: /
Subroutines: /

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

( 78 bytes / SIZE 010 )

 STACK INPUTS OUTPUTS Y y F3(x,y) X x F3(x,y)

Example:      With   a = sqrt(2)   a' = sqrt(3)   b = sqrt(5)   b' = sqrt(6)   c = sqrt(7)        ( to be stored into  R01 thru R05 )

0.2  ENTER^
0.1  XEQ "APLF3"  >>>>  F3( 21/2 , 31/2 , 51/2 , 61/2 , 71/2  ; 0.1 , 0.2 )  = 1.600873822          ---Execution time = 62s---

Note:

-The series is convergent if    Max { | x | , | y | }  <  1

4°)  Appell Hypergeometric Function F4

-The Appell hypergeometric function F4 is defined by:

F4( a , b , c , c' ; x , y ) = Summ,n=0 to infinity   [ (a)m+n (b)m+n / ( (c)m (c')n) ]  ( xm / m! ) ( yn /n! )

Data Registers:      R00 & R05 to R09: temp                        ( Registers R01 thru R04 are to be initialized before executing "APLF4" )

•  R01 = a      •  R02 = b     •  R03 =  c
•  R04 = c'
Flags: /
Subroutines: /

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

( 79 bytes / SIZE 010 )

 STACK INPUTS OUTPUTS Y y F4(x,y) X x F4(x,y)

Example:      With   a = sqrt(2)   b = sqrt(3)   c = sqrt(5)   c' = sqrt(6)        ( to be stored into  R01 thru R04 )

0.2  ENTER^
0.1  XEQ "APLF4"  >>>>  F4( 21/2 , 31/2 , 51/2 , 61/2 , 0.1 , 0.2 )  = 1.490926825          ---Execution time = 149s---

Notes:

-The series is convergent if    | x |1/2 + | y |1/2  <  1

-All these double series are special cases of "Kampé de Fériet" functions and may be computed by "KdF"
( cf "Kampé de Fériet Functions for the HP-41" )

References: