class_docstr: Compressed row representation window.
  Stores the range of active grid cells in each column.
  Any window with contiguous columns can be expressed as a CRWindow.
  Supports efficient iterative construction and updates.
docstr: Extends the active cells in the column by the range (start,end).
  Ranges smaller than the current one are ignored.
  Note (1, m+1), not (0,m) corresponds to an entire column.
  
  Parameters
  ----------
  column
      Column int index
  start
      Row element int index where start >= 1 and start <= end
  end
      Row element int index where end >= 1 and end <= m+1
docstr_tok: ["Extends","the","active","cells","in","the","column","by","the","range","(","start",",","end",")",".","Ranges","smaller","than","the","current","one","are","ignored",".","Note","(","1",",","m+1",")",",","not","(","0",",","m",")","corresponds","to","an","entire","column",".","Parameters","--","--","--","--","--","column","Column","int","index","start","Row","element","int","index","where","start",">","=","1","and","start","<","=","end","end","Row","element","int","index","where","end",">","=","1","and","end","<","=","m+1"]
code: def add_range(self, column: int, start: int, end: int):
      """Extends the active cells in the column by the range (start,end).
      Ranges smaller than the current one are ignored.
      Note (1, m+1), not (0,m) corresponds to an entire column.
  
      Parameters
      ----------
      column
          Column int index
      start
          Row element int index where start >= 1 and start <= end
      end
          Row element int index where end >= 1 and end <= m+1
      """
  
      if start < 1 or start > self.m:
          raise IndexError(f"Start must be >=1 and <=m, got {start}")
      if end < 1 or end > self.m + 1:
          raise IndexError(f"End must be >=1 and <=m+1, got {end}")
  
      start_idx = column * 2 + 0
      end_idx = column * 2 + 1
  
      orig_start = self.column_ranges[start_idx]
      orig_end = self.column_ranges[end_idx]
  
      start, end = min(orig_start, start), max(orig_end, end)
  
      orig_row_length = gtz(orig_end - orig_start)
      row_length = gtz(end - start)
  
      self.length += row_length - orig_row_length
      self.column_ranges[start_idx] = start
      self.column_ranges[end_idx] = end
  
imports: import array
  from abc import ABC, abstractmethod
  from math import atan, tan
  from typing import Tuple
  import numpy
  from darts.logging import raise_if, raise_if_not
label_desc: Use image node_id 2 for calling the CRWindow obj's underlying member method code with example usage: obj.add_range(column, start, end) without return types