{"id":18000816,"url":"https://github.com/josecelano/c-mandelbrot-arbitrary-precision","last_synced_at":"2025-03-26T07:32:16.517Z","repository":{"id":66731427,"uuid":"261519774","full_name":"josecelano/c-mandelbrot-arbitrary-precision","owner":"josecelano","description":"Proof of concept project about adding arbitrary precision math to Fractal generation software GNofract4D.","archived":false,"fork":false,"pushed_at":"2020-08-03T09:45:17.000Z","size":4519,"stargazers_count":6,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T03:56:22.663Z","etag":null,"topics":["arbitrary-precision","c","c-language","mandelbrot","mandelbrot-fractal"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josecelano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-05T16:05:58.000Z","updated_at":"2023-06-25T17:02:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"c1a2cede-c466-4dc2-af1b-4ba6a0ab1095","html_url":"https://github.com/josecelano/c-mandelbrot-arbitrary-precision","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fc-mandelbrot-arbitrary-precision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fc-mandelbrot-arbitrary-precision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fc-mandelbrot-arbitrary-precision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecelano%2Fc-mandelbrot-arbitrary-precision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josecelano","download_url":"https://codeload.github.com/josecelano/c-mandelbrot-arbitrary-precision/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245611913,"owners_count":20643926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arbitrary-precision","c","c-language","mandelbrot","mandelbrot-fractal"],"created_at":"2024-10-29T23:14:14.222Z","updated_at":"2025-03-26T07:32:16.505Z","avatar_url":"https://github.com/josecelano.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/josecelano/c-mandelbrot-arbitrary-precision.svg?branch=master)](https://travis-ci.org/josecelano/c-mandelbrot-arbitrary-precision)\n\n# Mandelbrot in C language with arbitrary precision\n\nThis is a proof of concept project. The main goal is do some research in order to allow zooming further than limits of double-precision in the Fractal generation software [Gnofract 4D](https://github.com/fract4d/gnofract4d). More details about the feature on:\n\n* [Official issue for the enhancement](https://github.com/fract4d/gnofract4d/issues/77)\n* [Open discussion to define a roadmap for the feature](https://github.com/HyveInnovate/gnofract4d/issues/7)\n\nSpecific goals for this proof of concept are:\n\n* Implement and generate documentation for some techniques used by the software like period checking.\n* Performance analysis.\n* Try different approaches when arbitrary precision is not needed. How to support both at the same time.\n* Test some different C arbitrary precision libraries.\n\n## Installation\n\nInstall dependencies:\n```\n./bin/install_dependencies\n```\n\nInstall app from source dir (after installing dependencies):\n```\n./bin/install\n```\n\n\u003eIMPORTANT!: installation is only tested for this Ubuntu version:\n\n```\nDistributor ID:\tUbuntu\nDescription:\tUbuntu 18.04.4 LTS\nRelease:\t18.04\nCodename:\tbionic\n```\n\n## Run\n\nHelp:\n```\n./mandelbrot --help\n```\nYou will see the list of options and arguments. And, for example, if you want to generate the full Mandelbrot Set in PPM format with color map \"black on white\":\n```\n./mandelbrot -prfy -- -2.0 -2.0 2.0 2.0 256 256 0 0\n```\nIt generates a file in `output` folder with this name: `mandelbrot-black-on-white-256x256.ppm`\n\nGenerate samples:\n```\n./bin/samples/generate-all-samples.sh\n```\nThis command generates one sample file in `output` folder for each color and ascii map available. \n\nSee more command samples in [here](bin/samples/generate-samples.sh).\n\n## Development\n\nRequirements:\n* Docker version 18.09.7\n\nAll commands use docker under the hood.\n\nSetup:\n```\n./bin/dev-setup\n```\n\nExecute tests:\n```\n./bin/test\n```\n\nCompile and run:\n```\n./bin/compile \u0026\u0026 ./bin/dev-run\n```\n\n## Documentation\n\n- [Mandelbrot Set](doc/mandelbrot_set.md)\n- [Optimisation](doc/optimisation.md)\n  * [Main cardioid detection](doc/main-cardioid-detection.md)\n  * [Period detection](doc/period2-detection.md)\n  * [Periodicity checking](doc/periodicity-checking.md)  \n- [Performance](doc/performace.md)\n- [Links](doc/links.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecelano%2Fc-mandelbrot-arbitrary-precision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosecelano%2Fc-mandelbrot-arbitrary-precision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecelano%2Fc-mandelbrot-arbitrary-precision/lists"}