/// <summary>
 /// Creates a 2D interval based on the provided row and column intervals
 /// </summary>
 /// <param name="rowInterval"></param>
 /// <param name="colInterval"></param>
 public static Interval2D Create(Interval1D rowInterval, Interval1D colInterval)
 {
     return(new Interval2D(rowInterval, colInterval));
 }
 double *GetSubViewDataPointer(Interval1D interval)
 {
     return(m_ptr + interval.FromInclusive);
 }
 /// <summary>
 /// Creates a 2D interval based on the provided row and column intervals
 /// </summary>
 /// <param name="rowInterval"></param>
 /// <param name="colInterval"></param>
 public Interval2D(Interval1D rowInterval, Interval1D colInterval)
 {
     Rows = rowInterval;
     Cols = colInterval;
 }
 /// <summary>
 /// Gets a sub-view over the specified interval
 /// </summary>
 /// <param name="interval"></param>
 /// <returns></returns>
 public F64VectorView View(Interval1D interval)
 {
     return(new F64VectorView(GetSubViewDataPointer(interval), interval.Length));
 }