/// <summary>Creates a specific grid point curve factory.
 /// </summary>
 /// <typeparam name="TLabel">The type of the label.</typeparam>
 /// <param name="curveParametrization">The curve parametrization.</param>
 /// <returns>A factory for <see cref="IGridPointCurve&lt;TLabel&gt;"/> objects with respect to the desired interpolation and extrapolation approaches.</returns>
 public static IGridPointCurveFactory <TLabel> Create <TLabel>(GridPointCurve.Parametrization curveParametrization)
     where TLabel : IEquatable <TLabel>
 {
     return(new CurveFactory <TLabel>(
                () => GridPointCurve.Create <TLabel>(curveParametrization),
                curveParametrization,
                (gridPointCount, gridPointLabels, gridPointArguments, gridPointValues, gridPointArgumentStartIndex, gridPointValueStartIndex, gridPointArgumentIncrement, gridPointValueIncrement) => { return GridPointCurve.Create(curveParametrization, gridPointCount, gridPointLabels, gridPointArguments, gridPointValues, gridPointArgumentStartIndex, gridPointValueStartIndex, gridPointArgumentIncrement, gridPointValueIncrement); }));
 }
        /// <summary>Initializes a new instance of the <see cref="StandardGridPointCurveNoLabels"/> class.
        /// </summary>
        /// <param name="curveParametrizationFactory">The curve parametrization factory.</param>
        /// <param name="curveParametrization">The curve parametrization.</param>
        /// <param name="capacity">The number of elements that the new grid point curve can initially store.</param>
        internal StandardGridPointCurveNoLabels(GridPointCurve.Parametrization curveParametrizationFactory, ICurveDataFitting curveParametrization, int capacity = 20)
        {
            m_GridPointArguments = new List<double>(capacity);
            m_GridPointValues = new List<double>(capacity);

            m_CurveBuilder = curveParametrization;

            // do not apply any truncation (extrapolation) approach:
            m_LeftExtrapolator = GridPointCurve.Extrapolator.None.First.Create(curveParametrization);
            m_RightExtrapolator = GridPointCurve.Extrapolator.None.Last.Create(curveParametrization);

            m_ReadOnlyGridPointValues = new ReadOnlyCollection<double>(m_GridPointValues);
            m_ReadOnlyGridPointArguments = new ReadOnlyCollection<double>(m_GridPointArguments);

            m_State = GridPointCurve.State.GridPointChanged;
        }
 /// <summary>Initializes a new instance of the <see cref="Differentiable"/> class.
 /// </summary>
 /// <param name="curveParametrizationFactory">The curve parametrization factory.</param>
 /// <param name="curveParametrization">The curve parametrization.</param>
 /// <param name="capacity">The number of elements that the new grid point curve can initially store.</param>
 internal Differentiable(GridPointCurve.Parametrization curveParametrizationFactory, ICurveDataFitting curveParametrization, int capacity)
     : base(curveParametrizationFactory, curveParametrization, capacity)
 {
 }