{"id":15042384,"url":"https://github.com/antononcube/raku-math-distancefunctions-native","last_synced_at":"2026-02-03T22:06:13.752Z","repository":{"id":256455907,"uuid":"855301320","full_name":"antononcube/Raku-Math-DistanceFunctions-Native","owner":"antononcube","description":"Distance functions implemented using Apple's Accelerate library.","archived":false,"fork":false,"pushed_at":"2024-09-30T02:24:26.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T16:39:54.802Z","etag":null,"topics":["cosine-distance","distance-functions","edit-distance","euclidean-distance","nativecall","raku","rakulang"],"latest_commit_sha":null,"homepage":"https://raku.land/zef:antononcube/Math::DistanceFunctions::Native","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antononcube.png","metadata":{"files":{"readme":"README-work.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-10T16:40:06.000Z","updated_at":"2024-09-30T02:24:29.000Z","dependencies_parsed_at":"2025-03-13T19:15:19.540Z","dependency_job_id":null,"html_url":"https://github.com/antononcube/Raku-Math-DistanceFunctions-Native","commit_stats":null,"previous_names":["antononcube/raku-libaccelerate-distancefunctions","antononcube/raku-math-distancefunctions-native"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antononcube/Raku-Math-DistanceFunctions-Native","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antononcube%2FRaku-Math-DistanceFunctions-Native","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antononcube%2FRaku-Math-DistanceFunctions-Native/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antononcube%2FRaku-Math-DistanceFunctions-Native/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antononcube%2FRaku-Math-DistanceFunctions-Native/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antononcube","download_url":"https://codeload.github.com/antononcube/Raku-Math-DistanceFunctions-Native/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antononcube%2FRaku-Math-DistanceFunctions-Native/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264092764,"owners_count":23556378,"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":["cosine-distance","distance-functions","edit-distance","euclidean-distance","nativecall","raku","rakulang"],"created_at":"2024-09-24T20:47:12.717Z","updated_at":"2026-02-03T22:06:13.718Z","avatar_url":"https://github.com/antononcube.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Math::DistanceFunctions::Native\n\n[![Actions Status](https://github.com/antononcube/Raku-DistanceFunctions-Native/actions/workflows/linux.yml/badge.svg)](https://github.com/antononcube/Raku-DistanceFunctions-Native/actions)\n[![Actions Status](https://github.com/antononcube/Raku-DistanceFunctions-Native/actions/workflows/macos.yml/badge.svg)](https://github.com/antononcube/Raku-DistanceFunctions-Native/actions)\n\n[![License: Artistic-2.0](https://img.shields.io/badge/License-Artistic%202.0-0298c3.svg)](https://opensource.org/licenses/Artistic-2.0)\n\nRaku package with distance functions implemented in C.\nApple's Accelerate library is used if available.\n\nThe primary motivation for making this library is to have fast sorting and nearest neighbors computations \nover collections of LLM-embedding vectors.\n\n------\n\n## Usage examples\n\n\n### Regular vectors\n\nMake a large (largish) collection of large vectors and find Euclidean distances over them:\n\n```perl6\nuse Math::DistanceFunctions::Native;\n\nmy @vecs = (^1000).map({ (^1000).map({1.rand}).cache.Array }).Array;\nmy @searchVector = (^1000).map({1.rand});\n\nmy $start = now;\nmy @dists = @vecs.map({ euclidean-distance($_, @searchVector)});\nmy $tend = now;\nsay \"Total time of computing {@vecs.elems} distances: {round($tend - $start, 10 ** -6)} s\";\nsay \"Average time of a single distance computation: {($tend - $start) / @vecs.elems} s\";\n```\n\n### `CArray` vectors\n\nUse `CArray` vectors instead:\n\n```perl6\nuse NativeCall;\nmy @cvecs = @vecs.map({ CArray[num64].new($_) });\nmy $cSearchVector = CArray[num64].new(@searchVector);\n\n$start = now;\nmy @cdists = @cvecs.map({ euclidean-distance($_, $cSearchVector)});\n$tend = now;\nsay \"Total time of computing {@cvecs.elems} distances: {round($tend - $start, 10 ** -6)} s\";\nsay \"Average time of a single distance computation: {($tend - $start) / @cvecs.elems} s\";\n```\n\nI.e., we get ≈ 200 times speed-up using `CArray` vectors and the functions of this package. \n\n### Edit distance\n\nThe loading of this package automatically loads the (C-implemented) function `edit-distance` of\n[\"Math::DistanceFunctions::Edit\"](https://github.com/antononcube/Raku-Math-DistanceFunctions-Edit).\nHere is an example usage:\n\n```perl6\nedit-distance('racoon', 'raccoon')\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantononcube%2Fraku-math-distancefunctions-native","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantononcube%2Fraku-math-distancefunctions-native","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantononcube%2Fraku-math-distancefunctions-native/lists"}