public void ThrowIfZeroAccuracy()
        {
            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy = 0
            };

            ShootingSolver.Solve();
        }
        public void ThrowIfNegativeAccuracy()
        {
            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy = -1
            };

            ShootingSolver.Solve();
        }
        public void ThrowIfMissingAccuracyMeasure()
        {
            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy = 1,
                Aggressiveness  = 1
            };

            ShootingSolver.Solve();
        }
        public void ThrowIfZeroAggressiveness()
        {
            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy = 1,
                Aggressiveness  = 0
            };

            ShootingSolver.Solve();
        }
        public void ThrowIfMissingSolver()
        {
            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy         = 1,
                Aggressiveness          = 1,
                SolutionAccuracyMeasure = () => 0,
                Solver = null
            };

            ShootingSolver.Solve();
        }
        private void InitShootingSolver_Dummy()
        {
            DesiredAccuracy = 1;
            Aggressiveness  = 1;

            InitRseSolver_Dummy();

            ShootingSolver = new RseShootingSolver
            {
                SolutionAccuracyMeasure = () => 10 * DesiredAccuracy
            };
        }
        public void ThrowIfTooManyAttempts()
        {
            InitRseSolver_Dummy();

            ShootingSolver = new RseShootingSolver
            {
                DesiredAccuracy         = 1,
                Aggressiveness          = 1,
                SolutionAccuracyMeasure = () => 10 * ShootingSolver.DesiredAccuracy,
                Solver    = Solver,
                MaxTrials = -1
            };

            ShootingSolver.Solve();
        }
        private void InitShootingSolver_SinExactInput()
        {
            DesiredAccuracy   = 1e-7;
            Aggressiveness    = 1;
            MaxShootingTrials = 1;

            InitRseSolver_SinExactInput();

            ShootingSolver = new RseShootingSolver
            {
                Solver                  = Solver,
                DesiredAccuracy         = DesiredAccuracy,
                Aggressiveness          = Aggressiveness,
                SolutionAccuracyMeasure = () => ComplexMath.Abs(Solver.SolutionValues[5000])
            };
        }
        private void InitShootingSolver_ComplexEigenvalueProblem()
        {
            DesiredAccuracy   = 1e-7;
            Aggressiveness    = 0.2;
            MaxShootingTrials = 100;

            InitRseSolver_ComplexEigenvalueProblem();

            ShootingSolver = new RseShootingSolver
            {
                Solver                  = Solver,
                DesiredAccuracy         = DesiredAccuracy,
                Aggressiveness          = Aggressiveness,
                MaxTrials               = MaxShootingTrials,
                Eigenvalue              = new Complex(0.3, -1.5),
                SolutionAccuracyMeasure = () => ComplexMath.Abs(Solver.SolutionValues[10000] - ComplexTestFunction(Math.PI))
            };
        }