forked from personal/squiggle.c
4.7 KiB
4.7 KiB
Roadmap
To do
- Big refactor
- Come up with a better headline example; fermi paradox paper is too complicated
- Make README.md less messy
- Give examples of new functions
- Reference commit with cdf functions, even though deleted
- Post on suckless subreddit
- Look into https://lite.duckduckgo.com/html/ instead?
- Drive in a few more real-life applications
- US election modelling?
- Look into using size_t instead of int for sample numbers
- Reorganize code a little bit to reduce usage of gcc's nested functions
- Rename examples
Done
- Document print stats
- Document rudimentary algebra manipulations for normal/lognormal
- Think through whether to delete cdf => samples function => not for now
- Think through whether to:
- simplify and just abort on error
- complexify and use boxes for everything
- leave as is
- Offer both options
- Add more functions to do algebra and get the 90% c.i. of normals, lognormals, betas, etc.
- Think through which of these make sense.
- Systematize references
- Think through seed initialization
- Document parallelism
- Document confidence intervals
- Add example for only one sample
- Add example for many samples
- Use gcc extension to define functions nested inside main.
- Chain various
sample_mixture
functions - Add beta distribution
- Use OpenMP for acceleration
- Add function to get sample when given a cdf
- Don't have a single header file.
- Structure project a bit better
- Simplify
PROCESS_ERROR
macro - Add README
- Schema: a function which takes a sample and manipulates it,
- and at the end, an array of samples.
- Explain boxes
- Explain nested functions
- Explain exit on error
- Explain individual examples
- Rename functions to something more self-explanatory, e.g,.
sample_unit_normal
. - Add summarization functions: mean, std
- Add sampling from a gamma distribution
- Explain correlated samples
- Test summary statistics for each of the distributions.
- For uniform
- For normal
- For lognormal
- For lognormal (to syntax)
- For beta distribution
- Clarify gamma/standard gamma
- Add efficient sampling from a beta distribution
- Pontificate about lognormal tests
- Give warning about sampling-based methods.
- Have some more complicated & realistic example
- Add summarization functions: 90% ci (or all c.i.?)
- Link to the examples in the examples section.
- Add a few functions for doing simple algebra on normals, and lognormals
- Add prototypes
- Use named structs
- Add to header file
- Provide example algebra
- Add conversion between 90% ci and parameters.
- Use that conversion in conjunction with small algebra.
- Consider ergonomics of using ci instead of c_i
- use named struct instead
- demonstrate and document feeding a struct directly to a function; my_function((struct c_i){.low = 1, .high = 2});
- Move to own file? Or signpost in file? => signposted in file.
- Write twitter thread: now here; retweets appreciated.
- Write better confidence interval code that:
- Gets number of samples as an input
- Gets either a sampler function or a list of samples
- is O(n), not O(nlog(n))
- Parallelizes stuff
Discarded
Disambiguate sample_laplace--successes vs failures || successes vs total trials as two distinct and differently named functionsSupport all distribution functions in https://www.squiggle-language.com/docs/Api/DistAdd a custom preprocessor to allow simple nested functions that don't rely on local scope?Add tests in Stan?Test results for lognormal manipulationsConsider desirability of defining shortcuts for algebra functions. Adds a level of magic, though.Think about whether to write a simple version of this for uxn, a minimalist portable programming stack which, sadly, doesn't have doubles (64 bit floats)