/// <summary>Initializes a new instance of the <see cref="BrentOptimizer"/> class.
        /// </summary>
        /// <param name="bracketingApproach">The Bracketing approach.</param>
        /// <param name="abortCondition">The abort (stopping) condition for the Brent optimizer.</param>
        public BrentOptimizer(IMinimumBracketing bracketingApproach, BrentOptimizerAbortCondition abortCondition)
        {
            BracketingApproach = bracketingApproach ?? throw new ArgumentNullException(nameof(bracketingApproach));
            AbortCondition     = abortCondition ?? throw new ArgumentNullException(nameof(abortCondition));

            m_Name = new IdentifierString(String.Format("Brent; {0}", abortCondition.ToString()));
            m_ObjectiveFunctionFactory = new OneDimOptimizerFunctionFactory();
            m_ConstraintDescriptor     = new OneDimOptimizerConstraintFactory(OneDimOptimizerConstraintFactory.ConstraintType.All);
        }
 /// <summary>Initializes the <see cref="BrentOptimizer" /> class.
 /// </summary>
 static BrentOptimizer()
 {
     StandardAbortCondition    = BrentOptimizerAbortCondition.Create();
     StandardMinimumBracketing = new DownhillBracketing();
 }