{"action":"created","comment":{"url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/comments/70249135","id":70249135,"diff_hunk":"@@ -0,0 +1,655 @@\n+################################################################################\n+# Fixed Step Adams-Bashforth multi-step solver for nonstiff problems\n+#\n+#     [T,X] = ode_ms(ODEFUN, Y0, TSPAN,ORDER=4) with TSPAN = [T0:H:TFINAL]\n+#\n+#     Note: If method is run at order k, the first step is taken at order 1,\n+#     and the order increases each step until it is order k on the kth step.\n+#     Thus results may be of lower accuracy than expected.\n+#     (Main ref: Hairer & Wanner 1996, Vol I, p.359-360, 372)\n+################################################################################\n+\n+function ode_ms(F, y0, tspan, order::Integer)\n+    h = diff(tspan)\n+    y = Array(typeof(y0), length(tspan))\n+    y[1] = y0\n+\n+    if 1 <= order <= 4\n+        b = ms_coefficients4\n+    else\n+        b = zeros(order, order)\n+        b[1:4, 1:4] = ms_coefficients4\n+        for s = 5:order\n+            for j = 0:(s - 1)\n+                # Assign in correct order for multiplication below\n+                #  (a factor depending on j and s) .* (an integral of a polynomial with -(0:s), except -j, as roots)\n+                p_int = polyint(poly(diagm(-[0:j - 1; j + 1:s - 1])))\n+                b[s, s - j] = ((-1)^j / factorial(j)\n+                               / factorial(s - 1 - j) * polyval(p_int, 1))\n+            end\n+        end\n+    end\n+\n+    # TODO: use a better data structure here (should be an order-element circ buffer)\n+    dy = similar(y)\n+    for i = 1:length(tspan)-1\n+        # Need to run the first several steps at reduced order\n+        steporder = min(i, order)\n+        dy[i] = F(tspan[i], y[i])\n+\n+        y[i+1] = y[i]\n+        for j = 1:steporder\n+            y[i+1] += h[i]*b[steporder, j]*dy[i-(steporder-1) + (j-1)]\n+        end\n+    end\n+    return vcat(tspan), y\n+end\n+\n+# Use order 4 by default\n+ode4ms(F, y0, tspan) = ODE.ode_ms(F, y0, tspan, 4)\n+ode5ms(F, y0, tspan) = ODE.ode_ms(F, y0, tspan, 5)\n+\n+\n+################################################################################\n+#  Fixed Step Adams-Moulton PECE solver for nonstiff problems\n+#\n+#     [T,X] = ODE_AM(ODEFUN, Y0, TSPAN,ORDER=4) with TSPAN = [T0:H:TFINAL]\n+#\n+#     Note: If method is run at order k, the first step is taken at order 1,\n+#     and the order increases each step until it is order k on the kth step.\n+#     Thus results may be of lower accuracy than expected.\n+#     (Main ref: Hairer & Wanner 1996, Vol I, p.359-360, 372)\n+################################################################################\n+\n+\n+##Function: ode_am(F,y0, t, order(optional))\n+##order is set to 4 by default\n+function ode_am(F::Function,y0, t,order::Integer = 4)\n+    if (1 <= order <= 4)\n+        b_imp = am_imp_coefficients3\n+        b_exp = ms_coefficients4\n+    else\n+        #calculating higher order coefficients for implicit Adams Moulton method\n+        b_imp = zeros(order, order)\n+        b_imp[1:4,1:4] = am_imp_coefficients3\n+        k = order - 1 # For explicit method, order = k+1\n+        for s = 4:k\n+            for j = 0:s\n+                # Assign in correct order for multiplication below\n+                #  (a factor depending on j and s) .* (an integral of a polynomial with -(-1:s-1), except -(j-1), as roots)\n+                p_int = Polynomials.polyint(Polynomials.poly(diagm(-[-1:j - 2; j:s-1])))\n+                b_imp[s+1, s+1 - j] = ((-1)^j / factorial(j)\n+                               / factorial(s - j) * Polynomials.polyval(p_int, 1))\n+            end\n+        end\n+        b_exp = zeros(order, order)\n+        b_exp[1:4, 1:4] = ms_coefficients4\n+        k = order # For implicit method, order = k\n+        for s = 5:k\n+            for j = 0:(s - 1)\n+                # Assign in correct order for multiplication below\n+                #  (a factor depending on j and s) .* (an integral of a polynomial with -(0:s), except -j, as roots)\n+                p_int = Polynomials.polyint(Polynomials.poly(diagm(-[0:j - 1; j + 1:s - 1])))\n+                b_exp[s, s - j] = ((-1)^j / factorial(j)\n+                               / factorial(s - 1 - j) * Polynomials.polyval(p_int, 1))\n+            end\n+        end\n+    end\n+\n+    dt = diff(t)\n+    y = Array(typeof(y0), length(t))\n+    dy = similar(y)\n+    y[1] = y0\n+    dy[1] = F(t[1],y[1])\n+\n+    ##PECE Method for Implicit Adams solver\n+    for i=1:length(t)-1\n+        steporder = min(i,order)\n+\n+        ##(P)redict y[i+1] using explicit Adams Bashforth coefficients\n+        y[i+1]=y[i]\n+        for j=1:steporder\n+            y[i+1] += dt[i]*b_exp[steporder, j]*dy[i-(steporder-1) + (j-1)]\n+        end\n+\n+        ##(E)valuate function F at the approximate point t[i+1],y[i+1]\n+        dy[i+1] = F(t[i+1],y[i+1])\n+\n+        ##(C)orrect the formula using implicit Adams Moulton coefficients\n+        y[i+1]=y[i]\n+        for j = 1 : steporder\n+            y[i+1] += dt[i]*b_imp[steporder, j]*dy[i - (steporder -1) + j]\n+        end\n+\n+        ##(E)valulate the function anew at corrected approximatiion t[i+1],y[i+1]\n+        dy[i+1] = F(t[i+1], y[i+1])\n+    end\n+    return t, y\n+end\n+\n+ode_am5(F::Function,y0, t)= ode_am(F::Function,y0, t,5)\n+\n+\n+################################################################################\n+# Variable Step Variable Order (VSVO) Adams-Moulton Solver for nonstiff problems\n+#\n+#     [T,X] = ODE113(ODEFUN, Y0, TSPAN,ORDER=4;kwords...) with TSPAN = [T0:TFINAL]\n+#     or[T0,T1,...,TFINAL] for dense output\n+#\n+#     (Main ref: Hairer & Wanner 1996, Vol I, p.356-360, p.398-400, p.421-423)\n+################################################################################\n+function ode113(F, y0, tspan, order::Integer=4; kwords...)\n+    # For y0 which don't support indexing.\n+    F_ = (t, y) -> [F(t, y[1])]\n+    t,y = ode113(F_, [y0], tspan, order; kwords...)\n+    return t, vcat_nosplat(y)\n+end\n+\n+\"a variable stepsize, variable order multi-step solver for nonstiff ODEs\"\n+function ode113(F, y0::AbstractVector, tspan, order::Integer=4;adaptive_order = true,\n+                                                      max_order = 13,\n+                                                      reltol = 1.0e-9,\n+                                                      abstol = 1.0e-9,\n+                                                      minstep=abs(tspan[1] - tspan[end])/1e18,\n+                                                      maxstep=abs(tspan[end] - tspan[1])/2.5,\n+                                                      initstep=0.,\n+                                                      facmax = 1.5,\n+                                                      facmin = .1,\n+                                                      fac = .8,\n+                                                      norm=Base.norm,\n+                                                      points =:all)\n+\n+    #-##########################################################################\n+    # Initializations\n+    #-##########################################################################\n+    Et, Eyf, Ty = make_consistent_types(F, y0, tspan)\n+    dof = length(y0)\n+\n+    # initialization of time span, which will have variable length\n+    tspan = convert(Vector{Et}, tspan)\n+    tstart = tspan[1]\n+    tfinal = tspan[end]\n+    t = [tstart]\n+\n+    # initialzation of y[n], which will have variable length as well\n+    y = Array(Ty, 1)\n+    allocate!(y, y0, dof)\n+    # TODO: fix after https://github.com/JuliaLang/julia/issues/16667\n+    # y[1] = deepcopy(y0)\n+    y[1] = copy(y0)\n+\n+    # initialzation of dy[n], which will have variable length as well\n+    Tdy = typeof(F(t[1], y[1]))\n+    dy = Tdy[]\n+    push!(dy,F(t[1], y[1]))\n+\n+    # preallocate work variables for t_np1, y_np1 and dy_np1  which are for\n+    # for t_{n+1}, y(t_{n+1}), and dy(t_{n+1})\n+    t_np1   = tspan[1]\n+    y_np1   = similar(y0, Eyf, dof)\n+    dy_np1  = similar(dy[1])\n+\n+    # variables for dense output\n+\n+    tout = [tstart]\n+    iter = 2\n+    yout = Array(Ty, 1)\n+    allocate!(yout, y0, dof)","path":"src/adams_methods.jl","position":197,"original_position":197,"commit_id":"62e2b9c831acfe442cf582f96d59ec6dee5a4f6c","original_commit_id":"62e2b9c831acfe442cf582f96d59ec6dee5a4f6c","user":{"login":"mauro3","id":4098145,"avatar_url":"https://avatars.githubusercontent.com/u/4098145?v=3","gravatar_id":"","url":"https://api.github.com/users/mauro3","html_url":"https://github.com/mauro3","followers_url":"https://api.github.com/users/mauro3/followers","following_url":"https://api.github.com/users/mauro3/following{/other_user}","gists_url":"https://api.github.com/users/mauro3/gists{/gist_id}","starred_url":"https://api.github.com/users/mauro3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mauro3/subscriptions","organizations_url":"https://api.github.com/users/mauro3/orgs","repos_url":"https://api.github.com/users/mauro3/repos","events_url":"https://api.github.com/users/mauro3/events{/privacy}","received_events_url":"https://api.github.com/users/mauro3/received_events","type":"User","site_admin":false},"body":"This is pointless.  First, `allocate!` only makes sense to use with large vectors, not just length 1.  Then in line 199 you assign a copy of y0 to this slot, so the allocation is never used anyway.  199 would need to read `yout[1][:] = copy(y0)` or better `copy!(yout[1],y0)`.  However, these shenanigans will have no performance impact, instead write `yout = [copy(y0)]`.","created_at":"2016-07-11T12:39:56Z","updated_at":"2016-07-11T12:39:57Z","html_url":"https://github.com/JuliaLang/ODE.jl/pull/106#discussion_r70249135","pull_request_url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106","_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/comments/70249135"},"html":{"href":"https://github.com/JuliaLang/ODE.jl/pull/106#discussion_r70249135"},"pull_request":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106"}}},"pull_request":{"url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106","id":76054093,"html_url":"https://github.com/JuliaLang/ODE.jl/pull/106","diff_url":"https://github.com/JuliaLang/ODE.jl/pull/106.diff","patch_url":"https://github.com/JuliaLang/ODE.jl/pull/106.patch","issue_url":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/106","number":106,"state":"open","locked":false,"title":"[WIP/RFC]:Addition of Variable and Fixed Adam Moulton Method","user":{"login":"obiajulu","id":12954944,"avatar_url":"https://avatars.githubusercontent.com/u/12954944?v=3","gravatar_id":"","url":"https://api.github.com/users/obiajulu","html_url":"https://github.com/obiajulu","followers_url":"https://api.github.com/users/obiajulu/followers","following_url":"https://api.github.com/users/obiajulu/following{/other_user}","gists_url":"https://api.github.com/users/obiajulu/gists{/gist_id}","starred_url":"https://api.github.com/users/obiajulu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obiajulu/subscriptions","organizations_url":"https://api.github.com/users/obiajulu/orgs","repos_url":"https://api.github.com/users/obiajulu/repos","events_url":"https://api.github.com/users/obiajulu/events{/privacy}","received_events_url":"https://api.github.com/users/obiajulu/received_events","type":"User","site_admin":false},"body":"# Overview of Pull Request\r\nWe add two new solvers for ODE.jl, and relocate the old multistep solver\r\node_ms, namely ode_am and ode113. ode_am is a fixed step method similiar\r\nto ode_ms, but uses a PECE step. ode113 is a variable step size and\r\nvariable order method using the same underlying theory as ode_am. For more\r\ndocumentation, refer to Hairer et al Volume 1 on Adam Methods. We group all of the multistep solvers in a new file \"adams_methods.jl\", which meant moving `ode_ms` from \"ODE.jl\" to the new file. \r\n\r\n1. Implementation of `ode113`\r\n2. Implementation of `ode_am`\r\n3. Moving `ode_ms` to new file \"adams_methods.jl\"\r\n\r\n# Performance results for `ode_am` \r\nUsing @mauro3's [IVPTestSuite.jl](github.com/mauro3/IVPTestSuite.jl), we present benchmarks which show the performace of both solvers. First, for `ode_am`.\r\n### walltime vs scd for threebody\r\n![threebody_stepsizes](https://cloud.githubusercontent.com/assets/12954944/16537265/1e753ab6-3fcc-11e6-910e-f740e36b1f3d.png)\r\n\r\n### walltime vs scd for Pleidas\r\n![plei_stepsizes](https://cloud.githubusercontent.com/assets/12954944/16537264/1e71ad92-3fcc-11e6-83af-d121c708961f.png)\r\n\r\n# Performance results for `ode113` \r\nWe also present results for `ode113` using IVPTestSuite.jl\r\n\r\n### walltime vs scd for threebody\r\n![threebody_tols_from_10e-5_to_10e-14](https://cloud.githubusercontent.com/assets/12954944/16533905/0602d654-3faa-11e6-92a2-36941ca54870.png)\r\n\r\n### walltime vs scd for Pleidas\r\n\r\n![plei_tols_from_10e-5_to_10e-15](https://cloud.githubusercontent.com/assets/12954944/16534154/9b20952c-3fab-11e6-996b-76a9e85688e8.png)\r\n\r\n### function evaluations for Pleidas problem `ode113` vs `ode45`\r\nThe real strength of Adam Bashforth methods is the minimal amount of derivative function evaluation one needs. For each iteration step, this function needs to be evaluated usually only twice (really twice for each attempt of a step, and steps are usually accepted). We present a table of the function evaluations necessary for `ode45` vs `ode113` used to solve the same Pleiadas problem above.\r\n\r\n|tol | ode113 | ode45|\r\n|---|---|---|---|\r\n|1e-7 | 1115 | 2456|\r\n|1e-8 | 1327 | 3890|\r\n|1e-9 | 1557 | 6170|\r\n|1e-10 | 1859 | 9776|\r\n|1e-11 | 2237 | 15488|\r\n|1e-12 | 2875 | 24548|\r\n|1e-13 | 3869 | 38900|\r\n|1e-14 | 6179 | 61652|\r\n\r\n### Notes\r\n\r\n1. Dense output is given by a native method which has degree one less than the order the solver is using over that range. Thus, dense output should be better than the degree 3 hermite interpolation method.\r\n2. Best not to push `reltol`/`abstol` less than ~10e-15\r\n\r\n-\r\n# Work still to be done \r\n\r\n- [ ] Implement all methods with [DataStructures.CicularBuffer](https://github.com/JuliaLang/DataStructures.jl/blob/master/src/circular_buffer.jl) which should be faster than shifting data in an array, or having an array of unnecessarily long length (name, `ode_ms` and `ode_am` both stores all of the `dy` values for each time step, when only the last `order` of them are necessary)\r\n- [ ] Implement for loops over arrays of arrays smarter, in a way that iterators over individual elements,\r\n- [ ] Better handling of `make_consisent_types` \r\n- [x] Fix a small problem with backwards compatibility with v0.3 for array declaration in line 604, currently causing a failed Travis run for Julia v0.3\r\n\r\n\r\n-\r\nI wanted to give thanks for @mauro3, @jiahao, and @yuyichao ingboMa for their help with development of these two solvers. ","created_at":"2016-07-02T02:46:46Z","updated_at":"2016-07-11T12:39:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"658eef080078acf0071c5d19ec1e38e40c89c933","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106/commits","review_comments_url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106/comments","review_comment_url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/106/comments","statuses_url":"https://api.github.com/repos/JuliaLang/ODE.jl/statuses/62e2b9c831acfe442cf582f96d59ec6dee5a4f6c","head":{"label":"obiajulu:ob/a-b_adaptive","ref":"ob/a-b_adaptive","sha":"62e2b9c831acfe442cf582f96d59ec6dee5a4f6c","user":{"login":"obiajulu","id":12954944,"avatar_url":"https://avatars.githubusercontent.com/u/12954944?v=3","gravatar_id":"","url":"https://api.github.com/users/obiajulu","html_url":"https://github.com/obiajulu","followers_url":"https://api.github.com/users/obiajulu/followers","following_url":"https://api.github.com/users/obiajulu/following{/other_user}","gists_url":"https://api.github.com/users/obiajulu/gists{/gist_id}","starred_url":"https://api.github.com/users/obiajulu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obiajulu/subscriptions","organizations_url":"https://api.github.com/users/obiajulu/orgs","repos_url":"https://api.github.com/users/obiajulu/repos","events_url":"https://api.github.com/users/obiajulu/events{/privacy}","received_events_url":"https://api.github.com/users/obiajulu/received_events","type":"User","site_admin":false},"repo":{"id":59492718,"name":"ODE.jl","full_name":"obiajulu/ODE.jl","owner":{"login":"obiajulu","id":12954944,"avatar_url":"https://avatars.githubusercontent.com/u/12954944?v=3","gravatar_id":"","url":"https://api.github.com/users/obiajulu","html_url":"https://github.com/obiajulu","followers_url":"https://api.github.com/users/obiajulu/followers","following_url":"https://api.github.com/users/obiajulu/following{/other_user}","gists_url":"https://api.github.com/users/obiajulu/gists{/gist_id}","starred_url":"https://api.github.com/users/obiajulu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/obiajulu/subscriptions","organizations_url":"https://api.github.com/users/obiajulu/orgs","repos_url":"https://api.github.com/users/obiajulu/repos","events_url":"https://api.github.com/users/obiajulu/events{/privacy}","received_events_url":"https://api.github.com/users/obiajulu/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/obiajulu/ODE.jl","description":"Assorted basic Ordinary Differential Equation solvers","fork":true,"url":"https://api.github.com/repos/obiajulu/ODE.jl","forks_url":"https://api.github.com/repos/obiajulu/ODE.jl/forks","keys_url":"https://api.github.com/repos/obiajulu/ODE.jl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/obiajulu/ODE.jl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/obiajulu/ODE.jl/teams","hooks_url":"https://api.github.com/repos/obiajulu/ODE.jl/hooks","issue_events_url":"https://api.github.com/repos/obiajulu/ODE.jl/issues/events{/number}","events_url":"https://api.github.com/repos/obiajulu/ODE.jl/events","assignees_url":"https://api.github.com/repos/obiajulu/ODE.jl/assignees{/user}","branches_url":"https://api.github.com/repos/obiajulu/ODE.jl/branches{/branch}","tags_url":"https://api.github.com/repos/obiajulu/ODE.jl/tags","blobs_url":"https://api.github.com/repos/obiajulu/ODE.jl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/obiajulu/ODE.jl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/obiajulu/ODE.jl/git/refs{/sha}","trees_url":"https://api.github.com/repos/obiajulu/ODE.jl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/obiajulu/ODE.jl/statuses/{sha}","languages_url":"https://api.github.com/repos/obiajulu/ODE.jl/languages","stargazers_url":"https://api.github.com/repos/obiajulu/ODE.jl/stargazers","contributors_url":"https://api.github.com/repos/obiajulu/ODE.jl/contributors","subscribers_url":"https://api.github.com/repos/obiajulu/ODE.jl/subscribers","subscription_url":"https://api.github.com/repos/obiajulu/ODE.jl/subscription","commits_url":"https://api.github.com/repos/obiajulu/ODE.jl/commits{/sha}","git_commits_url":"https://api.github.com/repos/obiajulu/ODE.jl/git/commits{/sha}","comments_url":"https://api.github.com/repos/obiajulu/ODE.jl/comments{/number}","issue_comment_url":"https://api.github.com/repos/obiajulu/ODE.jl/issues/comments{/number}","contents_url":"https://api.github.com/repos/obiajulu/ODE.jl/contents/{+path}","compare_url":"https://api.github.com/repos/obiajulu/ODE.jl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/obiajulu/ODE.jl/merges","archive_url":"https://api.github.com/repos/obiajulu/ODE.jl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/obiajulu/ODE.jl/downloads","issues_url":"https://api.github.com/repos/obiajulu/ODE.jl/issues{/number}","pulls_url":"https://api.github.com/repos/obiajulu/ODE.jl/pulls{/number}","milestones_url":"https://api.github.com/repos/obiajulu/ODE.jl/milestones{/number}","notifications_url":"https://api.github.com/repos/obiajulu/ODE.jl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/obiajulu/ODE.jl/labels{/name}","releases_url":"https://api.github.com/repos/obiajulu/ODE.jl/releases{/id}","deployments_url":"https://api.github.com/repos/obiajulu/ODE.jl/deployments","created_at":"2016-05-23T15:12:42Z","updated_at":"2016-06-28T14:20:15Z","pushed_at":"2016-07-08T21:08:28Z","git_url":"git://github.com/obiajulu/ODE.jl.git","ssh_url":"git@github.com:obiajulu/ODE.jl.git","clone_url":"https://github.com/obiajulu/ODE.jl.git","svn_url":"https://github.com/obiajulu/ODE.jl","homepage":null,"size":614,"stargazers_count":2,"watchers_count":2,"language":"Julia","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":2,"forks":0,"open_issues":2,"watchers":2,"default_branch":"master"}},"base":{"label":"JuliaLang:master","ref":"master","sha":"a0ef97d6249e62a089370787850ae697e3d94962","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":8496433,"name":"ODE.jl","full_name":"JuliaLang/ODE.jl","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/ODE.jl","description":"Assorted basic Ordinary Differential Equation solvers","fork":false,"url":"https://api.github.com/repos/JuliaLang/ODE.jl","forks_url":"https://api.github.com/repos/JuliaLang/ODE.jl/forks","keys_url":"https://api.github.com/repos/JuliaLang/ODE.jl/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JuliaLang/ODE.jl/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JuliaLang/ODE.jl/teams","hooks_url":"https://api.github.com/repos/JuliaLang/ODE.jl/hooks","issue_events_url":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/events{/number}","events_url":"https://api.github.com/repos/JuliaLang/ODE.jl/events","assignees_url":"https://api.github.com/repos/JuliaLang/ODE.jl/assignees{/user}","branches_url":"https://api.github.com/repos/JuliaLang/ODE.jl/branches{/branch}","tags_url":"https://api.github.com/repos/JuliaLang/ODE.jl/tags","blobs_url":"https://api.github.com/repos/JuliaLang/ODE.jl/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JuliaLang/ODE.jl/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JuliaLang/ODE.jl/git/refs{/sha}","trees_url":"https://api.github.com/repos/JuliaLang/ODE.jl/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JuliaLang/ODE.jl/statuses/{sha}","languages_url":"https://api.github.com/repos/JuliaLang/ODE.jl/languages","stargazers_url":"https://api.github.com/repos/JuliaLang/ODE.jl/stargazers","contributors_url":"https://api.github.com/repos/JuliaLang/ODE.jl/contributors","subscribers_url":"https://api.github.com/repos/JuliaLang/ODE.jl/subscribers","subscription_url":"https://api.github.com/repos/JuliaLang/ODE.jl/subscription","commits_url":"https://api.github.com/repos/JuliaLang/ODE.jl/commits{/sha}","git_commits_url":"https://api.github.com/repos/JuliaLang/ODE.jl/git/commits{/sha}","comments_url":"https://api.github.com/repos/JuliaLang/ODE.jl/comments{/number}","issue_comment_url":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/comments{/number}","contents_url":"https://api.github.com/repos/JuliaLang/ODE.jl/contents/{+path}","compare_url":"https://api.github.com/repos/JuliaLang/ODE.jl/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JuliaLang/ODE.jl/merges","archive_url":"https://api.github.com/repos/JuliaLang/ODE.jl/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JuliaLang/ODE.jl/downloads","issues_url":"https://api.github.com/repos/JuliaLang/ODE.jl/issues{/number}","pulls_url":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls{/number}","milestones_url":"https://api.github.com/repos/JuliaLang/ODE.jl/milestones{/number}","notifications_url":"https://api.github.com/repos/JuliaLang/ODE.jl/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JuliaLang/ODE.jl/labels{/name}","releases_url":"https://api.github.com/repos/JuliaLang/ODE.jl/releases{/id}","deployments_url":"https://api.github.com/repos/JuliaLang/ODE.jl/deployments","created_at":"2013-03-01T07:22:56Z","updated_at":"2016-06-30T17:08:18Z","pushed_at":"2016-07-02T02:46:47Z","git_url":"git://github.com/JuliaLang/ODE.jl.git","ssh_url":"git@github.com:JuliaLang/ODE.jl.git","clone_url":"https://github.com/JuliaLang/ODE.jl.git","svn_url":"https://github.com/JuliaLang/ODE.jl","homepage":null,"size":781,"stargazers_count":54,"watchers_count":54,"language":"Julia","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":38,"mirror_url":null,"open_issues_count":37,"forks":38,"open_issues":37,"watchers":54,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106"},"html":{"href":"https://github.com/JuliaLang/ODE.jl/pull/106"},"issue":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/106"},"comments":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/issues/106/comments"},"review_comments":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106/comments"},"review_comment":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/pulls/106/commits"},"statuses":{"href":"https://api.github.com/repos/JuliaLang/ODE.jl/statuses/62e2b9c831acfe442cf582f96d59ec6dee5a4f6c"}}}}
{"actor":{"display_login":"mauro3"}}