ó
 nTMc           @   s}   d  Z  d d l m Z e Z d d d „  ƒ  YZ d „  Z d „  Z d d „ Z d	 e f d
 „  ƒ  YZ	 d e	 f d „  ƒ  YZ
 d S(   s^  
Automatic differentiation for functions with any number of variables

Instances of the class DerivVar represent the values of a function and
its partial X{derivatives} with respect to a list of variables. All
common mathematical operations and functions are available for these
numbers. There is no restriction on the type of the numbers fed into
the code; it works for real and complex numbers as well as for any
Python type that implements the necessary operations.

This module is as far as possible compatible with the n-th order
derivatives module Derivatives. If only first-order derivatives
are required, this module is faster than the general one.

Example::

  print sin(DerivVar(2))

produces the output::

  (0.909297426826, [-0.416146836547])

The first number is the value of sin(2); the number in the following
list is the value of the derivative of sin(x) at x=2, i.e. cos(2).

When there is more than one variable, DerivVar must be called with
an integer second argument that specifies the number of the variable.

Example::

    >>>x = DerivVar(7., 0)
    >>>y = DerivVar(42., 1)
    >>>z = DerivVar(pi, 2)
    >>>print (sqrt(pow(x,2)+pow(y,2)+pow(z,2)))

    produces the output

    >>>(42.6950770511, [0.163953328662, 0.98371997197, 0.0735820818365])

The numbers in the list are the partial derivatives with respect
to x, y, and z, respectively.

Note: It doesn't make sense to use DerivVar with different values
for the same variable index in one calculation, but there is
no check for this. I.e.::

    >>>print DerivVar(3, 0)+DerivVar(5, 0)

    produces

    >>>(8, [2])

but this result is meaningless.
iÿÿÿÿ(   t   Nt   DerivVarc           B   sU  e  Z d  Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d% d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d  „  Z# d! „  Z$ d" „  Z% d# „  Z& d$ „  Z' RS(&   sF   
    Numerical variable with automatic derivatives of first order
    i    i   c         C   s‡   | d k  s | d k r' t  d ƒ ‚ n  | |  _ | d k rH g  |  _ n; t | ƒ t g  ƒ k rl | |  _ n | d g d g |  _ d S(   sù  
        @param value: the numerical value of the variable
        @type value: number
        @param index: the variable index, which serves to
            distinguish between variables and as an index for
            the derivative lists. Each explicitly created
            instance of DerivVar must have a unique index.
        @type index: C{int}
        @param order: the derivative order, must be zero or one
        @type order: C{int}
        @raise ValueError: if order < 0 or order > 1
        i    i   s   Only first-order derivativesN(   t
   ValueErrort   valuet   derivt   type(   t   selfR   t   indext   order(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __init__J   s    	c         C   sE   | d k  s | d k r' t  d ƒ ‚ n  | d k r: |  j S|  j Sd S(   s×   
        @param order: derivative order
        @type order: C{int}
        @return: a list of all derivatives of the given order
        @rtype: C{list}
        @raise ValueError: if order < 0 or order > 1
        i    i   s   Index out of rangeN(   R   R   R   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __getitem__a   s
    c         C   s   |  j  |  j f S(   N(   R   R   (   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __repr__p   s    c         C   s   t  |  j |  j f ƒ S(   N(   t   strR   R   (   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __str__s   s    c         C   s-   t  | ƒ r |  | f S|  t | g  ƒ f Sd  S(   N(   t
   isDerivVarR   (   R   t   other(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt
   __coerce__v   s    
c         C   s   t  |  j | j ƒ S(   N(   t   cmpR   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __cmp__|   s    c         C   s    t  |  j t d „  |  j ƒ ƒ S(   Nc         S   s   |  S(   N(    (   t   a(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   <lambda>€   s    (   R   R   t   mapR   (   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __neg__   s    c         C   s   |  S(   N(    (   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __pos__‚   s    c         C   s5   t  |  j ƒ } t | t |  j | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R   t   d(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ‡   s    (   t   absR   R   R   R   (   R   t   absvalue(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __abs__…   s    c         C   s   |  j  d k S(   Ni    (   R   (   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __nonzero__‰   s    c         C   s,   t  |  j | j t d „  |  j | j ƒ ƒ S(   Nc         S   s   |  | S(   N(    (   R   t   b(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   Ž   s    (   R   R   t	   _mapderivR   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __add__Œ   s    c         C   s,   t  |  j | j t d „  |  j | j ƒ ƒ S(   Nc         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   “   s    (   R   R   R   R   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __sub__‘   s    c         C   s,   t  | j |  j t d „  | j |  j ƒ ƒ S(   Nc         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   —   s    (   R   R   R   R   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __rsub__•   s    c         C   sP   t  |  j | j t d „  t | j d „ |  j ƒ t |  j d „ | j ƒ ƒ ƒ S(   Nc         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ›   s    c         S   s   | |  S(   N(    (   t   xt   f(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   œ   s    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR      s    (   R   R   R   R   R   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __mul__™   s    	c         C   sw   | j  s t d ƒ ‚ n  d | j  } t |  j  | t d „  t | d „ |  j ƒ t |  j  | | d „ | j ƒ ƒ ƒ S(   Ns   DerivVar divisiong      ð?c         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ¥   s    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ¦   s    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   §   s    (   R   t   ZeroDivisionErrorR   R   R   R   (   R   R   t   inv(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __div__    s    		c         C   s   | |  S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __rdiv__©   s    c         C   sÖ   | d  k	 r t d ƒ ‚ n  t |  j | j d ƒ } | |  j } t | | j d „ |  j ƒ } t | ƒ rÅ t | j ƒ d k rÅ t | t j	 |  j ƒ d „ | j ƒ } t
 | t d „  | | ƒ ƒ St
 | | ƒ Sd  S(   Ns'   DerivVar does not support ternary pow()i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ±   s    i    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ³   s    c         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   µ   s    (   t   Nonet	   TypeErrort   powR   R   R   R   t   lent   Numerict   logR   R   (   R   R   t   zt   val1t   valt   deriv1t   deriv2(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __pow__¬   s    !c         C   s   t  | |  ƒ S(   N(   R+   (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __rpow__¹   s    c         C   s1   t  j |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ¾   s    (   R-   t   expR   R   R   R   (   R   t   v(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR6   ¼   s    c         C   s>   t  j |  j ƒ } d |  j } t | t | d „ |  j ƒ ƒ S(   Ng      ð?c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   Ã   s    (   R-   R.   R   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR.   À   s    c         C   sK   t  j |  j ƒ } d |  j t  j d ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð?i
   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   È   s    (   R-   t   log10R   R.   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR8   Å   s    c         C   s;   t  j |  j ƒ } d | } t | t | d „ |  j ƒ ƒ S(   Ng      à?c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   Í   s    (   R-   t   sqrtR   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR9   Ê   s    
c         C   s7   |  j  d k r t d ƒ ‚ n  t t j |  j  ƒ d ƒ S(   Ni    s"   can't differentiate sign() at zero(   R   R   R   R-   t   sign(   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR:   Ï   s    c         C   sC   t  j |  j ƒ } t  j |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ×   s    (   R-   t   sinR   t   cosR   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR;   Ô   s    c         C   sD   t  j |  j ƒ } t  j |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   Ü   s    (   R-   R<   R   R;   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR<   Ù   s    c         C   sD   t  j |  j ƒ } d t | d ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð?i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   á   s    (   R-   t   tanR   R+   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR=   Þ   s    c         C   sC   t  j |  j ƒ } t  j |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   æ   s    (   R-   t   sinhR   t   coshR   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR>   ã   s    c         C   sC   t  j |  j ƒ } t  j |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Nc         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ë   s    (   R-   R?   R   R>   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR?   è   s    c         C   sP   t  j |  j ƒ } d t t  j |  j ƒ d ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð?i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ð   s    (   R-   t   tanhR   R+   R?   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR@   í   s    c         C   sT   t  j |  j ƒ } d t  j d t |  j d ƒ ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð?i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   õ   s    (   R-   t   arcsinR   R9   R+   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRA   ò   s    #c         C   sT   t  j |  j ƒ } d t  j d t |  j d ƒ ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð¿g      ð?i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ú   s    (   R-   t   arccosR   R9   R+   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRB   ÷   s    #c         C   sK   t  j |  j ƒ } d d t |  j d ƒ } t | t | d „ |  j ƒ ƒ S(   Ng      ð?i   c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   ÿ   s    (   R-   t   arctanR   R+   R   R   R   (   R   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRC   ü   s    c         C   sŠ   |  j  |  j  | j  | j  } |  j  | } | j  | } t t j |  j  | j  ƒ t d „  t | d „ |  j ƒ t | d „ | j ƒ ƒ ƒ S(   Nc         S   s   |  | S(   N(    (   R   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    c         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    (   R   R   R-   t   arctan2R   R   R   (   R   R   t   dent   st   o(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRD     s    	c         C   sW   d d l  m } m } | |  j ƒ } | | |  j ƒ } t | t | d „ |  j ƒ ƒ S(   Niÿÿÿÿ(   t   gammat   psic         S   s   | |  S(   N(    (   R"   R#   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    (   t   transcendentalRH   RI   R   R   R   R   (   R   RH   RI   R7   R   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRH   
  s    N((   t   __name__t
   __module__t   __doc__R	   R
   R   R   R   R   R   R   R   R   R   t   __radd__R    R!   R$   t   __rmul__R'   R(   R)   R4   R5   R6   R.   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   RC   RD   RH   (    (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR   D   sJ   																																	c         C   s   t  |  d ƒ o t  |  d ƒ S(   su   
    @param x: an arbitrary object
    @return: True if x is a DerivVar object, False otherwise
    @rtype: bool
    R   R   (   t   hasattr(   R"   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    c         C   sa   t  t | ƒ t | ƒ ƒ } | | t | ƒ d g } | | t | ƒ d g } t |  | | ƒ S(   Ni    (   t   maxR,   R   (   t   funcR   R   t   nvars(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR     s    i    c      	   C   s{   d d l  m } t |  ƒ rD t | ƒ rD t | ƒ rD | |  | | ƒ S| t |  | ƒ t | | d ƒ t | | d ƒ ƒ Sd S(   s·  
    @param x: x component of the vector
    @type x: number
    @param y: y component of the vector
    @type y: number
    @param z: z component of the vector
    @type z: number
    @param index: the DerivVar index for the x component. The y and z
                  components receive consecutive indices.
    @type index: C{int}
    @return: a vector whose components are DerivVar objects
    @rtype: L{Scientific.Geometry.Vector}
    iÿÿÿÿ(   t   Vectori   i   N(   t    Scientific.Geometry.VectorModuleRT   R   R   (   R"   t   yR/   R   RT   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   DerivVector%  s    $t   DerivFnc           B   s    e  Z d  Z d „  Z d „  Z RS(   sC   
    Function with derivatives, applicable to DerivVar objects
    c         G   s   | |  _  | |  _ d S(   s  
        @param fn: a Python function from numbers to numbers
        @param *deriv_fns: Python functions from numbers to numbers defining
                           the partial derivatives of the defined function
                           with respect to its arguments. There must be as many
                           derivative functions as the main function has
                           arguments.
        N(   t   fnt	   deriv_fns(   R   RY   RZ   (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR	   E  s    		c         G   s„  t  | ƒ t  |  j ƒ k s! t ‚ g  } g  } d } xr | D]j } t | t ƒ rŠ | j | j ƒ | j | j ƒ t | t  | j ƒ ƒ } q: | j | ƒ | j g  ƒ q: Wg  | D]! } | | t  | ƒ d g ^ q¯ } |  j	 | Œ  } g  |  j D] } | | Œ  ^ qï } | d g }	 xR t
 t  | ƒ ƒ D]> }
 g  t |	 | |
 ƒ D] \ } } | | |
 | ^ qA}	 q'W|	 r|t | |	 ƒ S| Sd S(   s  
        Apply the function to the supplied arguments. The number of arguments
        must be equal to the number of derivative functions given in the
        constructor. The arguments can be plain numbers or DerivVar objects.
        The return value is a DerivVar object.
        i    N(   R,   RZ   t   AssertionErrort
   isinstanceR   t   appendR   R   RQ   RY   t   ranget   zip(   R   t   argst   valuest   derivst   nderivsR"   R   R7   R#   t   rderivst   it   r(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   __call__Q  s(    !."<(   RK   RL   RM   R	   Rg   (    (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRX   ?  s   	t
   NumDerivFnc           B   s    e  Z d  Z d „  Z d „  Z RS(   sl   
    Function with derivatives evaluated by numerical approximation,
    applicable to DerivVar objects
    c         G   s`   g  } x@ t  t | ƒ ƒ D], } | | } | j |  j | | | ƒ ƒ q Wt j |  | | Œ d S(   s,  
        @param fn: a Python function from numbers to numbers
        @param hs: one step value h for each argument of the function.
                   The ith partial derivative is calculated
                   symmetrically as
                   (f(xs[i]+hs[i])-f(xs[i]-hs[i]))/(2.*hs[i]).
        N(   R^   R,   R]   t   _makeDerivFnRX   R	   (   R   RY   t   hsRZ   Re   t   h(    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyR	   v  s
    
 c            s   ‡  ‡ ‡ f d †  } | S(   Nc             sf   |  ˆ   |  ˆ  ˆ f |  ˆ  d } |  ˆ   |  ˆ  ˆ f |  ˆ  d } ˆ | Œ  ˆ | Œ  d ˆ S(   Ni   g       @(    (   R`   t   args_pt   args_m(   Re   Rk   RY   (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   deriv_fn…  s    %%(    (   R   RY   Re   Rk   Rn   (    (   Re   Rk   RY   sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRi   „  s    (   RK   RL   RM   R	   Ri   (    (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyRh   o  s   	N(    (   RM   t
   ScientificR    R-   R   R   R   RW   t   objectRX   Rh   (    (    (    sF   C:\Python27\Lib\site-packages\Scientific\Functions\FirstDerivatives.pyt   <module><   s    Î	
		0