def test_vectorize(): @np.vectorize @kamodofy(units='kg') def f(x, y): return x + y kamodo = Kamodo(f=f) kamodo.f([3, 4, 5], 5) kamodo.evaluate('f', x=3,y=2)
def test_symbol_replace(): k = Kamodo(f='x', verbose=True) f1, f2 = list(k.keys()) print('\n|||||',f1, f2, '||||||') k[f1] = 'x**2' assert k.f(3) == 9 print('\n|||||', *list(k.keys()), '|||||') k[f2] = 'x**3' print('\n|||||', *list(k.keys()), '|||||') assert k.f(3) == 27
def test_symbol_key(): f = symbols('f', cls=UndefinedFunction) x = Symbol('x') f_ = f(x) kamodo = Kamodo(verbose=True) kamodo[f_] = x ** 2 assert kamodo.f(3) == 9
def test_Kamodo_str(): kamodo = Kamodo('f(a,x,b) = a*x+b') try: assert kamodo.f(3, 4, 5) == 3 * 4 + 5 except: print(kamodo.signatures) print(list(kamodo.keys())) raise
def test_Kamodo_assign_by_callable(): kamodo = Kamodo(f=lambda x: x ** 2, verbose=False) assert kamodo['f'](3) == 3 ** 2 assert kamodo.f(3) == 3 ** 2 Kamodo(f=lambda x, y: x + y) def rho(x, y): return x + y kamodo['g'] = rho assert kamodo.g(3, 4) == 3 + 4
def test_Kamodo_composition(): # f, g = symbols('f g', cls=UndefinedFunction) # x = Symbol('x') kamodo = Kamodo(f="$x^2$", verbose=True) kamodo['g(x)'] = "$f(x) + x^2$" kamodo['h(x)'] = 'g**2 + x**2' try: assert kamodo.f(3) == 3 ** 2 assert kamodo.g(3) == 3 ** 2 + 3 ** 2 assert kamodo.h(3) == (3 ** 2 + 3 ** 2) ** 2 + 3 ** 2 except: print(kamodo) raise
def test_Kamodo_assign_by_expression(): kamodo = Kamodo() f, x, y = symbols('f x y') kamodo['f(x, y)'] = x ** 2 + y ** 2 assert kamodo['f'](3, 4) == 3 ** 2 + 4 ** 2 assert kamodo.f(3, 4) == 3 ** 2 + 4 ** 2
def test_Kamodo_set(): kamodo = Kamodo() kamodo['f(a,x,b)'] = '$a^x+b$' assert kamodo.f(2, 3, 4) == 2 ** 3 + 4
def test_Kamodo_latex(): kamodo = Kamodo('$f(a,x,b) = a^x+b $') assert kamodo.f(3, 4, 5) == 3 ** 4 + 5
def test_Kamodo_callable_array(): kamodo = Kamodo(f=lambda x: x ** 2) assert (kamodo.f(np.linspace(0, 1, 107)) == np.linspace(0, 1, 107) ** 2).all()
def test_Kamodo_callable(): kamodo = Kamodo(f=lambda x: x ** 2, verbose=False) assert kamodo.f(3) == 9 kamodo = Kamodo(f=lambda x, y: x ** 2 + y ** 3) assert kamodo.f(3, 4) == 3 ** 2 + 4 ** 3
def test_special_numbers(): kamodo = Kamodo() kamodo['f'] = "${}^x$".format(np.e) assert np.isclose(kamodo.f(1), np.e)