namespace QuadraticFunc
{
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
Action<object> Print = (obj) => { Debug.WriteLine(obj.ToString()); };
// Returns Quadratic (+,-)
Func<double, double, double, Tuple<double, double>> Quadratic = (a, b, c) => {
double x1 = (-b + Math.Sqrt((b * b) - ((4 * a) * c))) / (2 * a);
double x2 = (-b - Math.Sqrt((b * b) - ((4 * a) * c))) / (2 * a);
return new Tuple<double, double>(x1, x2);
};
Print(Quadratic(1, 3, -4)); // (1, -4)
Print(Quadratic(2, -4, -3)); // (2.58113883008419, -0.58113883008419)
Print(Quadratic(0, 0, 0)); // (NaN, NaN)
Tuple<double, double> result = Quadratic(1, 3, -4);
Print(result.Item1);
Print(result.Item2);
}
}
}
Simple enough. If you want to ensure exact order translate the local variable function Func(Of double,double,double,Tuple(Of double,double)) to an actual member function or static function.

