{"id":20578351,"url":"https://github.com/g1eng/matrixa","last_synced_at":"2025-05-09T21:34:15.681Z","repository":{"id":45431685,"uuid":"388331192","full_name":"g1eng/matrixa","owner":"g1eng","description":"List manipulation library with two-dimensional, dynamic-sized payload.","archived":true,"fork":false,"pushed_at":"2021-12-14T11:50:20.000Z","size":96,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-06T11:43:20.275Z","etag":null,"topics":["linear-algebra","numerical","rust","string-manipulation","string-matching"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/g1eng.png","metadata":{"files":{"readme":"README.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}},"created_at":"2021-07-22T04:55:13.000Z","updated_at":"2024-06-10T14:29:11.000Z","dependencies_parsed_at":"2022-09-22T08:14:19.765Z","dependency_job_id":null,"html_url":"https://github.com/g1eng/matrixa","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1eng%2Fmatrixa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1eng%2Fmatrixa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1eng%2Fmatrixa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g1eng%2Fmatrixa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/g1eng","download_url":"https://codeload.github.com/g1eng/matrixa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253328767,"owners_count":21891525,"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":["linear-algebra","numerical","rust","string-manipulation","string-matching"],"created_at":"2024-11-16T06:12:41.994Z","updated_at":"2025-05-09T21:34:15.371Z","avatar_url":"https://github.com/g1eng.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\n[![codecov](https://codecov.io/gh/g1eng/matrixa/branch/master/graph/badge.svg?token=PSSEN7S1FH)](https://codecov.io/gh/g1eng/matrixa)\n\nmatrixa.rs is an experimental library for linear algebra and list manipulation on Rust.\n\nIt supports mathematical and string manipulation for data, within the type of `Matrix\u003cT\u003e` which holds the payload in vector-in-vector with dynamic length of row and column.\nYou can declare and manipulate two-dimensional matrices as an object like this:\n\n```rust\nuse matrixa::core::Matrix;\nuse matrixa::mat;\n\n// i32\nlet mut im = Matrix::\u003ci32\u003e::new();\nim.push(vec![1,2,3,4,5]).unwrap().push(vec![5,6,7,8,9]).unwrap();\nim.add(1).print();\nim.mul(3).print();\n\n// f32\nlet fm1 = mat![\n  f32:\n  [1.0,2.0,3.0],\n  [2.0,3.0,4.0]\n];\nlet fm2 = mat![\n  f32:\n  [1.1,2.2,3.3],\n  [2.2,3.3,4.4]\n];\nlet fm = fm1 + fm2;\nfm.print()\n```\n\n# Concepts\n\nThis is a dog food that probably tastes bad for you.\n\nThe project aims to be:\n\n* easy-to-use and easy-to-understand its usage and behavior\n* well-documented and maintainable for us, rustacenes.\n* human-friendly, with syntax sugars like +, - operators or `mat![T]`.\n\n# Features\n\n* You can create Matrix\u003cT\u003e instance for matrix declaration and its manipulation.\n* `Matrix::\u003cT\u003e::new()` or easy-to-use `!mat[T]` macro for the constructor.\n* A matrix instance can be typed with integer such as i32, floating point such as f32, bool, reference to sized string literal (\u0026str) or String.\n* Builtin integrity checker and push or merge mechanism for panic-less append of rows or columns\n* It implements Clone. You can assign a matrix to another using `=` operator or generate clone instance with `clone()`.\n* It implements Iterator. You can iterate data with a representation, such as `for d in matrix` \n* Almost all manipulation below results a new instance which can be mutable to the next operation.\n\n\n## Core functionalities\n\n### Core manipulator or formatters:\n\n* new\n* clone\n* row_replace\n* col_replace\n* transpose\n* fill_zero (for number matrices)\n* resize\n\n### Matchers\n  - equal `=`\n  - not equal `!=`\n  \n## Mathematical operations\n\n### Numerical operations\n\n| category | operator | scalar | matrix | \n| --- | --- | --- | --- | \n| addition | + | O* | O |\n| subtraction | - | O* | O |\n| product | * | O* | O |\n| hadamard product |  | | O* |\n| division | / | O* | O |\n| rem | % | O* | O |\n\n* O: supported\n* O*: supported via method\n\n### Supported bool operations\n\n| category | operator | description |\n| --- | --- | --- |\n| bit and | \u0026 | logical product of two matrices |\n| bit or | \\| | logical sum of two matrices |\n| bit xor | ^ | exclusive disjunction |\n| not | ! | negation |\n\n### Matrix calculation\n  - inverse matrix\n  - identity matrix\n  - adjugate matrix\n  - determinant\n  - regular matrix detection\n  - trace\n\n## String manipulation\n\nWIP","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg1eng%2Fmatrixa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fg1eng%2Fmatrixa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg1eng%2Fmatrixa/lists"}