Description
Based on discussion here.
There is no binary version of atan
function in nonlinear subsystem of MOI.
If user uses binary atan
in JuMP it registers a user defined function which is not supported with write_to_file
and also makes unary version unavailable.
Binary version of atan
commonly known as atan2
is widely used in many nonlinear problems. It is supported in almost all language's math libraries and most nonlinear optimization tools.
The best solution would be to support both unary and binary versions of atan
simultaneously within MOI.
Workaround would be to add separate atan2
function. The drawback of such approach would be incompatibility with julia
expressions witch use binary version of atan
. For example when extracting expressions from functions with Symbolics.jl
.
If we have to stick with only one version of atan
perhaps the binary should be used instead of unary. As atan(x) = atan2(x, 1)
so unary is easily implemented with binary. The only issue then is some extra computation atan2
has over regular atan
.
The same issue could be inspected for some other multimethod functions in julia.