def cosh(obj: AADVariable) -> AADVariable: """ SINH OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.cosh(val) n_der = der * np.sinh(val) return AADVariable(n_val, n_der, name=name)
def tan(obj: AADVariable) -> AADVariable: """ TAN OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.tan(val) n_der = der * 1 / (np.cos(val)**2) return AADVariable(n_val, n_der, name=name)
def log(obj: AADVariable) -> AADVariable: """ LOG BASE E OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.log(val) n_der = der * 1 / (val) return AADVariable(n_val, n_der, name=name)
def abs(obj: AADVariable) -> AADVariable: """ ABSOLUTE VALUE OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.abs(val) n_der = der * val / np.abs(val) return AADVariable(n_val, n_der, name=name)
def sqrt(obj: AADVariable) -> AADVariable: """ ARCTAN OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.sqrt(val) n_der = der * 0.5 * 1 / (np.sqrt(val)) return AADVariable(n_val, n_der, name=name)
def arctan(obj: AADVariable) -> AADVariable: """ ARCTAN OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.arctan(val) n_der = der * 1 / (val**2 + 1) # return AADVariable(n_val, n_der, name=name)
def arccos(obj: AADVariable) -> AADVariable: """ ARCCOS OPERATOR: INPUT: REAL NUMBER OR AAD-VARIABLE RETURNS: AAD-VARIABLE TYPE """ name = obj.name val = obj.val der = obj.der n_val = np.arccos(val) n_der = der * -1 / (np.sqrt(1 - (val**2))) # return AADVariable(n_val, n_der, name=name)