spell check
This commit is contained in:
		
							parent
							
								
									b645f6648a
								
							
						
					
					
						commit
						3a734f180c
					
				
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							|  | @ -1,6 +1,6 @@ | ||||||
| # A calculator for distributions, for Fermi estimation | # A calculator for distributions, for Fermi estimation | ||||||
| 
 | 
 | ||||||
| This project is a minimalist, calculator-style DSL for fermi estimation. It can multiply, divide, add and substract scalars, lognormals and beta distributions, and supports variables. | This project is a minimalist, calculator-style DSL for fermi estimation. It can multiply, divide, add and subtract scalars, lognormals and beta distributions, and supports variables. | ||||||
| 
 | 
 | ||||||
| ## Motivation | ## Motivation | ||||||
| 
 | 
 | ||||||
|  | @ -62,7 +62,6 @@ $ fermi | ||||||
|             beta:                          beta alpha beta |             beta:                          beta alpha beta | ||||||
|     Variable assignment:                   =: variable_name |     Variable assignment:                   =: variable_name | ||||||
|     Variable assignment and clear stack:   =. variable_name |     Variable assignment and clear stack:   =. variable_name | ||||||
|     Suffixes:                              %, K, M, B, T |  | ||||||
|     Special commands: |     Special commands: | ||||||
|          Comment:                          # this is a comment |          Comment:                          # this is a comment | ||||||
|          Summary stats:                    stats |          Summary stats:                    stats | ||||||
|  | @ -79,7 +78,7 @@ $ fermi | ||||||
|     + 1 10 |     + 1 10 | ||||||
|     * beta 1 10 |     * beta 1 10 | ||||||
|     1 10 (multiplication taken as default operation) |     1 10 (multiplication taken as default operation) | ||||||
|       =: x |     =: x | ||||||
|     . |     . | ||||||
|     1 100 |     1 100 | ||||||
|     + x |     + x | ||||||
|  | @ -89,16 +88,20 @@ $ fermi | ||||||
|     1 10 |     1 10 | ||||||
|     + beta 1 100 |     + beta 1 100 | ||||||
|     ) |     ) | ||||||
|  |     =. y | ||||||
|  |     mx x 1 y 2.33 | ||||||
|  |     + mx x 30% y 70% | ||||||
|     exit |     exit | ||||||
| 
 | 
 | ||||||
