def test_default_forwarding(): x = np.linspace(-5, 5, 12) def f(x=x): return x**2 k = Kamodo(f=f) k['g'] = 'f+2' assert len(k.g()) == 12
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_compact_variable_syntax(): f = symbols('f', cls=UndefinedFunction) x = symbols('x') kamodo = Kamodo(f='x**2') # f also registers f(x) kamodo['g(x)'] = 'f + x' assert kamodo.g(3) == 3 ** 2 + 3