Overview
1°) One Dimension Problem
a) Univariate Interpolation
b) Derivative of the Lagrange Polynomial
c) Integration of the Lagrange Polynomial
d) 7 Points with Equidistant Abscissas: f(x) = 0 & f'(x)
= 0
2°) Bivariate Interpolation
a) non-synthetic
program
b) synthetic program
Latest Update: §1°)d)
1°) One Dimension Problem
a) Univariate Interpolation
-Let be a set of n data points: M1 ( x1
; y1 ) , M2 ( x2 ;
y2 ) , .......... , Mn (
xn ; yn )
There is a unique polynomial L of degree < n such that:
L(xi) = yi i
= 1 ; 2 ; ..... ; n
-In other words, L is the collocation polynomial for these arguments.
( xi values can be unequally-spaced.)
-The following program calculates L(x) = y1 L1(x) + y2 L2(x) + ..... + yn Ln(x)
where Li(x) = ( x - x1 )
...... ( x - xi-1 ) ( x - xi+1 ) ...... ( x - xn
) / [ ( xi - x1 ) ...... ( xi - xi-1
) ( xi - xi+1 ) ( xi - xn
) ]
are the Lagrange's multiplier functions.
-This formula is also applied to an extrapolation to the limit in example2.
Data Registers:
-You have to store the 2n numbers x1 , y1
, x2 , y2 , ........ , xn , yn
into contiguous registers, starting at any register Rbb:
x1 | x2 | ........... | xn |
y1 | y2 | ........... | yn |
into
Rbb | Rbb+2 | ............. | Ree-1 |
Rbb+1 | Rbb+3 | ............. | Ree |
( ee = bb + 2n -1 )
Flags: /
Subroutines: /
-Thanks to synthetic programming, "LAGR" only uses the registers
containing the xi and yi numbers,
but you can replace status registers M N O P Q by the standard
R00 R01 R02 R03 R04 ( in this case, add CLX STO 03 after
line 06 and of course, choose bb > 04 ).
01 LBL "LAGR" 02 CLA 03 STO M 04 X<>Y 05 STO O 06 STO Q 07 LBL 01 08 RCL Q |
09 STO N 10 SIGN 11 LBL 02 12 RCL M 13 RCL IND O 14 RCL IND N 15 ST- Z 16 - |
17 X#0? 18 GTO 03 19 SIGN 20 STO Y 21 LBL 03 22 / 23 * 24 ISG N |
25 ISG N
26 GTO 02 27 ISG O 28 RCL IND O 29 * 30 ST+ P 31 ISG O 32 GTO 01 |
33 RCL Q 34 RCL M 35 SIGN 36 X<> P 37 CLA 38 END |
( 69 bytes / SIZE eee+1 )
STACK | INPUTS | OUTPUTS |
Y | bbb.eee | bbb.eee |
X | x | L(x) |
L | / | x |
Example1: Evaluate y(3)
and y(5) for the collocation polynomial that takes the values prescribed
below:
xi | 0 | 1 | 2 | 4 | 7 |
yi | 3 | 2 | 4 | 6 | 5 |
-For instance, you store these 10 numbers ( 0 3 1 2 2 4 4 6 7 5 ) into
R01 thru R10, then
1.010 ENTER^
3 XEQ "LAGR"
produces: y(3) = 5.847619048 ( in 14 seconds
)
RDN 5 R/S
>>>> y(5) = 4.523809520
Example2:
-Lagrange's polynomial can also be used for an extrapolation to the limit:
Suppose we are using the trapezoidal rule to evaluate the integral:
I = §02 ex dx
The interval [0;2] is divided into n subintervals
and
n = 1 yields I1 = 8.389056101
n = 2 yields I2 = 6.912809880
n = 4 yields I4 = 6.521610110
n = 8 yields I8 = 6.422297820
We would like to know the result with n = infinity ! i-e 1/n
= 0.
The error of the trapezoidal rule is nearly proportional to 1/n2
, therefore, we can use Lagrange interpolation formula with
x1 = 1 x2 = 1/4
x3 = 1/16 x4 = 1/64
y1 = I1 y2
= I2 y3 = I4
y4 = I8 and
evaluate L (0)
If these 8 numbers are stored in R11 thru R18 for instance,
11.018 ENTER^
0
XEQ "LAGR" produces 6.389056387
Exact result is of course e2 - 1 = 6.389056099 to ten
places
and the error of our Lagrange approximation is only 3. 10-7
although I8 was only exact to 1 decimal!
N.B:
- If you are using Simpson's rule instead of the trapezoidal rule, store
xn = 1/n4 : it's a 4th order method ( at least
far from any singularity )
- n is usually doubled at every step, but it's not
necessary here.
- The same idea can be applied to any other problem of this kind.
b) Derivative of the Lagrange Polynomial
-"DLAGR" takes x in X-register and returns L'(x) in X-register.
Data Registers:
-The same 2n numbers x1 , y1 , x2
, y2 , ........ , xn , yn are to
be stored into contiguous registers, starting at any register
Rbb:
x1 | x2 | ........... | xn |
y1 | y2 | ........... | yn |
into
Rbb | Rbb+2 | ............. | Ree-1 |
Rbb+1 | Rbb+3 | ............. | Ree |
( ee = bb + 2n -1 )
Flags: /
Subroutines: /
01 LBL "DLAGR" 02 CLA 03 STO M 04 X<>Y 05 STO Q 06 STO a 07 LBL 01 08 RCL a 09 STO O 10 CLX 11 LBL 02 12 RCL O 13 RCL Q 14 X=Y? 15 GTO 02 |
16 X<> Z 17 RCL a 18 STO N 19 SIGN 20 LBL 03 21 RCL N 22 RCL O 23 X=Y? 24 GTO 03 25 CLX 26 RCL Q 27 X=Y? 28 GTO 03 29 RDN 30 CLX |
31 RCL M
32 RCL IND N 33 - 34 * 35 ENTER^ 36 ENTER^ 37 LBL 03 38 R^ 39 R^ 40 ISG N 41 ISG N 42 GTO 03 43 + 44 STO Z 45 LBL 02 |
46 X<> Z 47 ISG O 48 ISG O 49 GTO 02 50 RCL a 51 X<>Y 52 LBL 04 53 RCL IND Q 54 RCL IND Z 55 - 56 X=0? 57 SIGN 58 / 59 ISG Y 60 ISG Y |
61 GTO 04 62 ISG Q 63 RCL IND Q 64 * 65 ST+ P 66 ISG Q 67 GTO 01 68 RCL a 69 RCL M 70 SIGN 71 X<> P 72 CLA 73 END |
( 123 bytes / SIZE eee+1 )
STACK | INPUTS | OUTPUTS |
Y | bbb.eee | bbb.eee |
X | x | L' (x) |
L | / | x |
Example:
Evaluate y(PI) for the collocation polynomial that
takes the values prescribed below:
xi | 0 | 1 | 2 | 4 | 7 |
yi | 3 | 2 | 4 | 6 | 5 |
-If, for instance, you store these 10 numbers ( 0 3 1 2 2 4 4 6 7 5
) into R01 thru R10, then
1.010 ENTER^
PI XEQ "DLAGR" >>>>
L' (PI) = 0.857353871
---Execution time = 67s---
Notes:
-Synthetic register a is used, so this program cannot be called as more
than a first level subroutine.
-Registers M N O P Q a may of course be replaced by standard registers
like R00 thru R05
-In this case, choose bbb > 005.
c) Integration of the Lagrange Polynomial
-This program is also listed in "Numerical Integration for the HP-41"
n data points are given and stored in registers R01 thru R2n
x1 | x2 | ........... | xn |
y1 | y2 | ........... | yn |
-The program below calculates its coefficients c0 , c1
, ........... , cn-1 when L(x) is written:
L(x) = c0 + c1 ( x-x1 ) + c2 ( x-x1 )2 + .................. + cn-1 ( x-x1 )n-1
-First, x1 is subtracted from all other xi 's
-We have obviously c0 = y1 and
the other yi 's are replaced by ( yi -
y1 ) / ( xi - x1 )
-Then, we find the value of the new Lagrange polynomial at zero, thus
producing c1 which is stored in register R04
-The process is repeated until cn-1 is computed and
stored in register R2n
-Finally, lines 42 to 57 evaluate §x1xn
L(x).dx
Data Registers: • R00 = n = number of points ( Registers R00 thru R2n are to be initialized before executing "LGI" )
• R01 = x1 • R03 = x2
....... • R2n-1 = xn
• R02 = y1 • R04 = y2
....... • R2n = yn
>>>> when the program stops, R02 = c0 = y1 , R04 = c1 , ............... , R2n = cn-1
Flags: /
Subroutine: "LAGR" ( cf paragrph
1-a) )
01 LBL "LGI" 02 RCL 00 03 ST+ X 04 STO Y 05 RCL 01 06 LBL 00 07 DSE Z 08 ST- IND Z 09 DSE Z 10 GTO 00 11 CLX 12 E3 |
13 / 14 ISG X 15 STO 01 16 RCL 02 17 GTO 02 18 LBL 01 19 2 20 ST+ 01 21 RCL 01 22 0 23 XEQ "LAGR" 24 LBL 02 |
25 ISG Y 26 STO IND Y 27 ISG Y 28 FS? 30 29 GTO 04 30 LBL 03 31 RCL IND Y 32 ISG Z 33 X<>Y 34 ST- IND Z 35 X<>Y 36 ST/ IND Z |
37 RDN 38 ISG Y 39 GTO 03 40 GTO 01 41 LBL 04 42 RCL 00 43 ST+ X 44 0 45 LBL 05 46 RCL IND Y 47 RCL 00 48 / |
49 + 50 RCL IND 01 51 * 52 2 53 ST- Z 54 RDN 55 DSE 00 56 GTO 05 57 END |
( 98 bytes / SIZE 2n+1 )
STACK | INPUT | OUTPUT |
X | / | §x1xn L(x).dx |
Example: Calculate §18
L(x).dx from the following values
x | 1 | 2.4 | 4 | 5.2 | 7 | 8 |
y | 1 | 4 | 6 | 5 | 4 | 2 |
-Store these 12 numbers into registers
R01 R03 R05 R07 R09
R11 ( x )
R02 R04 R06 R08 R10
R12 ( y ) respectively
-There are 6 points: 6 STO 00 XEQ "LGI" >>>> §18 L(x).dx = 29.61789480 ( in 43 seconds )
-We have also the coefficients of the Lagrange polynomial ( as a sum of
powers of ( x-x1 ) ) in registers R02 R04
............. R12
-Here, x1 = 1 and we find:
L(x) = 1 - 0.362103178 ( x-1 ) + 3.623795356
( x-1 )2 - 1.661873944 ( x-1 )3 + 0.272598127
( x-1 )4 - 0.015381483 ( x-1 )5
Remarks:
-For large n-values, the coefficients of the Lagrange polynomial are often
great in magnitude
and of alternate signs, thus leading to inaccurate results.
-Moreover, the coefficients themselves are not obtained very accurately
if n is too great.
-For instance, with the following data:
x | 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | 27 | 29 | 31 | 33 | 35 | 37 | 39 |
y | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | 32 | 34 | 36 | 38 | 40 |
"LGI" yields 797.9971774 wheras the exact
result is 798
Execution time t:
n | t |
4 | 15s |
6 | 43s |
10 | 2mn51s |
20 | 21mn13s |
d) 7 Points with Equidistant Abscissas:
f(x) = 0 & f'(x) = 0
-The following program uses the Lagrange 7-point interpolation
formula.
-We assume that the xi's are equally spaced. ( xi+1
- xi = h , i = -3 , -2 , -1 , 0 , 1 ,
2 )
A = (1/720) [ 540 ( y1 - y-1 ) - 108 ( y2 - y-2 ) + 12 ( y3 - y-3 ) ]
B = (1/720) [ -980 y0 + 540 ( y1 + y-1 ) - 54 ( y2 + y-2 ) + 4 ( y3 + y-3 ) ]
C = (1/720) [ -195 ( y1 - y-1 ) + 120 ( y2 - y-2 ) - 15 ( y3 - y-3 ) ]
D = (1/720) [ 280 y0 - 195 ( y1 + y-1 ) + 60 ( y2 + y-2 ) - 5 ( y3 + y-3 ) ] yk = f(xk)
E = (1/720) [ 15 ( y1 - y-1 ) - 12 ( y2 - y-2 ) + 3 ( y3 - y-3 ) ]
F = (1/720) [ -20 y0 + 15 ( y1 + y-1 ) - 6 ( y2 + y-2 ) + ( y3 + y-3 ) ]
Data Registers: R00 = x0 R16 = h ( Registers R01 thru R07 are to be initialized before executing "SLVD7" )
• R01 = f(x-3) • R02 = f(x-2) • R03 = f(x-1) • R04 = f(x0) • R05 = f(x1) • R04 = f(x2) • R05 = f(x3) R08 to R15: temp
Flag: F01 CF 01 to solve f(x) = 0SF 01 to solve f'(x) = 0 ( extrema )
Subroutines: /
01
LBL "SLVD7" 02 STO 00 03 X<>Y 04 STO 16 05 RCL 01 06 RCL 07 07 + 08 STO 14 09 RCL 02 10 RCL 06 11 + 12 6 13 * 14 STO 15 15 - 16 RCL 03 17 RCL 05 18 + 19 STO 08 20 15 21 * 22 + 23 RCL 04 24 20 25 * 26 - 27 STO 13 |
28
RCL 15 29 ST+ X 30 RCL 14 31 - 32 RCL 08 33 39 34 * 35 - 36 RCL 04 37 56 38 * 39 + 40 5 41 * 42 STO 11 43 RCL 14 44 4 45 * 46 RCL 15 47 9 48 * 49 - 50 RCL 08 51 540 52 * 53 + 54 RCL 04 |
55
980 56 * 57 - 58 STO 09 59 RCL 07 60 RCL 01 61 - 62 STO 14 63 RCL 06 64 RCL 02 65 - 66 STO 15 67 4 68 * 69 - 70 RCL 05 71 RCL 03 72 - 73 STO 08 74 5 75 * 76 + 77 3 78 * 79 STO 12 80 RCL 15 81 8 |
82
* 83 RCL 14 84 - 85 RCL 08 86 13 87 * 88 - 89 15 90 * 91 STO 10 92 RCL 14 93 RCL 15 94 9 95 * 96 - 97 RCL 08 98 45 99 * 100 + 101 12 102 * 103 STO 08 104 RCL 04 105 720 106 * 107 FS? 01 108 X<>Y |
109
STO 14 110 RCL 09 111 ST+ X 112 RCL 08 113 FS? 01 114 X<>Y 115 STO 15 116 CLX 117 LBL 01 118 STO Y 119 RCL 13 120 6 121 FC? 01 122 SIGN 123 * 124 * 125 RCL 12 126 5 127 FC? 01 128 SIGN 129 * 130 + 131 * 132 RCL 11 133 4 134 FC? 01 135 SIGN |
136
* 137 + 138 * 139 RCL 10 140 3 141 FC? 01 142 SIGN 143 * 144 + 145 * 146 RCL 09 147 FS? 01 148 CLX 149 + 150 * 151 FC? 01 152 * 153 RCL 14 154 + 155 RCL 15 156 CHS 157 / 158 VIEW X 159 X#Y? 160 GTO 01 161 ENTER 162 STO Z |
163
RCL 13 164 * 165 RCL 12 166 + 167 * 168 RCL 11 169 + 170 * 171 RCL 10 172 + 173 * 174 RCL 09 175 + 176 * 177 RCL 08 178 + 179 * 180 720 181 / 182 RCL 04 183 + 184 X<>Y 185 RCL 16 186 * 187 RCL 00 188 + 189 CLD 190 END |
( 232 bytes / SIZE 017 )
STACK | INPUTS | OUTPUTS |
Y | h | f(x) |
X | x0 | x |
If CF 01 x is a solution of f(x) = 0
If SF 01 x is a solution of f'(x) = 0 ( extremum )
Example1: f(x) = 0 from these
7 values
x |
1 |
3 |
5 |
7 |
9 |
11 |
13 |
y |
16 |
10 |
6 |
1 |
-3 |
-8 |
-20 |
16 STO 01 10 STO 02 6 STO
03 1 STO 04 -3 STO 05 -8 STO 06 -20
STO 07
CF 01 h = 2 &
x0 = 7 so:
7 XEQ "SLVD7" >>>> x = 7.446084649 ---Execution time = 20s---
Example2: Extremum from these 7
values
x |
1 |
3 |
5 |
7 |
9 |
11 |
13 |
y |
16 |
10 |
6 |
4 |
5 |
8 |
20 |
16 STO 01 10 STO 02 6 STO
03 4 STO 04 5 STO 05 8 STO 06
20 STO 07
SF 01 h = 2 &
x0 = 7 so:
7 XEQ "SLVD7" >>>> x = 7.235889441 ---Execution time = 16s---
X<>Y f(x) = 3.977546065
-So f(x) has a minimum 3.977546065 for x = 7.235889441
Notes:
-The method may fail , for example if A = 0 when CF 01
-It's also possible to have an infinite loop with X#Y? ( line 159 )
-It would be better to replace line 159 by the M-Code routine X#Y?? ( cf "A few M-Code routines for the HP41" )
-Similar programs with 5-point Lagrange polynomials are listed in "Linear & Non-Linear systems for the HP41" ( paragraph 2°)a4) )
and "Extrema for the HP41" ( paragraph 1°)e) )
2°) Bivariate Interpolation
a) Non-synthetic program
-Now we have a grid of nxm values: f(xi,yj) with i = 1,2,......,n & j = 1,2,.....,m and we want to estimate f(x,y)
-"LAGR2" uses the Lagrange Polynomial in the directions of x-axis and
y-axis.
-You have to store the data in registers Rbb to Ree as shown below (
bb > 10 ):
Data Registers: • R00 = bbb.eeenn ( Registers R00 and Rbb thru Ree are to be initialized before executing "LAGR2" )
R01 = x R03 = f(x,y)
R02 = y R04 thru R10: temp
We must choose bb > 10
x \ y | •
Rbb+n = y1
• Rbb+2n+1 = y2 ..............................
• Ree-n = ym
---------------------------------------------------------------------------------------------------------------------
• Rbb = x1
| • Rbb+n+1 = f(x1,y1)
• Rbb+2n+2 = f(x1,y2) ..............................
• Ree-n+1 = f(x1,ym)
• Rbb+1 = x2 | •
Rbb+n+2 = f(x2,y1) • Rbb+2n+3
= f(x2,y2) ..............................
• Ree-n+2 = f(x2,ym)
.................... | .............................................................................................................................................
|
• Rbb+n-1 = xn | • Rbb+2n
= f(xn,y1) • Rbb+3n+1
= f(xn,y2) ...............................
• Ree = f(xn,ym)
Flags: /
Subroutines: /
01 LBL "LAGR2" 02 STO 01 03 X<>Y 04 STO 02 05 CLX 06 STO 03 07 RCL 00 08 ISG X 09 STO 07 10 INT 11 DSE X 12 .1 13 % 14 RCL 00 15 INT 16 + 17 STO 05 |
18 STO 06 19 E-5 20 ST+ 07 21 LBL 00 22 RCL 07 23 STO 08 24 STO 09 25 FRC 26 RCL 06 27 INT 28 + 29 ISG X 30 STO 10 31 CLX 32 STO 04 33 LBL 01 34 RCL IND 10 |
35 LBL 02 36 RCL 02 37 RCL IND 08 38 RCL IND 09 39 ST- Z 40 - 41 X#0? 42 GTO 02 43 SIGN 44 STO Y 45 LBL 02 46 / 47 * 48 ISG 09 49 GTO 02 50 ST+ 04 51 RCL 07 |
52 STO 09 53 ISG 10 54 CLX 55 ISG 08 56 GTO 01 57 RCL 05 58 STO 10 59 RCL 04 60 LBL 03 61 RCL 01 62 RCL IND 06 63 RCL IND 10 64 ST- Z 65 - 66 X#0? 67 GTO 03 68 SIGN |
69 STO Y 70 LBL 03 71 / 72 * 73 ISG 10 74 GTO 03 75 ST+ 03 76 ISG 06 77 GTO 00 78 RCL 01 79 SIGN 80 RCL 02 81 RCL 03 82 END |
( 121 bytes / SIZE? )
STACK | INPUTS | OUTPUTS |
Y | y | y |
X | x | f(x,y) |
L | / | x |
Example: A function f(x,y)
is only known by the following values ( meaning for example: f(1,4)
= 3 f(4,6) = 9 ...etc... )
>>> if, for instance, you choose bb = 11 , store these 19 numbers into
x \ y | 2 3
4 6
| R14 R18 R22 R26
--------------------------
---------------------------------
1 | 4
3 3 5
R11 | R15 R19 R23 R27
respectively
2 | 3
1 2 6
R12 | R16 R20 R24 R28
4 | 1
0 4 9
R13 | R17 R21 R25 R29
-The control number of this table is 11.02903
so 11.02903 STO 00
( note that nn = 03 is the number of x-values which may be different
from m = the number of y-values ( here m = 4 ) )
-Then, to compute, say f(3,5)
5 ENTER^
3 XEQ "LAGR2" >>>>
f(3,5) ~ 5.8333 ( in 29 seconds )
-Likewise, to obtain f(1.6,2.7)
2.7 ENTER^
1.6 R/S
>>>> f(1.6,2.7) ~ 1.9038
Note: Execution time is approximately proportional
to nxm
b) Synthetic program
-Synthetic programming allows to store the data into registers R01 thru
Rn.m+n+m
-However, synthetic register a is used, so this program cannot be called
as more than a first level subroutine.
Data Registers:
• R00 = n.mmm = n + m/103
( Registers R00 thru Rnm+m+n are to be initialized before executing
"BVI" )
x \ y | • Rnn+1
= y1
• R2n+2 = y2 ..............................
• Rnm+m = ym
---------------------------------------------------------------------------------------------------------------------
• R01 = x1 | • Rnn+2 = f(x1,y1)
• R2n+3 = f(x1,y2) ..............................
• Rnm+m+1 = f(x1,ym)
• R02 = x2 | • Rnn+3 = f(x2,y1)
• R2n+4 = f(x2,y2) ..............................
• Rnm+m+2 = f(x2,ym)
........... | .............................................................................................................................................
|
• Rnn = xn | • R2n+1 =
f(xn,y1) • R3n+2 = f(xn,y2)
.............................. • Rnm+m+n
= f(xn,ym)
Flags: /
Subroutines: /
01 LBL "BVI" 02 CLA 03 STO M 04 X<>Y 05 STO N 06 RCL 00 07 INT 08 STO P 09 LBL 01 10 RCL 00 11 INT 12 LASTX 13 FRC 14 ENTER^ 15 SIGN 16 10^X 17 CHS |
18 10^X 19 SQRT 20 + 21 ST* Y 22 + 23 ISG X 24 STO Q 25 CLX 26 LBL 02 27 RCL Q 28 FRC 29 ISG X 30 STO a 31 SIGN 32 LBL 03 33 RCL N 34 RCL IND a |
35 - 36 RCL IND Q 37 ST- L 38 X<> L 39 CHS 40 X#0? 41 GTO 03 42 SIGN 43 STO Y 44 LBL 03 45 / 46 * 47 ISG a 48 GTO 03 49 RCL P 50 RCL Q 51 + |
52 RDN 53 RCL IND T 54 * 55 + 56 ISG Q 57 GTO 02 58 RCL 00 59 INT 60 STO Q 61 X<>Y 62 LBL 04 63 RCL M 64 RCL IND P 65 RCL IND Q 66 ST- Z 67 - 68 X#0? |
69 GTO 04 70 SIGN 71 STO Y 72 LBL 04 73 / 74 * 75 DSE Q 76 GTO 04 77 ST+ O 78 DSE P 79 GTO 01 80 RCL M 81 SIGN 82 RCL N 83 RCL O 84 CLA 85 END |
( 131 bytes / SIZE (n+1)(m+1) )
STACK | INPUTS | OUTPUTS |
Y | y | y |
X | x | f(x,y) |
L | / | x |
Example: With the same data
as above:
x \ y | 2 3
4 6
| R04 R08 R12 R16
--------------------------
--------------------------------
1 | 4
3 3 5
=
R01 | R05 R09 R13 R17
respectively
2 | 3
1 2 6
R02 | R06 R10 R14 R18
4 | 1
0 4 9
R03 | R07 R11 R15 R19
-Here, n = 3 and m = 4 so 3.004 STO 00
-Then, to compute f(3,5)
5 ENTER^
3 XEQ "BVI" >>>> f(3,5)
~ 5.8333 ( in 31 seconds )
-And to obtain f(1.6,2.7)
2.7 ENTER^
1.6 R/S
>>>> f(1.6,2.7) ~ 1.9038
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