Precision tests#2
Conversation
… command line
("--flint" or "--decimal"), except for mpmath. Because of instantiation order,
the way to run mpmath is to comment and un-comment the MandlContext instantiation
at line ~693, and not specify --flint or --decimal.
Didn't want to overly engineer this while prototyping, so just stacking implementations in seemed simple.
PROBLEM: Currently command-line parameters for window width, height, and center, aren't parsed into
their proper types, so you can only set them properly by editing the code in set_default_params().
Added an attempt at rudimentary caching of calculations before coloring applied.
3 new options with that are "--cache-path=subdir_name", "--build-cache", and "--invalidate_cache"
I didn't add any sanity or safety checking for the cache parameters, which is nice and dangerous,
because it does actually delete cache files too, depending on parameters.
…st arbitrary precision exploration, leaving just flint and native.
|
Introduces a DiveTimeline as the basis for dive calculations. This version keeps the existing next_epoch()/calculate_epoch_data() mechanism, but the last bits that use it will probably be converted to the timeline-based frame render using render_frame_number() and an instantiated timeline. This should run fine even if flint isn't installed. Took out "mpmath" calcluations because the author warned us to use his ARB (and/or flint-wrapped) implementation instead, which is just better and faster. Took out "Decimal" calculations, partly because there's no pre-built complex number representation. I'm. Uh.... Sorry about mixing camel case and underscores as a convention. |
…it DiveMesh (and subclasses) into its own file too.
|
Split out the MathSupport classes, and separately the DiveMesh classes, into their own files. |
…ving epoch calculations, replacing them with timeline interpolations
|
There's now 2 results cache paths - a shared one for uniform meshes (stored by metadata hash), and a project-only one for non-uniform meshes (stored by frame number). Cache is currently BROKEN for flint though. I've tried to pull the last of the 'epoch' based calculations out, switching to 'timeline' based descriptions. Whenever we calculate or cache results now, all 4 of raw_values, raw_histogram, smooth_values, and smooth_histogram are calculated and stored as a single results entry. Command line changed so 'julia-walk' uses the 'center' param, not its own julia-center. |
…for flint though.
…math implementation, tried to fix some string-based complex parse and load issues.
…ng core calculations into MathSupport classes
Looking at frame generationMain branch process:
Branch version:
So, to merge these approaches:
Looking at julia/mandelbrot implementationMathSupport is a cross-cutting issue for the algorithm hierarchy. So, the algo is the structural organization, intermediates chaperoning, and hooks organization, while the MathSupport is the crunching. Looking at epochs/timelinesAn epoch is an evolution frame-to-frame across a trajectory. A timeline is an endpoint definition of an evolution across a trajectory. Overall, this means we don't have 'animation' tracked through a context, but instead just frame numbers which can be arbitrarily calculated across the timeline. Looking at performance and arbitrary precisionVectorizing a numpy function (i.e. invoking functions across an entire matrix) greatly speeds up overall runtime. Writing our own entire-image-at-once calculation core in C (using an arbitrary precision library) might eventually move the needle more. I think this means the primary algorithm invocation shouldn't be pixel based, but instead whole-mesh based. We were warned away from using python mpmath by its creator, in favor of flint. |
…locus to the demo too.
…a gif or video from an image sequence. Tinkered with how burn-in works in several places. Added first attempt at a test or two.
…ssion paragraphs to README
…command tinkering
…efault. Other tinkering with parameters that doesn't really need to be checked in, but here we are.
…brot, which I think is starting to let us peer into accuracy behaviors with very small numbers
…m main branch. Debugged the not-in-this-source-tree-yet custom flint mandelbrot implementations a bit.
…ixed one-off errors across mandelbrot implementations. Added a timing comparison script to help study different solution sets.
… of DiveMesh, and on parameterizations into fractal.py.
…testing. Millisecond-based timeline. Timeline files persisted as JSON. Support scripts for markers and timelines and frame batches.
…well as a description of the processe used for getting to an output animation.
…ction. Lots of stuff in shambles and unorganized still, but it seems to be working
…to precision_tests
…ough to save progress
…works for both solo and smooth algos.
…all params to interpolate into Decimal, for the base class MathSupport.
…o for Julia distance estimate too.
Lots of cruft and broken bits left around.
Still also pretty sure the gradation when using flint is some kind of bug, but I haven't found it yet, if it is.