| Command flags: | 2. Command flags: | ||||||
|   -echo |   -echo | ||||||
|         Specifies whether inputs should be echoed back. Useful if reading from a file |         Specifies whether inputs should be echoed back. Useful if reading from a file | ||||||
| .  -f string | .  -f string | ||||||
|         Specifies a file with a model to run. Sets the echo command to true by default. |         Specifies a file with a model to run | ||||||
|   -n int |   -n int | ||||||
|         Specifies the number of samples to draw when using samples (default 100000) |         Specifies the number of samples to draw when using samples (default 100000) | ||||||
|   -h    Shows help message |   -h    Shows help message | ||||||
|  | 
 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| You can see real life examples [here](https://x.com/NunoSempere/status/1831106442721452312), [here](https://x.com/NunoSempere/status/1829525844169248912), [here](https://x.com/NunoSempere/status/1818810770932568308), [here](https://x.com/NunoSempere/status/1816605190415401100), [here](https://x.com/NunoSempere/status/1816604386703081894), [here](https://x.com/NunoSempere/status/1815169781907042504) | You can see real life examples [here](https://x.com/NunoSempere/status/1831106442721452312), [here](https://x.com/NunoSempere/status/1829525844169248912), [here](https://x.com/NunoSempere/status/1818810770932568308), [here](https://x.com/NunoSempere/status/1816605190415401100), [here](https://x.com/NunoSempere/status/1816604386703081894), [here](https://x.com/NunoSempere/status/1815169781907042504) | ||||||
|  | @ -106,7 +109,7 @@ You can see real life examples [here](https://x.com/NunoSempere/status/183110644 | ||||||
| ## Tips & tricks | ## Tips & tricks | ||||||
| 
 | 
 | ||||||
| - It's conceptually clearer to have all the multiplications first and then all the divisions | - It's conceptually clearer to have all the multiplications first and then all the divisions | ||||||
| - For things between 0 and 1, consider using a beta distribution | - For distributions between 0 and 1, consider using a beta distribution | ||||||
| 
 | 
 | ||||||
| ### Command line options | ### Command line options | ||||||
| 
 | 
 | ||||||
|  | @ -123,9 +126,9 @@ You also run a file with the -f option | ||||||
| $ fermi -f more/piano-tuners.fermi  | $ fermi -f more/piano-tuners.fermi  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ### Integrations with linux utilities | ### Integrations with Linux utilities | ||||||
| 
 | 
 | ||||||
| Because the model reads from standard input, you can a model to it: | Because the model reads from standard input, you can pipe a model to it: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| $ cat more/piano-tuners.fermi | fermi | $ cat more/piano-tuners.fermi | fermi | ||||||
|  | @ -134,7 +137,6 @@ $ cat more/piano-tuners.fermi | fermi | ||||||
| In that case, you will probably want to use the echo flag as well | In that case, you will probably want to use the echo flag as well | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| 
 |  | ||||||
| $ cat more/piano-tuners-commented.fermi | fermi -echo | $ cat more/piano-tuners-commented.fermi | fermi -echo | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | @ -152,9 +154,9 @@ fermi | tee -a fermi.log | ||||||
| 
 | 
 | ||||||
| ## Different levels of complexity | ## Different levels of complexity | ||||||
| 
 | 
 | ||||||
| The top level f.go file (420 lines) has a bunch of complexity: variables, parenthesis, samples, beta distributions, number of samples, etc. In the simple/ folder: | The mainline code has a bunch of complexity: variables, parenthesis, samples, beta distributions, number of samples, mixtures etc. In the simple/ folder: | ||||||
| 
 | 
 | ||||||
| - f_simple.go (370 lines) strips variables and parenthesis, but keeps beta distributions, samples, and addition and substraction | - f_simple.go (370 lines) strips variables and parenthesis, but keeps beta distributions, samples, and addition and subtraction | ||||||
| - f_minimal.go (140 lines) strips everything that isn't lognormal and scalar multiplication and addition, plus a few debug options. | - f_minimal.go (140 lines) strips everything that isn't lognormal and scalar multiplication and addition, plus a few debug options. | ||||||
| 
 | 
 | ||||||
| ## Roadmap  | ## Roadmap  | ||||||
|  | @ -173,7 +175,7 @@ Done: | ||||||
| - [x] Think how to integrate with squiggle.c to draw samples | - [x] Think how to integrate with squiggle.c to draw samples | ||||||
|   - [x] Copy the time to botec go code |   - [x] Copy the time to botec go code | ||||||
|   - [x] Define samplers |   - [x] Define samplers | ||||||
|   - [x] Call those samplers when operating on distributions that can't be operted on algebraically |   - [x] Call those samplers when operating on distributions that can't be operated on algebraically | ||||||
| - [x] Display output more nicely, with K/M/B/T | - [x] Display output more nicely, with K/M/B/T | ||||||
| - [x] Consider the following: make this into a stack-based DSL, with: | - [x] Consider the following: make this into a stack-based DSL, with: | ||||||
|   - [x] Variables that can be saved to and then displayed |   - [x] Variables that can be saved to and then displayed | ||||||
|  | @ -194,6 +196,7 @@ Done: | ||||||
| - [x] Add flag to repeat input lines (useful when reading from files) | - [x] Add flag to repeat input lines (useful when reading from files) | ||||||
| - [x] Add percentages | - [x] Add percentages | ||||||
| - [x] Consider adding an understanding of percentages | - [x] Consider adding an understanding of percentages | ||||||
|  | - [x] Improve and rationalize error messages a bit | ||||||
| 
 | 
 | ||||||
| To (possibly) do: | To (possibly) do: | ||||||
| 
 | 
 | ||||||
|  | @ -201,7 +204,7 @@ To (possibly) do: | ||||||
| - [ ] Document mixture distributions | - [ ] Document mixture distributions | ||||||
| - [ ] Fix lognormal multiplication and division by 0 or < 0 | - [ ] Fix lognormal multiplication and division by 0 or < 0 | ||||||
| - [ ] With the -f command line option, the program doesn't read from stdin after finishing reading the file | - [ ] With the -f command line option, the program doesn't read from stdin after finishing reading the file | ||||||
| - [ ] Add functions. Now easier to do with an explicit representation of the stakc | - [ ] Add functions. Now easier to do with an explicit representation of the stack | ||||||
| - [ ] Think about how to draw a histogram from samples | - [ ] Think about how to draw a histogram from samples | ||||||
| - [ ] Dump samples to file | - [ ] Dump samples to file | ||||||
| - [ ] Represent samples/statistics in some other way | - [ ] Represent samples/statistics in some other way | ||||||
|  |  | ||||||
|  | @ -105,7 +105,7 @@ const HELP_MSG = "1. Grammar:\n" + | ||||||
| 	"        Specifies a file with a model to run\n" + | 	"        Specifies a file with a model to run\n" + | ||||||
| 	"  -n int\n" + | 	"  -n int\n" + | ||||||
| 	"        Specifies the number of samples to draw when using samples (default 100000)\n" + | 	"        Specifies the number of samples to draw when using samples (default 100000)\n" + | ||||||
| 	"  -h    Shows help message" | 	"  -h    Shows help message\n" | ||||||
| 
 | 
 | ||||||
| const NORMAL90CONFIDENCE = 1.6448536269514727 | const NORMAL90CONFIDENCE = 1.6448536269514727 | ||||||
| const INIT_DIST Scalar = Scalar(1) | const INIT_DIST Scalar = Scalar(1) | ||||||
|  | @ -367,7 +367,6 @@ func parseWordsIntoOpAndDist(words []string, vars map[string]Dist) (string, Dist | ||||||
| /* Combine old dist and new line */ | /* Combine old dist and new line */ | ||||||
| // We want this as a function (rather than just be in main)
 | // We want this as a function (rather than just be in main)
 | ||||||
| // to be able to have parenthesis/recusion, possibly functions
 | // to be able to have parenthesis/recusion, possibly functions
 | ||||||
| 
 |  | ||||||
| func runRepl(stack Stack, reader *bufio.Reader, echo_flag *bool) Stack { | func runRepl(stack Stack, reader *bufio.Reader, echo_flag *bool) Stack { | ||||||
| replForLoop: | replForLoop: | ||||||
| 	for { | 	for { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user