{"action":"created","comment":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/63058524","id":63058524,"diff_hunk":"@@ -224,8 +224,142 @@ end\n /(A::Bidiagonal, B::Number) = Bidiagonal(A.dv/B, A.ev/B, A.isupper)\n ==(A::Bidiagonal, B::Bidiagonal) = (A.dv==B.dv) && (A.ev==B.ev) && (A.isupper==B.isupper)\n \n-SpecialMatrix = Union{Bidiagonal, SymTridiagonal, Tridiagonal, AbstractTriangular}\n-*(A::SpecialMatrix, B::SpecialMatrix)=full(A)*full(B)\n+\n+BiTriSym = Union{Bidiagonal, Tridiagonal, SymTridiagonal}\n+BiTri = Union{Bidiagonal, Tridiagonal}\n+A_mul_B!(C::AbstractMatrix, A::SymTridiagonal, B::BiTriSym) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractMatrix, A::BiTri, B::BiTriSym) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractMatrix, A::BiTriSym, B::BiTriSym) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractMatrix, A::AbstractTriangular, B::BiTriSym) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractMatrix, A::AbstractMatrix, B::BiTriSym) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractVector, A::BiTri, B::AbstractVector) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractMatrix, A::BiTri, B::AbstractVecOrMat) = A_mul_B_td!(C, A, B)\n+A_mul_B!(C::AbstractVecOrMat, A::BiTri, B::AbstractVecOrMat) = A_mul_B_td!(C, A, B)\n+\n+\n+function check_A_mul_B!_sizes(C, A, B)\n+    nA, mA = size(A)\n+    nB, mB = size(B)\n+    nC, mC = size(C)\n+    if !(nA == nC)\n+        throw(DimensionMismatch(\"Sizes size(A)=$(size(A)) and size(C) = $(size(C)) must match at first entry.\"))\n+    elseif !(mA == nB)\n+        throw(DimensionMismatch(\"Second entry of size(A)=$(size(A)) and first entry of size(B) = $(size(B)) must match.\"))\n+    elseif !(mB == mC)\n+        throw(DimensionMismatch(\"Sizes size(B)=$(size(B)) and size(C) = $(size(C)) must match at first second entry.\"))\n+    end\n+end\n+\n+function A_mul_B_td!(C::AbstractMatrix, A::BiTriSym, B::BiTriSym)\n+    check_A_mul_B!_sizes(C, A, B)\n+    n = size(A,1)\n+    n <= 3 && return A_mul_B!(C, full(A), full(B))\n+    fill!(C, zero(eltype(C)))\n+    Al = diag(A, -1)\n+    Ad = diag(A, 0)\n+    Au = diag(A, 1)\n+    Bl = diag(B, -1)\n+    Bd = diag(B, 0)\n+    Bu = diag(B, 1)\n+    @inbounds begin\n+        # first row of C\n+        C[1,1] = A[1,1]*B[1,1] + A[1, 2]*B[2, 1]\n+        C[1,2] = A[1,1]*B[1,2] + A[1,2]*B[2,2]\n+        C[1,3] = A[1,2]*B[2,3]\n+        # second row of C\n+        C[2,1] = A[2,1]*B[1,1] + A[2,2]*B[2,1]\n+        C[2,2] = A[2,1]*B[1,2] + A[2,2]*B[2,2] + A[2,3]*B[3,2]\n+        C[2,3] = A[2,2]*B[2,3] + A[2,3]*B[3,3]\n+        C[2,4] = A[2,3]*B[3,4]\n+        for j in 3:n-2\n+            Ajj₋1   = Al[j-1]\n+            Ajj     = Ad[j]\n+            Ajj₊1   = Au[j]\n+            Bj₋1j₋2 = Bl[j-2]\n+            Bj₋1j₋1 = Bd[j-1]\n+            Bj₋1j   = Bu[j-1]\n+            Bjj₋1   = Bl[j-1]\n+            Bjj     = Bd[j]\n+            Bjj₊1   = Bu[j]\n+            Bj₊1j   = Bl[j]\n+            Bj₊1j₊1 = Bd[j+1]\n+            Bj₊1j₊2 = Bu[j+1]\n+            C[j,j-2]  = Ajj₋1*Bj₋1j₋2\n+            C[j, j-1] = Ajj₋1*Bj₋1j₋1 + Ajj*Bjj₋1\n+            C[j, j  ] = Ajj₋1*Bj₋1j   + Ajj*Bjj       + Ajj₊1*Bj₊1j\n+            C[j, j+1] = Ajj  *Bjj₊1   + Ajj₊1*Bj₊1j₊1\n+            C[j, j+2] = Ajj₊1*Bj₊1j₊2\n+        end\n+        # row before last of C\n+        C[n-1,n-3] = A[n-1,n-2]*B[n-2,n-3]\n+        C[n-1,n-2] = A[n-1,n-1]*B[n-1,n-2] + A[n-1,n-2]*B[n-2,n-2]\n+        C[n-1,n-1] = A[n-1,n-2]*B[n-2,n-1] + A[n-1,n-1]*B[n-1,n-1] + A[n-1,n]*B[n,n-1]\n+        C[n-1,n  ] = A[n-1,n-1]*B[n-1,n  ] + A[n-1,  n]*B[n  ,n  ]\n+        # last row of C\n+        C[n,n-2] = A[n,n-1]*B[n-1,n-2]\n+        C[n,n-1] = A[n,n-1]*B[n-1,n-1] + A[n,n]*B[n,n-1]\n+        C[n,n  ] = A[n,n-1]*B[n-1,n  ] + A[n,n]*B[n,n  ]\n+    end #inbounds\n+    C\n+end\n+\n+function A_mul_B_td!(C::AbstractVecOrMat, A::BiTriSym, B::AbstractVecOrMat)\n+    nA = size(A,1)\n+    nB = size(B,2)\n+    if !(size(C,1) == size(B,1) == nA)\n+        throw(DimensionMismatch(\"A has first dimension $nA, B has $(size(B,1)), C has $(size(C,1)) but all must match\"))\n+    end\n+    if size(C,2) != nB\n+        throw(DimensionMismatch(\"A has second dimension $nA, B has $(size(B,2)), C has $(size(C,2)) but all must match\"))\n+    end\n+    nA <= 3 && return A_mul_B!(C, full(A), full(B))\n+    l = diag(A, -1)\n+    d = diag(A, 0)\n+    u = diag(A, 1)\n+    @inbounds begin\n+        for j = 1:nB\n+            b₀, b₊ = B[1, j], B[2, j]\n+            C[1, j] = d[1]*b₀ + u[1]*b₊\n+            for i = 2:nA - 1\n+                b₋, b₀, b₊ = b₀, b₊, B[i + 1, j]\n+                C[i, j] = l[i - 1]*b₋ + d[i]*b₀ + u[i]*b₊\n+            end\n+            C[nA, j] = l[nA - 1]*b₀ + d[nA]*b₊\n+        end\n+    end\n+    C\n+end\n+\n+function A_mul_B_td!(C::AbstractMatrix, A::AbstractMatrix, B::BiTriSym)\n+    check_A_mul_B!_sizes(C, A, B)\n+    n = size(A,1)\n+    n <= 3 && return A_mul_B!(C, full(A), full(B))\n+    m = size(B,2)\n+    Bl = diag(B, -1)\n+    Bd = diag(B, 0)\n+    Bu = diag(B, 1)\n+    @inbounds begin\n+        # first and last column of C\n+        B11 = Bd[1]\n+        B21 = Bl[1]\n+        Bmm = Bd[m]\n+        Bm₋1m = Bu[m-1]\n+        for i in 1:n\n+            C[i, 1] = A[i,1] * B11 + A[i, 2] * B21\n+            C[i, m] = A[i, m-1] * Bm₋1m + A[i, m] * Bmm\n+        end\n+        # middle columns of C\n+        for j = 2:m-1\n+            Bj₋1j = Bu[j-1]\n+            Bjj = Bd[j]\n+            Bj₊1j = Bl[j]\n+            for i = 1:n\n+                C[i, j] = A[i, j-1] * Bj₋1j + A[i, j]*Bjj + A[i, j+1] * Bj₊1j\n+            end\n+        end\n+    end#inbounds","path":"base/linalg/bidiag.jl","position":139,"original_position":139,"commit_id":"cfafd1a0b1e106f476360974d3ca113177790d6a","original_commit_id":"cfafd1a0b1e106f476360974d3ca113177790d6a","user":{"login":"tkelman","id":5934628,"avatar_url":"https://avatars.githubusercontent.com/u/5934628?v=3","gravatar_id":"","url":"https://api.github.com/users/tkelman","html_url":"https://github.com/tkelman","followers_url":"https://api.github.com/users/tkelman/followers","following_url":"https://api.github.com/users/tkelman/following{/other_user}","gists_url":"https://api.github.com/users/tkelman/gists{/gist_id}","starred_url":"https://api.github.com/users/tkelman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkelman/subscriptions","organizations_url":"https://api.github.com/users/tkelman/orgs","repos_url":"https://api.github.com/users/tkelman/repos","events_url":"https://api.github.com/users/tkelman/events{/privacy}","received_events_url":"https://api.github.com/users/tkelman/received_events","type":"User","site_admin":false},"body":"(nit) looks a little nicer with a space before and after the `#`","created_at":"2016-05-12T17:08:01Z","updated_at":"2016-05-12T17:08:01Z","html_url":"https://github.com/JuliaLang/julia/pull/15505#discussion_r63058524","pull_request_url":"https://api.github.com/repos/JuliaLang/julia/pulls/15505","_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments/63058524"},"html":{"href":"https://github.com/JuliaLang/julia/pull/15505#discussion_r63058524"},"pull_request":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/15505"}}},"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/15505","id":62813307,"html_url":"https://github.com/JuliaLang/julia/pull/15505","diff_url":"https://github.com/JuliaLang/julia/pull/15505.diff","patch_url":"https://github.com/JuliaLang/julia/pull/15505.patch","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/15505","number":15505,"state":"open","locked":false,"title":"faster A_mul_B! and * involving bidiagonal and tridiagonal matrices","user":{"login":"jw3126","id":7261506,"avatar_url":"https://avatars.githubusercontent.com/u/7261506?v=3","gravatar_id":"","url":"https://api.github.com/users/jw3126","html_url":"https://github.com/jw3126","followers_url":"https://api.github.com/users/jw3126/followers","following_url":"https://api.github.com/users/jw3126/following{/other_user}","gists_url":"https://api.github.com/users/jw3126/gists{/gist_id}","starred_url":"https://api.github.com/users/jw3126/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jw3126/subscriptions","organizations_url":"https://api.github.com/users/jw3126/orgs","repos_url":"https://api.github.com/users/jw3126/repos","events_url":"https://api.github.com/users/jw3126/events{/privacy}","received_events_url":"https://api.github.com/users/jw3126/received_events","type":"User","site_admin":false},"body":"Two `A_mul_B!(C, A, B)` methods where `B` or `A, B` are tridiagonal are implemented. This gives faster matrix multiplication methods for some bi and tridiagonal argument combinations, which would fall back to full matrix multiplication before. See #13358 and timings below.\r\n\r\n```\r\nbegin\r\n           import Base.LinAlg.A_mul_B!\r\n           k = 1000;\r\n           A = Tridiagonal(randn(k-1), randn(k), randn(k-1));\r\n           B = Tridiagonal(randn(k-1), randn(k), randn(k-1));\r\n           C = randn(k, k);\r\n\r\n           Ai = Bidiagonal(randn(k), randn(k-1), rand(Bool));\r\n           Bi = Bidiagonal(randn(k), randn(k-1), rand(Bool));\r\n           fullAi = full(Ai);\r\n           fullBi = full(Bi);\r\n           Atri = Tridiagonal(randn(k-1), randn(k), randn(k-1));\r\n           Btri = Tridiagonal(randn(k-1), randn(k), randn(k-1));\r\n           C = randn(k, k);\r\n       end\r\n```\r\n\r\n```\r\njulia> @time A_mul_B!(C, fullAi, fullBi);\r\n  0.035776 seconds (4 allocations: 160 bytes)\r\n\r\njulia> @time A_mul_B!(C, fullAi, Btri);\r\n  0.002102 seconds (4 allocations: 160 bytes)\r\n\r\njulia> @time A_mul_B!(C, Atri, fullBi);\r\n  0.004037 seconds (4 allocations: 160 bytes)\r\n\r\njulia> @time A_mul_B!(C, Atri, Btri);\r\n  0.000815 seconds (4 allocations: 160 bytes)\r\n```\r\n```\r\njulia> @time A_mul_B!(C, fullAi, Bi);\r\n  0.001518 seconds (11 allocations: 16.141 KB)\r\n\r\njulia> @time A_mul_B!(C, Ai, fullBi);\r\n  0.004141 seconds (11 allocations: 16.141 KB)\r\n\r\njulia> @time A_mul_B!(C, Ai, Bi);\r\n  0.001324 seconds (18 allocations: 32.125 KB)\r\n```\r\n```\r\njulia> @time fullAi * fullBi;\r\n  0.035390 seconds (9 allocations: 7.630 MB)\r\n\r\njulia> @time fullAi * Btri;\r\n  0.001393 seconds (9 allocations: 7.630 MB)\r\n\r\njulia> @time Atri * fullBi;\r\n  0.004084 seconds (9 allocations: 7.630 MB)\r\n\r\njulia> @time Atri * Btri;\r\n  0.001264 seconds (9 allocations: 7.630 MB)\r\n```\r\n```\r\njulia> @time fullAi * Bi;\r\n  0.002728 seconds (16 allocations: 7.645 MB)\r\n\r\njulia> @time Ai * fullBi;\r\n  0.005010 seconds (16 allocations: 7.645 MB)\r\n\r\njulia> @time Ai * Bi;\r\n  0.001789 seconds (23 allocations: 7.661 MB)\r\n\r\n```","created_at":"2016-03-14T20:37:57Z","updated_at":"2016-05-12T17:08:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2bf1334cb412836284def5761789158643ac6287","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/JuliaLang/julia/pulls/15505/commits","review_comments_url":"https://api.github.com/repos/JuliaLang/julia/pulls/15505/comments","review_comment_url":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/15505/comments","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/cfafd1a0b1e106f476360974d3ca113177790d6a","head":{"label":"jw3126:bitrimatmul","ref":"bitrimatmul","sha":"cfafd1a0b1e106f476360974d3ca113177790d6a","user":{"login":"jw3126","id":7261506,"avatar_url":"https://avatars.githubusercontent.com/u/7261506?v=3","gravatar_id":"","url":"https://api.github.com/users/jw3126","html_url":"https://github.com/jw3126","followers_url":"https://api.github.com/users/jw3126/followers","following_url":"https://api.github.com/users/jw3126/following{/other_user}","gists_url":"https://api.github.com/users/jw3126/gists{/gist_id}","starred_url":"https://api.github.com/users/jw3126/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jw3126/subscriptions","organizations_url":"https://api.github.com/users/jw3126/orgs","repos_url":"https://api.github.com/users/jw3126/repos","events_url":"https://api.github.com/users/jw3126/events{/privacy}","received_events_url":"https://api.github.com/users/jw3126/received_events","type":"User","site_admin":false},"repo":{"id":53058482,"name":"julia","full_name":"jw3126/julia","owner":{"login":"jw3126","id":7261506,"avatar_url":"https://avatars.githubusercontent.com/u/7261506?v=3","gravatar_id":"","url":"https://api.github.com/users/jw3126","html_url":"https://github.com/jw3126","followers_url":"https://api.github.com/users/jw3126/followers","following_url":"https://api.github.com/users/jw3126/following{/other_user}","gists_url":"https://api.github.com/users/jw3126/gists{/gist_id}","starred_url":"https://api.github.com/users/jw3126/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jw3126/subscriptions","organizations_url":"https://api.github.com/users/jw3126/orgs","repos_url":"https://api.github.com/users/jw3126/repos","events_url":"https://api.github.com/users/jw3126/events{/privacy}","received_events_url":"https://api.github.com/users/jw3126/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jw3126/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":true,"url":"https://api.github.com/repos/jw3126/julia","forks_url":"https://api.github.com/repos/jw3126/julia/forks","keys_url":"https://api.github.com/repos/jw3126/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jw3126/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jw3126/julia/teams","hooks_url":"https://api.github.com/repos/jw3126/julia/hooks","issue_events_url":"https://api.github.com/repos/jw3126/julia/issues/events{/number}","events_url":"https://api.github.com/repos/jw3126/julia/events","assignees_url":"https://api.github.com/repos/jw3126/julia/assignees{/user}","branches_url":"https://api.github.com/repos/jw3126/julia/branches{/branch}","tags_url":"https://api.github.com/repos/jw3126/julia/tags","blobs_url":"https://api.github.com/repos/jw3126/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jw3126/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jw3126/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/jw3126/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jw3126/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/jw3126/julia/languages","stargazers_url":"https://api.github.com/repos/jw3126/julia/stargazers","contributors_url":"https://api.github.com/repos/jw3126/julia/contributors","subscribers_url":"https://api.github.com/repos/jw3126/julia/subscribers","subscription_url":"https://api.github.com/repos/jw3126/julia/subscription","commits_url":"https://api.github.com/repos/jw3126/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/jw3126/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/jw3126/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/jw3126/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/jw3126/julia/contents/{+path}","compare_url":"https://api.github.com/repos/jw3126/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jw3126/julia/merges","archive_url":"https://api.github.com/repos/jw3126/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jw3126/julia/downloads","issues_url":"https://api.github.com/repos/jw3126/julia/issues{/number}","pulls_url":"https://api.github.com/repos/jw3126/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/jw3126/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/jw3126/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jw3126/julia/labels{/name}","releases_url":"https://api.github.com/repos/jw3126/julia/releases{/id}","deployments_url":"https://api.github.com/repos/jw3126/julia/deployments","created_at":"2016-03-03T14:53:05Z","updated_at":"2016-03-03T14:53:11Z","pushed_at":"2016-05-10T18:47:41Z","git_url":"git://github.com/jw3126/julia.git","ssh_url":"git@github.com:jw3126/julia.git","clone_url":"https://github.com/jw3126/julia.git","svn_url":"https://github.com/jw3126/julia","homepage":"http://julialang.org/","size":87955,"stargazers_count":0,"watchers_count":0,"language":"Julia","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"JuliaLang:master","ref":"master","sha":"a0f492057dd529d52a9b0b201d0ab51b5e30a316","user":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"repo":{"id":1644196,"name":"julia","full_name":"JuliaLang/julia","owner":{"login":"JuliaLang","id":743164,"avatar_url":"https://avatars.githubusercontent.com/u/743164?v=3","gravatar_id":"","url":"https://api.github.com/users/JuliaLang","html_url":"https://github.com/JuliaLang","followers_url":"https://api.github.com/users/JuliaLang/followers","following_url":"https://api.github.com/users/JuliaLang/following{/other_user}","gists_url":"https://api.github.com/users/JuliaLang/gists{/gist_id}","starred_url":"https://api.github.com/users/JuliaLang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JuliaLang/subscriptions","organizations_url":"https://api.github.com/users/JuliaLang/orgs","repos_url":"https://api.github.com/users/JuliaLang/repos","events_url":"https://api.github.com/users/JuliaLang/events{/privacy}","received_events_url":"https://api.github.com/users/JuliaLang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/JuliaLang/julia","description":"The Julia Language: A fresh approach to technical computing.","fork":false,"url":"https://api.github.com/repos/JuliaLang/julia","forks_url":"https://api.github.com/repos/JuliaLang/julia/forks","keys_url":"https://api.github.com/repos/JuliaLang/julia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JuliaLang/julia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JuliaLang/julia/teams","hooks_url":"https://api.github.com/repos/JuliaLang/julia/hooks","issue_events_url":"https://api.github.com/repos/JuliaLang/julia/issues/events{/number}","events_url":"https://api.github.com/repos/JuliaLang/julia/events","assignees_url":"https://api.github.com/repos/JuliaLang/julia/assignees{/user}","branches_url":"https://api.github.com/repos/JuliaLang/julia/branches{/branch}","tags_url":"https://api.github.com/repos/JuliaLang/julia/tags","blobs_url":"https://api.github.com/repos/JuliaLang/julia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JuliaLang/julia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JuliaLang/julia/git/refs{/sha}","trees_url":"https://api.github.com/repos/JuliaLang/julia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JuliaLang/julia/statuses/{sha}","languages_url":"https://api.github.com/repos/JuliaLang/julia/languages","stargazers_url":"https://api.github.com/repos/JuliaLang/julia/stargazers","contributors_url":"https://api.github.com/repos/JuliaLang/julia/contributors","subscribers_url":"https://api.github.com/repos/JuliaLang/julia/subscribers","subscription_url":"https://api.github.com/repos/JuliaLang/julia/subscription","commits_url":"https://api.github.com/repos/JuliaLang/julia/commits{/sha}","git_commits_url":"https://api.github.com/repos/JuliaLang/julia/git/commits{/sha}","comments_url":"https://api.github.com/repos/JuliaLang/julia/comments{/number}","issue_comment_url":"https://api.github.com/repos/JuliaLang/julia/issues/comments{/number}","contents_url":"https://api.github.com/repos/JuliaLang/julia/contents/{+path}","compare_url":"https://api.github.com/repos/JuliaLang/julia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JuliaLang/julia/merges","archive_url":"https://api.github.com/repos/JuliaLang/julia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JuliaLang/julia/downloads","issues_url":"https://api.github.com/repos/JuliaLang/julia/issues{/number}","pulls_url":"https://api.github.com/repos/JuliaLang/julia/pulls{/number}","milestones_url":"https://api.github.com/repos/JuliaLang/julia/milestones{/number}","notifications_url":"https://api.github.com/repos/JuliaLang/julia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JuliaLang/julia/labels{/name}","releases_url":"https://api.github.com/repos/JuliaLang/julia/releases{/id}","deployments_url":"https://api.github.com/repos/JuliaLang/julia/deployments","created_at":"2011-04-21T07:01:50Z","updated_at":"2016-05-12T07:43:19Z","pushed_at":"2016-05-12T17:03:19Z","git_url":"git://github.com/JuliaLang/julia.git","ssh_url":"git@github.com:JuliaLang/julia.git","clone_url":"https://github.com/JuliaLang/julia.git","svn_url":"https://github.com/JuliaLang/julia","homepage":"http://julialang.org/","size":383822,"stargazers_count":7034,"watchers_count":7034,"language":"Julia","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1625,"mirror_url":null,"open_issues_count":1740,"forks":1625,"open_issues":1740,"watchers":7034,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/15505"},"html":{"href":"https://github.com/JuliaLang/julia/pull/15505"},"issue":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/15505"},"comments":{"href":"https://api.github.com/repos/JuliaLang/julia/issues/15505/comments"},"review_comments":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/15505/comments"},"review_comment":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JuliaLang/julia/pulls/15505/commits"},"statuses":{"href":"https://api.github.com/repos/JuliaLang/julia/statuses/cfafd1a0b1e106f476360974d3ca113177790d6a"}}}}