Developer: RhinoScript
Summary: Demonstrates how to solve quadratic equations in RhinoScript and python.
Most likely, the problem that you are experiencing are floating point rounding errors. Being that you only get 15 decimal places of accuracy, you can use them all up if you are dealing with small numbers.
The following algorithm should produce more accurate results:
RhinoScript
Function QuadraticSolver(a, b, c) Dim d, s0, s1 d = b * b - 4 * a * c If d < 0 Then ' No real solution QuadraticSolver = Null Else s0 = (-b - Sqr(d)) / (2 * a) s1 = (-b + Sqr(d)) / (2 * a) If Abs(s0) < Abs(s1) Then s0 = s1 s1 = c / (a * s0) QuadraticSolver = Array(s0,s1) End If End Function
Python
import math def quadraticsolver(a,b,c): d = b * b - 4 * a * c if d < 0: return # No real solution s0 = (-b - math.sqrt(d)) / (2 * a) s1 = (-b + math.sqrt(d)) / (2 * a) if abs(s0) < abs(s1): s0 = s1 s1 = c / (a * s0) return s0, s1