import numpy as np import gradio as gr def solve_polynomial(coeffs): """ Find roots of a polynomial with given coefficients. coeffs: list or array-like, highest degree first (e.g., [a, b, c, d, ...]) Returns a numpy array of roots (complex or real). """ if not coeffs or all(c == 0 for c in coeffs): raise ValueError("Coefficient list must not be empty or all zeros.") return np.roots(coeffs) def polynomial_solver_interface(coeffs): """ Gradio wrapper for solving higher order polynomials. coeffs: comma-separated string of coefficients, highest degree first. """ import numpy as np try: coeff_list = [float(c) for c in coeffs.split(",") if c.strip() != ""] if not coeff_list: return "Please enter at least one coefficient." roots = solve_polynomial(coeff_list) output = f"Polynomial coefficients: {coeff_list}\n\n" for i, root in enumerate(roots): if np.isreal(root): output += f"Root {i+1}: {root.real}\n" else: output += f"Root {i+1}: {root}\n" return output except Exception as e: return f"Error: {e}" poly_solver_interface = gr.Interface( fn=polynomial_solver_interface, inputs=gr.Textbox(label="Coefficients (comma-separated, highest degree first)", placeholder="e.g. 1, 0, -2, -8"), outputs="text", title="Polynomial Equation Solver", description=""" Find roots of any polynomial equation. Enter the coefficients separated by commas, starting with the highest degree. Example: For x⁴ - 2x² - 8 = 0, enter: 1, 0, -2, 0, -8 Supports real and complex roots for polynomials of any degree. """, examples=[ ["1, 0, -2, 0, -8"], ["2, -3, 0, 1"], ["1, -6, 11, -6"] ] )