static void Main(string[] args) { var sim = new ToffoliSimulator(); var evaluationPoints = new QArray <double>( new double[] { 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 } ); var polynomialCoefficients = new QArray <double>( new double[] { 0.9992759725166501, -0.16566707016968898, 0.007958079331694682, -0.0001450780334861007 } ); var odd = true; var even = false; Debug.Assert(!(odd && even)); System.Console.Write($"Evaluating P(x) = {polynomialCoefficients[0]}"); if (odd) { System.Console.Write("*x"); } for (int d = 1; d < polynomialCoefficients.Length; ++d) { System.Console.Write($" + {polynomialCoefficients[d]}*" + $"x^{d + (odd ? d+1 : 0) + (even ? d : 0)}"); } System.Console.Write(".\n"); int pointPos = 3; int numBits = 64; var res = EvaluatePolynomial.Run(sim, polynomialCoefficients, evaluationPoints, numBits, pointPos, odd, even).Result; for (int i = 0; i < res.Length; ++i) { System.Console.WriteLine($"P({evaluationPoints[i]}) = {res[i]}. " + $"[sin(x) = {System.Math.Sin(evaluationPoints[i])}]"); } }
static void Main(string[] args) { var sim = new ResourcesEstimator(); var evaluationPoints = new QArray <double>( new double[] { 0 } ); var polynomialCoefficients = new QArray <double>( new double[] { 0.9992759725166501, -0.16566707016968898, 0.007958079331694682, -0.0001450780334861007 } ); var odd = true; var even = false; Debug.Assert(!(odd && even)); System.Console.Write($"Resource counting for P(x) = {polynomialCoefficients[0]}"); if (odd) { System.Console.Write("*x"); } for (int d = 1; d < polynomialCoefficients.Length; ++d) { System.Console.Write($" + {polynomialCoefficients[d]}*" + $"x^{d + (odd ? d+1 : 0) + (even ? d : 0)}"); } System.Console.Write(".\n"); int pointPos = 3; int numBits = 32; var res = EvaluatePolynomial.Run(sim, polynomialCoefficients, evaluationPoints, numBits, pointPos, odd, even).Result; System.Console.WriteLine(sim.ToTSV()); }