Skip to content

Commit

Permalink
updates to the maximum & minimum codes
Browse files Browse the repository at this point in the history
  • Loading branch information
lindahua committed Jan 4, 2014
1 parent 3b1a8ea commit 9ecc321
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
8 changes: 4 additions & 4 deletions base/abstractarray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1584,7 +1584,7 @@ end
prod{T}(A::AbstractArray{T}) = prod_rgn(A, 1, length(A))


function minimum{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
function minimum_rgn{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
if first > last; error("argument range must not be empty"); end

# locate the first non NaN number
Expand All @@ -1605,7 +1605,7 @@ function minimum{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
v
end

function maximum{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
function maximum_rgn{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
if first > last; error("argument range must not be empty"); end

# locate the first non NaN number
Expand All @@ -1626,8 +1626,8 @@ function maximum{T<:Real}(A::AbstractArray{T}, first::Int, last::Int)
v
end

minimum{T<:Real}(A::AbstractArray{T}) = minimum(A, 1, length(A))
maximum{T<:Real}(A::AbstractArray{T}) = maximum(A, 1, length(A))
minimum{T<:Real}(A::AbstractArray{T}) = minimum_rgn(A, 1, length(A))
maximum{T<:Real}(A::AbstractArray{T}) = maximum_rgn(A, 1, length(A))

# extrema

Expand Down
20 changes: 17 additions & 3 deletions base/reducedim.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ reduced_dims{N}(siz::NTuple{N,Int}, d::Int, rd::Int) = d == 1 ? tuple(rd, siz[d+

reduced_dims{N}(siz::NTuple{N,Int}, d::Int) = reduced_dims(siz, d, 1)

reduced_dims0{N}(siz::NTuple{N,Int}, d::Int) = reduced_dims(siz, d, (siz[d] == 0 ? 0 : 1))
reduced_dims0{N}(siz::NTuple{N,Int}, d::Int) = 1 <= d <= N ? reduced_dims(siz, d, (siz[d] == 0 ? 0 : 1)) : siz

function reduced_dims{N}(siz::NTuple{N,Int}, region)
rsiz = [siz...]
Expand Down Expand Up @@ -389,8 +389,22 @@ function vmin!(dst::Array, od::Int, a::Array, oa::Int, n::Int)
end
end

@code_reducedim maximum scalarmax maximum vcopy! vmax!
@code_reducedim minimum scalarmin minimum vcopy! vmin!
@code_reducedim maximum scalarmax maximum_rgn vcopy! vmax!
@code_reducedim minimum scalarmin minimum_rgn vcopy! vmin!

function maximum{T}(a::Array{T}, region)
dst = Array(T, reduced_dims0(a, region))
if !isempty(dst)
maximum!(dst, a, region)
end
return dst
end

function minimum{T}(a::Array{T}, region)
dst = Array(T, reduced_dims0(a, region))
if !isempty(dst)
minimum!(dst, a, region)
end
return dst
end

0 comments on commit 9ecc321

Please sign in to comment.