{"id":47761811,"url":"https://github.com/schmonz/c-mandelbrot","last_synced_at":"2026-04-03T05:40:10.270Z","repository":{"id":143508571,"uuid":"62663936","full_name":"schmonz/c-mandelbrot","owner":"schmonz","description":"Draw Mandelbrot set in C, for fun","archived":false,"fork":false,"pushed_at":"2025-08-11T15:36:34.000Z","size":138,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-11T17:28:26.142Z","etag":null,"topics":["c","cairo","gd","imlib2","libcairo","libgd","mandelbrot","mandelbrot-fractal","mandelbrot-renderer","mandelbrot-set"],"latest_commit_sha":null,"homepage":"https://schmonz.com/2016/07/08/how-to-learn-c-part-1/","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/schmonz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"schmonz","ko_fi":"schmonz","liberapay":"schmonz","patreon":"schmonz","custom":["https://paypal.me/schmonz","https://flattr.com/@schmonz"]}},"created_at":"2016-07-05T19:31:43.000Z","updated_at":"2025-08-11T15:36:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"79ad9443-5691-48ee-906f-a95bd46367e1","html_url":"https://github.com/schmonz/c-mandelbrot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/schmonz/c-mandelbrot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmonz%2Fc-mandelbrot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmonz%2Fc-mandelbrot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmonz%2Fc-mandelbrot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmonz%2Fc-mandelbrot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schmonz","download_url":"https://codeload.github.com/schmonz/c-mandelbrot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmonz%2Fc-mandelbrot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31337043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T04:42:29.251Z","status":"ssl_error","status_checked_at":"2026-04-03T04:42:12.667Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["c","cairo","gd","imlib2","libcairo","libgd","mandelbrot","mandelbrot-fractal","mandelbrot-renderer","mandelbrot-set"],"created_at":"2026-04-03T05:40:09.454Z","updated_at":"2026-04-03T05:40:10.257Z","avatar_url":"https://github.com/schmonz.png","language":"C","funding_links":["https://github.com/sponsors/schmonz","https://ko-fi.com/schmonz","https://liberapay.com/schmonz","https://patreon.com/schmonz","https://paypal.me/schmonz","https://flattr.com/@schmonz"],"categories":[],"sub_categories":[],"readme":"# c-mandelbrot\n\n[![Build status](https://github.com/schmonz/c-mandelbrot/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/schmonz/c-mandelbrot/actions/workflows/c-cpp.yml)\n\nLately I've been\n[learning C](http://www.schmonz.com/2016/06/18/training-tdd-for-embedded-c/).\nRecently I shared the story of\n[how I got hooked on programming](http://www.schmonz.com/2007/06/29/when-programming-chose-me/)\non\n[Developer on Fire 139](http://www.schmonz.com/talk/20160616-developer-on-fire/).\nIn so doing, I seem to have revived my own interest in the\n[Mandelbrot set](https://en.wikipedia.org/wiki/Mandelbrot_set).\nNow I'm drawing it in C:\n\n![Latest Image](https://github.com/schmonz/c-mandelbrot/raw/main/pngelbrot.png)\n\n## TODO\n\n7. Extract math backends: native C real math, native C complex math, GNU MPC.\n7. Add performance tests for math and graphics.\n7. Add math backend: [GNU Scientific Library](https://www.gnu.org/software/gsl/gsl.html).\n7. Add a graphics backend that draws to a window on screen.\n7. Profile: where are we spending our time?\n7. Choose colormap size at runtime.\n7. Compute escape times in parallel threads.\n7. Improve safety and style of `graph_t.image` declaration.\n7. Determine whether arbitrary-precision complex math can be made faster.\n7. Determine when arbitrary-precision complex math is worth doing.\n7. Use GNU Automake, Autoconf, Libtool.\n7. If iterating over every pixel is slow, try:\n    - parallelizing computation in multiple threads (with OpenMP or similar)\n    - offloading to a GPU (with OpenCL or similar)\n    - tracing the boundary\n7. Auto-scale number of iterations with zoom level.\n7. Fix Valgrind errors.\n7. On OS X, try\n   [Guard Malloc](https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/MallocDebug.html).\n7. Try using\n   [C++ ApprovalTests](https://github.com/approvals/ApprovalTests.cpp)\n   to check the generated image.\n7. Try `astyle`.\n7. Try `cppcheck`.\n7. In a Mac GUI, display the initial image (then maybe add features).\n7. In an iPhone app, pinch to zoom (then maybe port to iPad).\n7. Get ideas from [XaoS](http://matek.hu/xaos) or [Fractint](http://fractint.org).\n7. Get optimization ideas from [mandelbrot-js](https://github.com/cslarsen/mandelbrot-js).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschmonz%2Fc-mandelbrot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschmonz%2Fc-mandelbrot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschmonz%2Fc-mandelbrot/lists"}