Skip to content

Commit ad2082c

Browse files
committed
Let findmax/min work with Complex and real-valued f
1 parent fe57c0b commit ad2082c

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

src/host/indexing.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,5 +261,5 @@ end
261261

262262
Base.findmax(a::AnyGPUArray; dims=:) = findminmax(Base.isless, identity, a; init=typemin(eltype(a)), dims)
263263
Base.findmin(a::AnyGPUArray; dims=:) = findminmax(Base.isgreater, identity, a; init=typemax(eltype(a)), dims)
264-
Base.findmax(f::Function, a::AnyGPUArray; dims=:) = findminmax(Base.isless, f, a; init=typemin(eltype(a)), dims)
265-
Base.findmin(f::Function, a::AnyGPUArray; dims=:) = findminmax(Base.isgreater, f, a; init=typemax(eltype(a)), dims)
264+
Base.findmax(f::Function, a::AnyGPUArray; dims=:) = findminmax(Base.isless, f, a; init=typemin(f(zero(eltype(a)))), dims)
265+
Base.findmin(f::Function, a::AnyGPUArray; dims=:) = findminmax(Base.isgreater, f, a; init=typemax(f(zero(eltype(a)))), dims)

test/testsuite/indexing.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,11 @@ end
274274
@test isequal(findmin(x; dims=2), Array.(findmin(AT(x); dims=2)))
275275
@test isequal(findmin(x; dims=3), Array.(findmin(AT(x); dims=3)))
276276
end
277+
# test with Complex elements as long as f outputs a real
278+
let x = rand(ComplexF32, 100)
279+
@test findmax(abs, x) == findmax(abs, AT(x))
280+
@test findmax(abs, x; dims=1) == Array.(findmax(abs, AT(x); dims=1))
281+
end
277282
end
278283

279284
@testset "argmax & argmin" begin

0 commit comments

Comments
 (0)