Hi SymPy Community!
My name is Khalid Darmadi. I recently graduated with a Physics degree from Universitas Gadjah Mada, and now I find myself working as a Full Stack Engineer at Bank Rakyat Indonesia—quite the leap, I know! Coming from Physics to software engineering forced me to adapt quickly, which basically means I’ve become a professional Googler. Jokes aside, I'm genuinely excited about diving into open-source contribution, but I'd prefer to do it the right way (no one likes accidental git disasters). Google Summer of Code feels like the perfect opportunity to properly learn, contribute, and become part of a community that's making math accessible to everyone. For more about my professional adventures, feel free to check out my LinkedIn profile <https://www.linkedin.com/in/khalidbagus/>. As my way of introduction, I have been researching and proposing pull requests for these issues that I've found interesting: *My Contributions* - *Issue #23510 <https://github.com/sympy/sympy/issues/23510> — * *Fix checksol Rejection for Float-Based Radicals (PR #27742 <https://github.com/sympy/sympy/pull/27742>) *For radical equations with float inputs, the unradicalization process can yield a polynomial with both a genuine positive solution and a spurious negative one. My PR modifies checksol to use high-precision RootOf evaluation, combined with an extra residual and sign check, ensuring that the correct branch is recognized without forcing a complete conversion to rationals. - *Issue #27573 <https://github.com/sympy/sympy/issues/27573> * *—* * Fix Periodic Inequalities in solveset (PR #27720 <https://github.com/sympy/sympy/pull/27720>) *I proposed a new helper function to handle periodic inequalities by “lifting” the one-period solution using an ImageSet. This change addresses the limitation where expressions such as solveset(sin(x) > 0, x, domain=S.Reals) returned only a single interval, by systematically shifting the base interval over ℝ. - *Issue #26518 <https://github.com/sympy/sympy/issues/26518> * *—* *Enhanced Error Handling in function_range* *(PR #27718 <https://github.com/sympy/sympy/pull/27718>) *Addressing errors like TypeError: 'ConditionSet' object is not iterable, my PR improves function_range by checking whether the computed set of critical points (from solving f ′(x) = 0) is finite and iterable. If the derivative remains unsolvable—even after applying simplify()—the function now raises a detailed NotImplementedError that includes the unsolvable derivative expression and suggests alternatives, such as using numerical methods or monotonicity analysis. Additionally, I see potential in refining the specialized routines (like _solve_radical) to detect unsolvable cases more robustly, which could help resolve errors like “TypeError: The computation had not completed because of the undecidable set membership is found in every candidate.” *Next Steps and Vision:* Building on the insights gained from PR #27720 <https://github.com/sympy/sympy/pull/27720> and PR #27742 <https://github.com/sympy/sympy/pull/27742>, my plan is to tackle the broader challenge of creating a new explicit inequality solver that unifies the treatment of periodic inequalities and radical equations. The silver lining between these issues is that both highlight the need for robust candidate verification under floating-point limitations without sacrificing numerical performance. My approach involves developing a solver that: - Leverages high-precision verification techniques (using RootOf and similar tools) to accurately check candidate solutions. - Handles periodicity by lifting base solutions over ℝ, ensuring that all valid intervals are returned. - Avoids a full conversion to exact arithmetic, thereby preserving the float-based workflow for numerical tasks. I look forward to collaborating further on refining these ideas and would welcome any guidance or suggestions from the community on this unified approach. Thank you for your time and support. My warmest regards, Khalid Darmadi (Link to my GitHub profile <https://github.com/khalidbagus>) -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/sympy/e453f619-3fda-49b7-bc7d-4a5789b0c104n%40googlegroups.com.