As I concluded from the discussion on the ".+" operator,
it might be better to define functions (like Runge) non-vectorized
(and because of speed considerations, too?):
julia> function runge(x::Number)
1 / (1 + 5 * x^2)
end
Say, I want to plot this function with Winston from -1 to 1.
So I use linspace() for generating the x-coordinates.
julia> xs = linspace(-1.0, 1.0)
100-element Array{Float64,1}:
...
Now I would like to generate the y-coordinates through a comprehension, but
ys = [runge(x) for x = xs] will be of type Any, as is rightly described in
the Julia manual.
I feel this is very unfortunate, and writing
julia> ys = Float64[runge(x) for x = xs]
is clumsy, especially as I do not like to be preset on Float64,
preferring a type that is returned by the function.
And applying type Number (or FloatingPoint) does not work properly either.
Of course, I can do it like this:
julia> ys = zeros(100);
julia> for i = 1:100; ys[i] = runge(xs[i]); end
This looks even more clumsy though it might be the most casual approach.
What is the best/shortest way to generate such a vector for a
non-vectorized function?
I apologize if I have overlooked an obvious solution.
The Winston manual, e.g., only mentions vectorized functions like sin(),
etc.