On Thu, Apr 24, 2014 at 4:28 AM, Hans W Borchers <hwborch...@gmail.com>wrote:
>
>     function trapz2{T<:Number}(x::Vector{T}, y::Vector{T})
>         local n = length(x)
>         if (length(y) != n)
>             error("Vectors 'x', 'y' must be of same length")
>         end
>         if n == 1; return 0.0; end
>         r = 0.0
>         for i in 2:n
>             r += (x[i] - x[i-1]) * (y[i] + y[i-1])
>
>         end
>         r / 2.0
>     end
>
>
I'm not sure it's behavior we should "rely on", but the if branch for n ==
1 isn't necessary in this for loop, although perhaps it was included to aid
the comparison. A range of 2:1 is a zero-length iteration, so the loop will
not run even once.  Try this:

julia> [2:1]
0-element Array{Int64,1}

If  we are being pedantic on types, then the result of the integral should
at least be a floating point.  Granted, I am not sure of what the use case
for integer vector inputs would be, but I doubt *if* someone used them that
they'd want an integer result in return.  (This would be similar to sqrt(),
for example.)

Cameron

Reply via email to