type Complex{ T<:AbstractFloat } <: Number
x::T
y::T
end
On Thursday, September 10, 2015 at 7:18:13 AM UTC-4, andrew cooke wrote:
>
> thanks (how does someone working on embedded c++ get to work with
> adaboost?!)
>
> what i am actually going with is a bunch of links to examples (i can email
> this to everyone before the talk, which will be over google meetup):
>
> (if anyone has corrections to what follows in the next few hours i am
> happy to hear them, although i think it's pretty uncontroversial)
>
>
> * Data analysis and plots something like R
> http://dcjones.github.io/Gadfly.jl/
>
> * IJulia reminds me of Mathematica (based on IPython)
>
> https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks#julia
>
> http://nbviewer.ipython.org/url/beowulf.csail.mit.edu/18.337/fractals.ipynb
>
> http://nbviewer.ipython.org/github/JuliaOpt/juliaopt-notebooks/blob/master/notebooks/Matrix%20Completion%20with%20Binary%20Data.ipynb
>
> * Like Matlab, it makes using arrays easy
> http://quant-econ.net/jl/julia_arrays.html
>
> * The neat thing (to me) is that unlike Matlab, the arrays code is often
> (not always - it calls out to BLAS etc) written in Julia itself.
> http://julialang.org/benchmarks/
>
> * More generally, it has managed ("automatic") memory allocation.
> It doesn't have objects/classes, but it has something similar:
> it combines types (like C structs) with multiple dispatch.
>
> For example, to define complex types:
>
> type Complex64<:Number
> Float64 x
> Float64 y
> end
>
> and then define
>
> +(a::Complex64, b::Complex64) = Complex64(a.x + b.x, a.y + b.y)
> ... etc
>
> Note that + is already defined for a pile of other types (start julia and
> type "methods(+)" to see them all).
>
> Which is almost the same as defining a Complex64 class with a "+" method.
> Main differences are (1) all types used to choose method and (2) only
> final
> types have fields (so memory layout is known).
>
> And it's fast because the compiler compiles functions at runtime
> depending
> on types when called. So the code ends up being compiled for a very
> specific type, even if in your code you just had "a+b" and it wasn't
> clear
> whether a and b were Complex64 or Float64 or Int32 or ...
>
> Downside to that is that when you first run a program it is actually
> slow,
> as it compiles things. But second and further calls to any routine are
> fast.
>
> I've written CRC32 (checksum) code of comparable speed to libz (pretty
> much
> the C benchmark). It wasn't "simple", but it was no harder than C. You
> have profiling tools, you unroll loops, etc etc.
>
> (In practice you would probably do:
>
> type Complex(F<:Float}<:Number
> F x
> F y
> end
>
> because it hs parameterised types)
>
>
> On Thursday, 10 September 2015 05:21:42 UTC-3, Carlos Becker wrote:
>>
>> Hi Andrew, my slides are here,
>> https://sites.google.com/site/carlosbecker/a-few-notes , they are for
>> v0.3:
>>
>> If you need the openoffice original let me know, I can send it to you.
>> Cheers.
>>
>> El miércoles, 9 de septiembre de 2015, 14:07:36 (UTC+2), andrew cooke
>> escribió:
>>>
>>> ok, thanks everyone i'll have a look at all those. andrew
>>>
>>> On Tuesday, 8 September 2015 17:58:33 UTC-3, andrew cooke wrote:
>>>>
>>>>
>>>> I need to give a presentation at work and was wondering is slides
>>>> already exist that:
>>>>
>>>> * show how fast it is in benchmarks
>>>>
>>>> * show that it's similar to matlab (matrix stuff)
>>>>
>>>> * show that you can write fast inner loops
>>>>
>>>> For bonus points:
>>>>
>>>> * show how you can add other numerical types at no "cost"
>>>>
>>>> * show how mutiple dispatch can be useful
>>>>
>>>> * show how someone used to OO in, say, python, won't feel too lost
>>>>
>>>> Preferably just one slide per point. Very short.
>>>>
>>>> Thanks,
>>>> Andrew
>>>>
>>>>