(12C) Error Function Approximation
10-02-2019, 03:21 AM (This post was last modified: 10-02-2019 03:25 AM by Eddie W. Shore.)
Post: #1
 Eddie W. Shore Senior Member Posts: 1,131 Joined: Dec 2013
(12C) Error Function Approximation
The program for the HP 12C calculator approximates the error function defined as

erf(x) = 2 / √π * ∫ e^-(t^2) dt from t = 0 to t = x

by using the series

erf(x) = (2*x) / √π * Σ( (-x^2)^n / (n!*(2*n+1)), n = 0 to ∞)

In the approximation, up to 69 terms are calculated for the sum (the loop stops when n = 69).

Since there is no π constant on the HP 12C, the approximation 355/113 for π is used.

Program:
Code:
Step;   Key Code;  Key 01;  44,1;  STO 1 02;  35;   CLx 03;  44, 2;  STO 2 04;  44, 3;  STO 3 05;  45, 1;  RCL 1    06;  2;   2 07;  21;  y^x 08;  16;  CHS 09;  45, 2;  RCL 2 10;  21;  y^x 11;  45, 2;  RCL 2 12;  43, 3;  n! 13;  45, 2;  RCL 2 14;  2;   2 15;  20;  * 16;  1;  1 17;  40;  + 18;  20;  * 19;  10;  ÷ 20;  44,40,3;  STO+ 3 21;  43, 35;  x=0 22;  43,33,31;  GTO 31 23;  1;  1 24;  44,40,2;  STO+ 2 25;  45, 2;  RCL 2 26;  6;   6 27;  9;   9 28;  43,34;  x≤y 29;  43,33,31; GTO 31 30;  43,33,05; GTO 05 31;  45,3;  RCL 3 32;  45,1;  RCL 1 33;  20;  * 34;  2;  2 35;  20;  * 36;  3;  3 37;  5;  5 38;  5;  5 39;  36;  ENTER 40;  1;  1  41;  1;  1 42;  3;  3 43;  10;  ÷ 44;  43,21;  √ 45;  10;  ÷ 46;  43,33,00;  STO 00

Examples

(FIX 5)

erf(0.5) ≈ 0.52050

erf(1.6) ≈ 0.97635

erf(2.3) ≈ 0.99886

Source

Ball, John A. Algorithms for PRN Calculators John Wiley & Sons: New York 1978 ISBN (10) 0-471-0370-8
10-05-2019, 12:26 PM
Post: #2
 Albert Chan Senior Member Posts: 1,119 Joined: Jul 2018
RE: (12C) Error Function Approximation
According to Abramowitz & Stegun, erf and cdf are related (eqn 7.1.22)

cdf(z) = ½(1 + erf(z/√(2))
erf(z) = 2 cdf(√(2) z) - 1 = 1 - cdf(-√(2) z)

Confirm with Casio FX-115ES, R(z) = cdf(-z)

erf(0.5) = 1 - 2 R(√(2) * 0.5) = 0.5205
erf(1.6) = 1 - 2 R(√(2) * 1.6) = 0.976348
erf(2.3) = 1 - 2 R(√(2) * 2.3) = 0.9988567

Q(z) (pdf area 0 to z) is simpler, but not as accurate.

2 Q(√(2) * 0.5) = 0.5205
2 Q(√(2) * 1.6) = 0.97634
2 Q(√(2) * 2.3) = 0.99886
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)