{"action":"opened","number":58,"pull_request":{"url":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58","id":211809782,"node_id":"MDExOlB1bGxSZXF1ZXN0MjExODA5Nzgy","html_url":"https://github.com/Daniel-Diaz/matrix/pull/58","diff_url":"https://github.com/Daniel-Diaz/matrix/pull/58.diff","patch_url":"https://github.com/Daniel-Diaz/matrix/pull/58.patch","issue_url":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/58","number":58,"state":"open","locked":false,"title":"Complete rework of rref","user":{"login":"wchresta","id":34962284,"node_id":"MDQ6VXNlcjM0OTYyMjg0","avatar_url":"https://avatars3.githubusercontent.com/u/34962284?v=4","gravatar_id":"","url":"https://api.github.com/users/wchresta","html_url":"https://github.com/wchresta","followers_url":"https://api.github.com/users/wchresta/followers","following_url":"https://api.github.com/users/wchresta/following{/other_user}","gists_url":"https://api.github.com/users/wchresta/gists{/gist_id}","starred_url":"https://api.github.com/users/wchresta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wchresta/subscriptions","organizations_url":"https://api.github.com/users/wchresta/orgs","repos_url":"https://api.github.com/users/wchresta/repos","events_url":"https://api.github.com/users/wchresta/events{/privacy}","received_events_url":"https://api.github.com/users/wchresta/received_events","type":"User","site_admin":false},"body":"Using Matrix is became apparent that the rref function needs some rework. I therefore looked around and found a rosetta-code implementation of the rref-algorithm and replaced the current implementation with it:\r\n\r\n* At least two bugs are fixed (#52, #42)\r\n* Drastic performance improvement (see below)\r\n* All tests succeed\r\n\r\nThe commit b0facc6 has both implementations live (in case you want to play around with it) and I compared the two (the existing one and the new, rosetta one):\r\n\r\n```\r\nbenchmarking rref10/rref\r\ntime                 51.85 μs   (51.80 μs .. 51.92 μs)\r\n                     1.000 R²   (1.000 R² .. 1.000 R²)\r\nmean                 51.89 μs   (51.82 μs .. 52.04 μs)\r\nstd dev              331.1 ns   (164.6 ns .. 599.3 ns)\r\n             \r\nbenchmarking rref10/rosetta rref'\r\ntime                 43.81 μs   (43.74 μs .. 43.89 μs)\r\n                     1.000 R²   (1.000 R² .. 1.000 R²)\r\nmean                 43.88 μs   (43.79 μs .. 44.02 μs)\r\nstd dev              363.9 ns   (244.8 ns .. 494.5 ns)\r\n             \r\nbenchmarking rref25/rref\r\ntime                 13.70 ms   (13.28 ms .. 14.23 ms)\r\n                     0.994 R²   (0.989 R² .. 0.998 R²)\r\nmean                 13.18 ms   (13.00 ms .. 13.43 ms)\r\nstd dev              530.0 μs   (377.7 μs .. 705.2 μs)\r\nvariance introduced by outliers: 15% (moderately inflated)\r\n             \r\nbenchmarking rref25/rosetta rref'\r\ntime                 1.129 ms   (1.119 ms .. 1.141 ms)\r\n                     0.998 R²   (0.996 R² .. 0.999 R²)\r\nmean                 1.182 ms   (1.163 ms .. 1.216 ms)\r\nstd dev              83.29 μs   (59.27 μs .. 120.2 μs)\r\nvariance introduced by outliers: 56% (severely inflated)\r\n             \r\nbenchmarking rref100/rref\r\ntime                 33.01 s    (31.58 s .. NaN s)\r\n                     0.999 R²   (0.999 R² .. 1.000 R²)\r\nmean                 32.67 s    (32.30 s .. 32.99 s)\r\nstd dev              391.1 ms   (321.8 ms .. 436.5 ms)\r\nvariance introduced by outliers: 19% (moderately inflated)\r\n             \r\nbenchmarking rref100/rosetta rref'\r\ntime                 173.8 ms   (169.4 ms .. 179.2 ms)\r\n                     0.999 R²   (0.995 R² .. 1.000 R²)\r\nmean                 177.2 ms   (173.4 ms .. 183.4 ms)\r\nstd dev              6.743 ms   (3.350 ms .. 10.23 ms)\r\nvariance introduced by outliers: 12% (moderately inflated)\r\n```\r\n","created_at":"2018-08-29T16:12:36Z","updated_at":"2018-08-29T16:12:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58/commits","review_comments_url":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58/comments","review_comment_url":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/58/comments","statuses_url":"https://api.github.com/repos/Daniel-Diaz/matrix/statuses/f52f342523c17c60f39bffc4b88569f82da109f7","head":{"label":"wchresta:rosetta-rref","ref":"rosetta-rref","sha":"f52f342523c17c60f39bffc4b88569f82da109f7","user":{"login":"wchresta","id":34962284,"node_id":"MDQ6VXNlcjM0OTYyMjg0","avatar_url":"https://avatars3.githubusercontent.com/u/34962284?v=4","gravatar_id":"","url":"https://api.github.com/users/wchresta","html_url":"https://github.com/wchresta","followers_url":"https://api.github.com/users/wchresta/followers","following_url":"https://api.github.com/users/wchresta/following{/other_user}","gists_url":"https://api.github.com/users/wchresta/gists{/gist_id}","starred_url":"https://api.github.com/users/wchresta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wchresta/subscriptions","organizations_url":"https://api.github.com/users/wchresta/orgs","repos_url":"https://api.github.com/users/wchresta/repos","events_url":"https://api.github.com/users/wchresta/events{/privacy}","received_events_url":"https://api.github.com/users/wchresta/received_events","type":"User","site_admin":false},"repo":{"id":143926954,"node_id":"MDEwOlJlcG9zaXRvcnkxNDM5MjY5NTQ=","name":"matrix","full_name":"wchresta/matrix","owner":{"login":"wchresta","id":34962284,"node_id":"MDQ6VXNlcjM0OTYyMjg0","avatar_url":"https://avatars3.githubusercontent.com/u/34962284?v=4","gravatar_id":"","url":"https://api.github.com/users/wchresta","html_url":"https://github.com/wchresta","followers_url":"https://api.github.com/users/wchresta/followers","following_url":"https://api.github.com/users/wchresta/following{/other_user}","gists_url":"https://api.github.com/users/wchresta/gists{/gist_id}","starred_url":"https://api.github.com/users/wchresta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wchresta/subscriptions","organizations_url":"https://api.github.com/users/wchresta/orgs","repos_url":"https://api.github.com/users/wchresta/repos","events_url":"https://api.github.com/users/wchresta/events{/privacy}","received_events_url":"https://api.github.com/users/wchresta/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wchresta/matrix","description":"A Haskell native implementation of matrices and their operations.","fork":true,"url":"https://api.github.com/repos/wchresta/matrix","forks_url":"https://api.github.com/repos/wchresta/matrix/forks","keys_url":"https://api.github.com/repos/wchresta/matrix/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wchresta/matrix/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wchresta/matrix/teams","hooks_url":"https://api.github.com/repos/wchresta/matrix/hooks","issue_events_url":"https://api.github.com/repos/wchresta/matrix/issues/events{/number}","events_url":"https://api.github.com/repos/wchresta/matrix/events","assignees_url":"https://api.github.com/repos/wchresta/matrix/assignees{/user}","branches_url":"https://api.github.com/repos/wchresta/matrix/branches{/branch}","tags_url":"https://api.github.com/repos/wchresta/matrix/tags","blobs_url":"https://api.github.com/repos/wchresta/matrix/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wchresta/matrix/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wchresta/matrix/git/refs{/sha}","trees_url":"https://api.github.com/repos/wchresta/matrix/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wchresta/matrix/statuses/{sha}","languages_url":"https://api.github.com/repos/wchresta/matrix/languages","stargazers_url":"https://api.github.com/repos/wchresta/matrix/stargazers","contributors_url":"https://api.github.com/repos/wchresta/matrix/contributors","subscribers_url":"https://api.github.com/repos/wchresta/matrix/subscribers","subscription_url":"https://api.github.com/repos/wchresta/matrix/subscription","commits_url":"https://api.github.com/repos/wchresta/matrix/commits{/sha}","git_commits_url":"https://api.github.com/repos/wchresta/matrix/git/commits{/sha}","comments_url":"https://api.github.com/repos/wchresta/matrix/comments{/number}","issue_comment_url":"https://api.github.com/repos/wchresta/matrix/issues/comments{/number}","contents_url":"https://api.github.com/repos/wchresta/matrix/contents/{+path}","compare_url":"https://api.github.com/repos/wchresta/matrix/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wchresta/matrix/merges","archive_url":"https://api.github.com/repos/wchresta/matrix/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wchresta/matrix/downloads","issues_url":"https://api.github.com/repos/wchresta/matrix/issues{/number}","pulls_url":"https://api.github.com/repos/wchresta/matrix/pulls{/number}","milestones_url":"https://api.github.com/repos/wchresta/matrix/milestones{/number}","notifications_url":"https://api.github.com/repos/wchresta/matrix/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wchresta/matrix/labels{/name}","releases_url":"https://api.github.com/repos/wchresta/matrix/releases{/id}","deployments_url":"https://api.github.com/repos/wchresta/matrix/deployments","created_at":"2018-08-07T21:07:45Z","updated_at":"2018-08-07T21:07:47Z","pushed_at":"2018-08-29T16:08:13Z","git_url":"git://github.com/wchresta/matrix.git","ssh_url":"git@github.com:wchresta/matrix.git","clone_url":"https://github.com/wchresta/matrix.git","svn_url":"https://github.com/wchresta/matrix","homepage":null,"size":253,"stargazers_count":0,"watchers_count":0,"language":"Haskell","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Daniel-Diaz:master","ref":"master","sha":"616272e99aed0469348618c9c6d7b649c8cfa1eb","user":{"login":"Daniel-Diaz","id":1336440,"node_id":"MDQ6VXNlcjEzMzY0NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/1336440?v=4","gravatar_id":"","url":"https://api.github.com/users/Daniel-Diaz","html_url":"https://github.com/Daniel-Diaz","followers_url":"https://api.github.com/users/Daniel-Diaz/followers","following_url":"https://api.github.com/users/Daniel-Diaz/following{/other_user}","gists_url":"https://api.github.com/users/Daniel-Diaz/gists{/gist_id}","starred_url":"https://api.github.com/users/Daniel-Diaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Daniel-Diaz/subscriptions","organizations_url":"https://api.github.com/users/Daniel-Diaz/orgs","repos_url":"https://api.github.com/users/Daniel-Diaz/repos","events_url":"https://api.github.com/users/Daniel-Diaz/events{/privacy}","received_events_url":"https://api.github.com/users/Daniel-Diaz/received_events","type":"User","site_admin":false},"repo":{"id":8860828,"node_id":"MDEwOlJlcG9zaXRvcnk4ODYwODI4","name":"matrix","full_name":"Daniel-Diaz/matrix","owner":{"login":"Daniel-Diaz","id":1336440,"node_id":"MDQ6VXNlcjEzMzY0NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/1336440?v=4","gravatar_id":"","url":"https://api.github.com/users/Daniel-Diaz","html_url":"https://github.com/Daniel-Diaz","followers_url":"https://api.github.com/users/Daniel-Diaz/followers","following_url":"https://api.github.com/users/Daniel-Diaz/following{/other_user}","gists_url":"https://api.github.com/users/Daniel-Diaz/gists{/gist_id}","starred_url":"https://api.github.com/users/Daniel-Diaz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Daniel-Diaz/subscriptions","organizations_url":"https://api.github.com/users/Daniel-Diaz/orgs","repos_url":"https://api.github.com/users/Daniel-Diaz/repos","events_url":"https://api.github.com/users/Daniel-Diaz/events{/privacy}","received_events_url":"https://api.github.com/users/Daniel-Diaz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Daniel-Diaz/matrix","description":"A Haskell native implementation of matrices and their operations.","fork":false,"url":"https://api.github.com/repos/Daniel-Diaz/matrix","forks_url":"https://api.github.com/repos/Daniel-Diaz/matrix/forks","keys_url":"https://api.github.com/repos/Daniel-Diaz/matrix/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Daniel-Diaz/matrix/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Daniel-Diaz/matrix/teams","hooks_url":"https://api.github.com/repos/Daniel-Diaz/matrix/hooks","issue_events_url":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/events{/number}","events_url":"https://api.github.com/repos/Daniel-Diaz/matrix/events","assignees_url":"https://api.github.com/repos/Daniel-Diaz/matrix/assignees{/user}","branches_url":"https://api.github.com/repos/Daniel-Diaz/matrix/branches{/branch}","tags_url":"https://api.github.com/repos/Daniel-Diaz/matrix/tags","blobs_url":"https://api.github.com/repos/Daniel-Diaz/matrix/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Daniel-Diaz/matrix/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Daniel-Diaz/matrix/git/refs{/sha}","trees_url":"https://api.github.com/repos/Daniel-Diaz/matrix/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Daniel-Diaz/matrix/statuses/{sha}","languages_url":"https://api.github.com/repos/Daniel-Diaz/matrix/languages","stargazers_url":"https://api.github.com/repos/Daniel-Diaz/matrix/stargazers","contributors_url":"https://api.github.com/repos/Daniel-Diaz/matrix/contributors","subscribers_url":"https://api.github.com/repos/Daniel-Diaz/matrix/subscribers","subscription_url":"https://api.github.com/repos/Daniel-Diaz/matrix/subscription","commits_url":"https://api.github.com/repos/Daniel-Diaz/matrix/commits{/sha}","git_commits_url":"https://api.github.com/repos/Daniel-Diaz/matrix/git/commits{/sha}","comments_url":"https://api.github.com/repos/Daniel-Diaz/matrix/comments{/number}","issue_comment_url":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/comments{/number}","contents_url":"https://api.github.com/repos/Daniel-Diaz/matrix/contents/{+path}","compare_url":"https://api.github.com/repos/Daniel-Diaz/matrix/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Daniel-Diaz/matrix/merges","archive_url":"https://api.github.com/repos/Daniel-Diaz/matrix/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Daniel-Diaz/matrix/downloads","issues_url":"https://api.github.com/repos/Daniel-Diaz/matrix/issues{/number}","pulls_url":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls{/number}","milestones_url":"https://api.github.com/repos/Daniel-Diaz/matrix/milestones{/number}","notifications_url":"https://api.github.com/repos/Daniel-Diaz/matrix/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Daniel-Diaz/matrix/labels{/name}","releases_url":"https://api.github.com/repos/Daniel-Diaz/matrix/releases{/id}","deployments_url":"https://api.github.com/repos/Daniel-Diaz/matrix/deployments","created_at":"2013-03-18T18:16:31Z","updated_at":"2018-08-27T20:02:07Z","pushed_at":"2018-03-20T12:12:31Z","git_url":"git://github.com/Daniel-Diaz/matrix.git","ssh_url":"git@github.com:Daniel-Diaz/matrix.git","clone_url":"https://github.com/Daniel-Diaz/matrix.git","svn_url":"https://github.com/Daniel-Diaz/matrix","homepage":null,"size":257,"stargazers_count":30,"watchers_count":30,"language":"Haskell","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":26,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":26,"open_issues":22,"watchers":30,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58"},"html":{"href":"https://github.com/Daniel-Diaz/matrix/pull/58"},"issue":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/58"},"comments":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/issues/58/comments"},"review_comments":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58/comments"},"review_comment":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/pulls/58/commits"},"statuses":{"href":"https://api.github.com/repos/Daniel-Diaz/matrix/statuses/f52f342523c17c60f39bffc4b88569f82da109f7"}},"author_association":"NONE","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":3,"additions":177,"deletions":116,"changed_files":5}}
{"actor":{"display_login":"wchresta"}}