01-05-2020, 06:37 PM
This program calculates the binomial probability mass function, or cumulative binomial probabilities, with support for large (>69) numbers of trials. To do this, it uses Nemes' formula to approximate ln(x!) rather than calculating x! directly and overflowing.
Recommended Key Labels
A: CALC
E: ln(x!)
Usage
There weren't enough steps left for a fancy user interface, so inputs must first be stored directly into R1-R4 before running the program. Store these values:
R1: n - number of trials
R2: p - percentage of success on a single trial
R3: xmin - minimum number of successes
R4: xmax - maximum number of successes
Then press A to calculate the probability mass/cumulative probability. If xmin=xmax, the program calculates the probability mass for that value of x. If xmax>xmin, then the program calculates cumulative probability for the specified range of x values. If xmin>xmax, or xmax>n, you'll get an error.
Note that Nemes' formula is an approximation, which means this program produces approximate results. Accuracy improves with larger inputs, but the worst-case scenario appears to be about 4 digits of accuracy (e.g. n=2, p=0.5, xmin=0, xmax=2 yields about 100.037%). So it's no worse than a slide rule!
Probability mass is calculated in constant time - about 10 seconds - and a cumulative probability with xmax-xmin=10 takes about 30 seconds. Execution time in seconds can be estimated using 10 + 2(xmax - xmin).
Also, you can press E to calculate ln(x!).
Example
If you roll a fair six-sided die 4000 times, what are the odds that you will get any given result between 662 and 672 times? (The mean of this distribution is 666.67.)
4000 STO 1
6 g 1/x STO 2
662 STO 3
672 STO 4
A: 0.1844
There is approximately an 18.44% chance that any specific result will be rolled between 662 and 672 times.
Recommended Key Labels
A: CALC
E: ln(x!)
Usage
There weren't enough steps left for a fancy user interface, so inputs must first be stored directly into R1-R4 before running the program. Store these values:
R1: n - number of trials
R2: p - percentage of success on a single trial
R3: xmin - minimum number of successes
R4: xmax - maximum number of successes
Then press A to calculate the probability mass/cumulative probability. If xmin=xmax, the program calculates the probability mass for that value of x. If xmax>xmin, then the program calculates cumulative probability for the specified range of x values. If xmin>xmax, or xmax>n, you'll get an error.
Note that Nemes' formula is an approximation, which means this program produces approximate results. Accuracy improves with larger inputs, but the worst-case scenario appears to be about 4 digits of accuracy (e.g. n=2, p=0.5, xmin=0, xmax=2 yields about 100.037%). So it's no worse than a slide rule!
Probability mass is calculated in constant time - about 10 seconds - and a cumulative probability with xmax-xmin=10 takes about 30 seconds. Execution time in seconds can be estimated using 10 + 2(xmax - xmin).
Also, you can press E to calculate ln(x!).
Example
If you roll a fair six-sided die 4000 times, what are the odds that you will get any given result between 662 and 672 times? (The mean of this distribution is 666.67.)
4000 STO 1
6 g 1/x STO 2
662 STO 3
672 STO 4
A: 0.1844
There is approximately an 18.44% chance that any specific result will be rolled between 662 and 672 times.
Code:
RCL 1 34 01
E 15
RCL 3 34 03
STO 8 33 08
E 15
- 51
RCL 1 34 01
RCL 3 34 03
- 51
E 15
- 51
RCL 3 34 03
RCL 2 34 02
f 31
LN 07
STO 5 33 05
* 71
+ 61
RCL 1 34 01
RCL 3 34 03
- 51
1 01
RCL 2 34 02
- 51
f 31
LN 07
STO 6 33 06
* 71
+ 61
f-1 32
LN 07
STO 7 33 07
LSTx 35 00
LBL 23
1 01
RCL 8 34 08
RCL 4 34 04
g x=y 35 23
RCL 7 34 07
RTN 24
g RDown 35 08
RCL 1 34 01
g x><y 35 07
- 51
RCL 8 34 08
1 01
+ 61
STO 8 33 08
/ 81
f 31
LN 07
+ 61
RCL 5 34 05
+ 61
RCL 6 34 06
- 51
f-1 32
LN 07
STO 33
+ 61
7 07
g LSTx 35 00
GTO 22
1 01
LBL 23
E 15
1 01
+ 61
STO 7 33 07
1 01
2 02
* 71
. 83
1 01
RCL 7 34 07
/ 81
- 51
g 35
1/x 04
RCL 7 34 07
+ 61
f 31
LN 07
1 01
- 51
RCL 7 34 07
* 71
2 02
g 35
PI 02
* 71
RCL 7 34 07
/ 81
f 31
LN 07
2 02
/ 81
+ 61
RTN 24