#automaticaly generated by derivate.py

from math import sin, cos

def ZEODerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(-sin(ka)*sin(om)*cos(ph) + sin(ph)*cos(ka))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*cos(om)*cos(ph)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2
def ZEODerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(-sin(ka)*sin(ph) - sin(om)*cos(ka)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*cos(om)*cos(ph)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2

def ZPtDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) + f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*cos(om)*cos(ph)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2
def ZPtDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) + f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*cos(om)*cos(ph)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2

def YEODerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*sin(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 + f*sin(ka)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))
def YEODerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*sin(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 + f*cos(ka)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))

def KappaDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))
def KappaDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(-sin(ka)*sin(om)*sin(ph) - cos(ka)*cos(ph)) - (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(-sin(ka)*sin(om)*cos(ph) + sin(ph)*cos(ka)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))

def OmegaDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*((-xo_c + xo_pt)*sin(om)*sin(ph) + (-yo_c + yo_pt)*cos(om) + (-zo_c + zo_pt)*sin(om)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 - f*((-xo_c + xo_pt)*sin(ka)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(ka)*sin(om) + (-zo_c + zo_pt)*sin(ka)*cos(om)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))
def OmegaDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*((-xo_c + xo_pt)*sin(om)*sin(ph) + (-yo_c + yo_pt)*cos(om) + (-zo_c + zo_pt)*sin(om)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 - f*((-xo_c + xo_pt)*sin(ph)*cos(ka)*cos(om) - (-yo_c + yo_pt)*sin(om)*cos(ka) + (-zo_c + zo_pt)*cos(ka)*cos(om)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))

def FocalDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))
def FocalDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))

def YPtDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*sin(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 - f*sin(ka)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))
def YPtDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*sin(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2 - f*cos(ka)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))

def YCenterDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return 0
def YCenterDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return 1

def XCenterDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return 1
def XCenterDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return 0

def XEODerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(-sin(ka)*sin(om)*sin(ph) - cos(ka)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*sin(ph)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2
def XEODerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(sin(ka)*cos(ph) - sin(om)*sin(ph)*cos(ka))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*sin(ph)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2

def PhiDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)) + (-zo_c + zo_pt)*(-sin(ka)*sin(om)*sin(ph) - cos(ka)*cos(ph)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*(-(-xo_c + xo_pt)*cos(om)*cos(ph) + (-zo_c + zo_pt)*sin(ph)*cos(om))*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2
def PhiDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*((-xo_c + xo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)) + (-zo_c + zo_pt)*(sin(ka)*cos(ph) - sin(om)*sin(ph)*cos(ka)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) - f*(-(-xo_c + xo_pt)*cos(om)*cos(ph) + (-zo_c + zo_pt)*sin(ph)*cos(om))*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2

def XPtDerX(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) + f*((-xo_c + xo_pt)*(sin(ka)*sin(om)*sin(ph) + cos(ka)*cos(ph)) + (-yo_c + yo_pt)*sin(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(om)*cos(ph) - sin(ph)*cos(ka)))*sin(ph)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2
def XPtDerY(zo_c, zo_pt, yo_c, ka, om, f, yo_pt, yi_c, xi_c, xo_c, ph, xo_pt, **kwargs):
    return -f*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka))/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph)) + f*((-xo_c + xo_pt)*(-sin(ka)*cos(ph) + sin(om)*sin(ph)*cos(ka)) + (-yo_c + yo_pt)*cos(ka)*cos(om) + (-zo_c + zo_pt)*(sin(ka)*sin(ph) + sin(om)*cos(ka)*cos(ph)))*sin(ph)*cos(om)/((-xo_c + xo_pt)*sin(ph)*cos(om) - (-yo_c + yo_pt)*sin(om) + (-zo_c + zo_pt)*cos(om)*cos(ph))**2

x_derivs={
        'zo_c' : ZEODerX,
        'zo_pt' : ZPtDerX,
        'yo_c' : YEODerX,
        'ka' : KappaDerX,
        'om' : OmegaDerX,
        'f' : FocalDerX,
        'yo_pt' : YPtDerX,
        'yi_c' : YCenterDerX,
        'xi_c' : XCenterDerX,
        'xo_c' : XEODerX,
        'ph' : PhiDerX,
        'xo_pt' : XPtDerX,
}
y_derivs={
        'zo_c' : ZEODerY,
        'zo_pt' : ZPtDerY,
        'yo_c' : YEODerY,
        'ka' : KappaDerY,
        'om' : OmegaDerY,
        'f' : FocalDerY,
        'yo_pt' : YPtDerY,
        'yi_c' : YCenterDerY,
        'xi_c' : XCenterDerY,
        'xo_c' : XEODerY,
        'ph' : PhiDerY,
        'xo_pt' : XPtDerY,
}
