From c3f3fcb88adce7d3e96ac218de0c8abce26881b0 Mon Sep 17 00:00:00 2001 From: odow Date: Thu, 11 Apr 2024 10:18:17 +1200 Subject: [PATCH] [Utilities] refactor is_maybe_real to is_complex --- src/Bridges/Constraint/bridges/functionize.jl | 2 +- src/Bridges/Constraint/bridges/norm_one.jl | 2 +- src/Bridges/Constraint/bridges/vectorize.jl | 2 +- src/Bridges/Constraint/set_map.jl | 4 +-- src/Utilities/functions.jl | 30 +++++++++---------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Bridges/Constraint/bridges/functionize.jl b/src/Bridges/Constraint/bridges/functionize.jl index c311dbd0e8..38d5ae9bf7 100644 --- a/src/Bridges/Constraint/bridges/functionize.jl +++ b/src/Bridges/Constraint/bridges/functionize.jl @@ -280,7 +280,7 @@ function MOI.supports_constraint( ::Type{G}, ::Type{<:MOI.AbstractSet}, ) where {T,F,G<:MOI.AbstractFunction} - return MOI.Utilities.is_maybe_real(G) && isfinite(conversion_cost(F, G)) + return !MOI.Utilities.is_complex(G) && isfinite(conversion_cost(F, G)) end function concrete_bridge_type( diff --git a/src/Bridges/Constraint/bridges/norm_one.jl b/src/Bridges/Constraint/bridges/norm_one.jl index 5bc0655ac2..45872797a4 100644 --- a/src/Bridges/Constraint/bridges/norm_one.jl +++ b/src/Bridges/Constraint/bridges/norm_one.jl @@ -56,7 +56,7 @@ function MOI.supports_constraint( ::Type{F}, ::Type{MOI.NormOneCone}, ) where {T,F<:MOI.AbstractVectorFunction} - return MOI.Utilities.is_maybe_real(F) + return !MOI.Utilities.is_complex(F) end function MOI.Bridges.added_constrained_variable_types(::Type{<:NormOneBridge}) diff --git a/src/Bridges/Constraint/bridges/vectorize.jl b/src/Bridges/Constraint/bridges/vectorize.jl index d314d5f55b..ee7ae02d11 100644 --- a/src/Bridges/Constraint/bridges/vectorize.jl +++ b/src/Bridges/Constraint/bridges/vectorize.jl @@ -64,7 +64,7 @@ function MOI.supports_constraint( ::Type{F}, ::Type{<:MOI.Utilities.ScalarLinearSet{T}}, ) where {T,F<:MOI.AbstractScalarFunction} - return MOI.Utilities.is_maybe_real(F) + return !MOI.Utilities.is_complex(F) end function MOI.Bridges.added_constrained_variable_types(::Type{<:VectorizeBridge}) diff --git a/src/Bridges/Constraint/set_map.jl b/src/Bridges/Constraint/set_map.jl index 590f8244f9..0232d8cdd5 100644 --- a/src/Bridges/Constraint/set_map.jl +++ b/src/Bridges/Constraint/set_map.jl @@ -51,7 +51,7 @@ function MOI.supports_constraint( ::Type{F}, ::Type{S1}, ) where {T,S1<:MOI.AbstractScalarSet,F<:MOI.AbstractScalarFunction} - return MOI.Utilities.is_maybe_real(F) + return !MOI.Utilities.is_complex(F) end function MOI.supports_constraint( @@ -59,7 +59,7 @@ function MOI.supports_constraint( ::Type{F}, ::Type{S1}, ) where {T,S1<:MOI.AbstractVectorSet,F<:MOI.AbstractVectorFunction} - return MOI.Utilities.is_maybe_real(F) + return !MOI.Utilities.is_complex(F) end function MOI.Bridges.added_constrained_variable_types( diff --git a/src/Utilities/functions.jl b/src/Utilities/functions.jl index 183c4dad9b..e3f0d5a172 100644 --- a/src/Utilities/functions.jl +++ b/src/Utilities/functions.jl @@ -2494,13 +2494,13 @@ function constant_vector( end """ - is_maybe_real(::Type{<:MOI.AbstractFunction}) + is_complex(::Type{<:MOI.AbstractFunction}) -Return `true` if the function type may return `<:Real` values. It returns false -for Complex-valued functions. +Return `true` if the function type may return `<:Complex` values. It returns +`false` for real-valued functions. -This function defaults to returning a false positive (`true`). If your new -function explicitly returns complex values, opt-out by defining a new method. +This function defaults to returning a false negatives (`false`). If your new +function explicitly returns complex values, opt-in by defining a new method. This function is mostly intended for use in the `MOI.Bridges` submodule to identify when bridges are not applicable (because the function is @@ -2511,18 +2511,18 @@ complex-valued). ```jldoctest julia> import MathOptInterface as MOI -julia> MOI.Utilities.is_maybe_real(MOI.VariableIndex) -true - -julia> MOI.Utilities.is_maybe_real(MOI.ScalarAffineFunction{Complex{Int}}) +julia> MOI.Utilities.is_complex(MOI.VariableIndex) false -julia> MOI.Utilities.is_maybe_real(MOI.ScalarNonlinearFunction) +julia> MOI.Utilities.is_complex(MOI.ScalarAffineFunction{Complex{Int}}) true + +julia> MOI.Utilities.is_complex(MOI.ScalarNonlinearFunction) +false ``` """ -is_maybe_real(::Type{<:MOI.AbstractFunction}) = true -is_maybe_real(::Type{<:MOI.ScalarAffineFunction{<:Complex}}) = false -is_maybe_real(::Type{<:MOI.VectorAffineFunction{<:Complex}}) = false -is_maybe_real(::Type{<:MOI.ScalarQuadraticFunction{<:Complex}}) = false -is_maybe_real(::Type{<:MOI.VectorQuadraticFunction{<:Complex}}) = false +is_complex(::Type{<:MOI.AbstractFunction}) = false +is_complex(::Type{<:MOI.ScalarAffineFunction{<:Complex}}) = true +is_complex(::Type{<:MOI.VectorAffineFunction{<:Complex}}) = true +is_complex(::Type{<:MOI.ScalarQuadraticFunction{<:Complex}}) = true +is_complex(::Type{<:MOI.VectorQuadraticFunction{<:Complex}}) = true