On 5/11/14 12:05 PM, Alain Ketterlin wrote:
Julia is Matlab and R, Python, Lisp, Scheme; all rolled together on
steroids. Its amazing as a dynamic language, and its fast, like
lightning fast as well as multiprocessing (parallel processing) at its
core. Its astounding, really.
Hmmm...
Its number concept is unified,
What exactly is unified? There is no implicit promotion between
primitive types and BigInt/Float.
The built-in math functions (extensive, by the way) just work, and they
work consistently the way you might expect across types. Consider sqrt():
> julia> sqrt(-1+0im)
> 0.0 + 1.0im
> julia> sqrt(complex(-1))
> 0.0 + 1.0im
> julia> sqrt(2)
> 1.4142135623730951
>julia> sqrt(2.0)
> 1.4142135623730951
> julia> sqrt(BigFloat(2.0))
>1.414213562373095048801688724209698078569671875376948073176679737990732478462102
>e+00 with 256 bits of precision
>julia> with_bigfloat_precision(1024) do
> sqrt(BigFloat(2.0))
> end
>1.414213562373095048801688724209698078569671875376948073176679737990732478462107
>03885038753432764157273501384623091229702492483605585073721264412149709993583141
>32226659275055927557999505011527820605714701095599716059702745345968620147285174
>18640889198609552329230484308714321450839762603627995251407989687253402e+00
>with 1024 bits of precision
You'll notice that I did not need to import anything to use sqrt(), and
sqrt() takes all types and does something meaningful with them.
The following code will produce over 100,000 digits of π (pi) in less
than 2 seconds on a low-end processor, like my mac mini dual core 2Ghz:
>julia> prec=524288
>524288
>julia> with_bigfloat_precision(prec) do
> println(atan(BigFloat(1)/5)*16 - atan(BigFloat(1)/239)*4)
> end
The scientific and transcendental functions (built-ins) just work. The
coder sets the precision in floating point bits, and the functions just
work --- at that precision. Nothing needs to be imported, and special
functions are not necessary. The maths are unified, and they are fast;
yet, the coder has the flexibility and ease of python coding, with a
very useful repl.
But, like lisp, Julia's internal structures are lists, so, it can create
and modify its own code on-the-fly. Unicode characters above code point
\u00A0 can be used as symbols, and constants ARE their unicode characters:
>julia> sin(π/4)
> 0.7071067811865475
>julia> cos(π/4)
> 0.7071067811865476
>julia> sin(BigFloat(π/4))
> 7.0710678118654750275194295621751674626154323953749278952436611913748
> 20215180412e-01 with 256 bits of precision
marcus
--
https://mail.python.org/mailman/listinfo/python-list