Convex.jl Adds Support for Complex-Domain Linear Programs
A Google Summer of Code student working under The Julia Language organization has announced the implementation of support for complex-domain linear programs (LPs) in Convex.jl, a modeling language for convex optimization. This development represents the first phase of a broader project aimed at enabling complex semidefinite programming. The update introduces the ability to handle complex variables and coefficients within LPs, expanding the library's capabilities beyond real-number domains. Key technical changes include redefining affine atoms to accept complex arguments, internally representing complex variables as pairs of real numbers, and introducing new atoms for extracting real and imaginary parts. Additionally, a specific atom for conjugate transpose was created to handle complex variable operations correctly. The author demonstrated the functionality through code examples that verify the correctness of the new features by comparing results against manually decomposed real-equivalent problems. This work invites the Julia community to test the new features via a development branch while the author proceeds to implement complex-domain second-order conic programming. The announcement highlights significant advancements in scientific computing tools available within the Julia ecosystem.
Wire timeline
Convex.jl Adds Support for Complex-Domain Linear Programs
A Google Summer of Code student working under The Julia Language organization has announced the implementation of support for complex-domain linear programs (LPs) in Convex.jl, a modeling language for convex optimization. This development represents the first phase of a broader project aimed at enabling complex semidefinite programming. The update introduces the ability to handle complex variables and coefficients within LPs, expanding the library's capabilities beyond real-number domains. Key technical changes include redefining affine atoms to accept complex arguments, internally representing complex variables as pairs of real numbers, and introducing new atoms for extracting real and imaginary parts. Additionally, a specific atom for conjugate transpose was created to handle complex variable operations correctly. The author demonstrated the functionality through code examples that verify the correctness of the new features by comparing results against manually decomposed real-equivalent problems. This work invites the Julia community to test the new features via a development branch while the author proceeds to implement complex-domain second-order conic programming. The announcement highlights significant advancements in scientific computing tools available within the Julia ecosystem.
JuliaLang - The Julia programming language