
    R1i                     T    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d de	      Z
d	 Zy
)zVarious curves.    )arange   )interp)reify)	_to_arrayc                   (    e Zd Zd Zd Zed        Zy)Splinesc                    t        |      }t        |j                        dk  r|j                  |j                  dz         }|| _        |d   x| _        }|d   x| _        }||z
  | _        t        t        |            | _	        |dd  | _
        y )N   )r   r   r   )r   lenshapereshapetablelowerupper_widthr   _ncoefficients)selfr   r   r   s       U/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/curvelib.py__init__zSplines.__init__	   s    % u{{aMM%++"45E
"1X%
U"1X%
UemU$!!"I    c                 $   t        || j                  | j                        }|j                  t              }|| j                  |   z
  | j
                  |   z  }t        | j                        }t        |      |   }|D ]  }||z  }|||   z  } |S )N)	r   r   r   astypeintr   iterr   next)r   xitr   valuecs          r   __call__zSplines.__call__   s    1djj$''*HHSMA$++a.0D--.\"1%AQJEQqTME  r   c                     | j                   d   | j                   d   g}| j                   dd }t        |      D ]4  \  }}t        |      |z
  }|j                  ||z  | j                  z         6 t        |      S )Nr   r   r   )r   	enumerater   appendr   r	   )r   columnsr   r   r"   ns         r   
derivativezSplines.derivative   st    ::a=$**Q-0zz!B'l+DAqL!A%ANN1q54;;./ , wr   N)__name__
__module____qualname__r   r#   r   r*    r   r   r	   r	      s     	&	    r   r	   c                     || z
  }||z  }||z  }|}|}d|z  |z
  d|z  z
  d|z  z   }	||z   d|z  z   d|z  z
  }
| ||
|	||fS )N   r   r.   )x0y0slope0x1y1slope1widtha0a1a2a3s              r   build_spline_given_endsr=   (   su    GEe^Fe^F	B	B	FV	ad	"QrT	)B	&1R4	!B$	&Br2r2r!!r   N)__doc__numpyr   _compatibilityr   descriptorlibr   	functionsr   objectr	   r=   r.   r   r   <module>rD      s&      "     f  @"r   