{"id":19795613,"url":"https://github.com/dkogan/libminimath","last_synced_at":"2025-05-01T03:30:29.886Z","repository":{"id":3664913,"uuid":"4733703","full_name":"dkogan/libminimath","owner":"dkogan","description":"Basic linear algebra for small matrices in C","archived":false,"fork":false,"pushed_at":"2024-11-20T00:30:06.000Z","size":108,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T08:08:04.383Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkogan.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-21T01:53:12.000Z","updated_at":"2024-11-20T00:30:05.000Z","dependencies_parsed_at":"2022-08-19T05:21:12.078Z","dependency_job_id":null,"html_url":"https://github.com/dkogan/libminimath","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Flibminimath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Flibminimath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Flibminimath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkogan%2Flibminimath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkogan","download_url":"https://codeload.github.com/dkogan/libminimath/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251817809,"owners_count":21648811,"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":[],"created_at":"2024-11-12T07:16:52.309Z","updated_at":"2025-05-01T03:30:29.548Z","avatar_url":"https://github.com/dkogan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a very simple C library to implement basic linear algebra routines for\nsmall matrices. Libraries such as BLAS are highly optimized for large matrices,\nbut their overhead often makes them suboptimal for very small matrices. By\ncontrast, this library has very simple, predefined functions for the various\nroutines it supports. These functions are NOT at all optimized at the source\nlevel, but they are simple, and the C compiler can generally do a very good job\noptimizing these. All the routines are in a header, so the compiler is free to\naggressively inline the code, as it sees fit. Supported are various ways to\ncompute norms of vectors, multiply matrices and solve linear systems.\n\nThe suffix of every function determines where its output goes. The ..._vout\nfunctions store their output in a new vector, generally given as the last\nargument. The ..._vaccum functions are the same except the output is added to\nthe data already in that vector instead of overwriting. With neither of these\nsuffixes, the functions store their output into the vector pointed to by the\nfirst argument. Many functions have ...._scaled flavors that can apply a scale\nfactor to the given operation. The scale factor is in the last argument.\n\nMatrices are stored row-first. Dimensions are given col-first. Vectors are\ntreated as row vectors. So for instance, a '3x2' matrix M stored in double[]\n{1.0, 2.0, 3.0, 4.0, 5.0, 6.0} implies\n\n    [ 1.0 2.0 ]\nM = [ 3.0 4.0 ]\n    [ 5.0 6.0 ]\n\na 3-vector v = [ 11.0 12.0 13.0 ] can be multiplied by M to compute v*M using the\n\nmul_vec3_gen32_... family of functions.\n\nExample:\n\n#include \u003cminimath.h\u003e\n#include \u003cstdio.h\u003e\nint main(void)\n{\n  double M[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};\n  double v[] = {11.0, 12.0, 13.0};\n\n  mul_vec3_gen32(v, M);\n  printf(\"%f %f\\n\", v[0], v[1]);\n  return 0;\n}\n\n\n\nC99-compliant compiler required.\n\nTHIS LIBRARY IS UNDER DEVELOPMENT AND THE APIs MAY CHANGE AT ANY TIME\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkogan%2Flibminimath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkogan%2Flibminimath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkogan%2Flibminimath/lists"}