Also check out the work that Miles Lubin and others are doing on reverse mode automatic differentiation. Some really cool stuff in the pipeline.
On Monday, April 7, 2014 8:35:10 AM UTC-7, Jason Merrill wrote: > > I partly meant to suggest that PowerSeries.jl > https://github.com/jwmerrill/PowerSeries.jl might also meet your needs > for 2nd order forward automatic differentiation, and it also already works > to higher orders. > > PowerSeries.jl works by computing truncated power series of functions. You > can read derivatives off the series coefficients because > > f(x + e) = f(x) + f'(x) e + f''(x)/2 e^2 + f'''(x)/3! e^3 + ... > > You can choose what order to compute to for any given application. > > To borrow your README example: > > julia> using PowerSeries > > julia> t0 = series(1.5, 1.0, 0.0) > Series2{Float64}(1.5,1.0,0.0) > > julia> f(x) = e^x / (sqrt(sin(x)^3 + cos(x)^3)) > f (generic function with 1 method) > > # f(1.5 + e) = 4.50 + 4.05e + 4.73e^2 + ... > julia> f(t0) > Series2{Float64}(4.497780053946162,4.05342789389862,4.731536840798301) > > # First derivative > julia> polyder(f(t0)) > Series1{Float64}(4.05342789389862,9.463073681596603) > > # Second derivative > julia> polyder(polyder(f(t0))) > 9.463073681596603 > > # If you start from the beginning with a higher order series, > # then you'll be able to take higher order derivatives at the end > julia> polyder(polyder(polyder(f(series(1.5, 1.0, 0.0, 0.0))))) > 32.16790451368894 > > As far as I can tell (and I could well be wrong!), if you're interested in > differentiating programs to higher orders, truncated power series are a > more fit-to-purpose extension of Dual numbers than HyperDual numbers are. > > This whole space is pretty lively right now. I think everyone is realizing > how easy it is to write new Number types in Julia, and there are *a lot* of > useful notions of number. > > If PowerSeries.jl does end up fitting your purpose, there's plenty of room > for contribution/improvement. There's a good discussion going on in an > issue right now on figuring out how to combine the best aspects of > PowerSeries.jl and a new package called TaylorSeriesl.jl > https://github.com/jwmerrill/PowerSeries.jl/issues/7 > > Or if I've missed something and HyperDual numbers have some important > advantage, that would be good to know! > > > On Sunday, April 6, 2014 4:21:33 PM UTC-7, Rob J Goedman wrote: >> >> Hi John, >> >> Jeff has updated his source files with the MIT license and I've pasted >> those into the LICENSE file of the Julia package. >> >> Jason Merrill has also given good feedback that I'm still looking into. >> My interpretation of his feedback (a single package covering different >> hyper number types and orders) is substantial more work and will definitely >> take longer. So maybe we should publish the current version? >> >> Regards, >> Rob J. Goedman >> [email protected] >> >> >> >> On Apr 6, 2014, at 12:14 PM, Jeffrey Fike <[email protected]> >> wrote: >> >> Rob, >> >> Thanks for your interest. I have been meaning to look into an actual >> open source license. I went with the MIT license. I have updated the code >> on the website to reflect this. Please let me know if you need any >> additional information. >> >> Jeff Fike >> >> >> On Mar 29, 2014, at 5:55 PM, John Myles White <[email protected]> >> wrote: >> >> Thanks for looking into it, Rob. In the absence of a license, the code is >> technically not free to use. But I imagine the authors would like to share >> their code, so it should be easy to convince them to use something formal >> like the MIT or BSD licenses. >> >> — John >> >> On Mar 29, 2014, at 5:52 PM, Robert J Goedman <[email protected]> wrote: >> >> John, >> >> No license is mentioned on the c++ code nor on the matlab versions as far >> as I can see. >> >> I'll send the authors an email. >> >> Regards, >> Rob J. Goedman >> [email protected] >> >> >> On Mar 29, 2014, at 5:47 PM, John Myles White <[email protected]> >> wrote: >> >> This looks really cool. Any idea what the license was on the original >> file? >> >> — John >> >> On Mar 29, 2014, at 5:43 PM, Robert J Goedman <[email protected]> wrote: >> >> Hi, >> >> As a first 'jump into the fray' exercise I've attempted to translate >> Jeffrey Fike's hyper-dual numbers code from c++ to Julia, more or less >> following the DualNumbers package. >> >> The c++ code can be found at >> http://adl.stanford.edu/hyperdual/hyperdual.h . The paper itself at >> http://adl.stanford.edu/hyperdual/Fike_AIAA-2011-886.pdf . >> >> The Julia package can be found at: >> https://github.com/goedman/HyperDualNumbers.jl.git . >> >> Of course, I'm pretty new at this so I'm sure there will be errors and >> poor practices. So any feedback is appreciated. >> >> Also, I'm wondering if the type should be called Hyper or a better name >> would be HyperDual. >> >> This work was triggered by the interesting threads around openPP, >> TaylorSeries.jl, Calculus2, PowerSeries.jl (and at some time I hope >> MCMC.jl). >> >> Rob J. Goedman >> [email protected] >> >> >> >>
