from langchain_core.tools import tool import cmath import math @tool def add(a: int, b: int) -> int: """ Adds two numbers. Args: a (integer): the first number b (integer): the second number """ return a + b @tool def sub(a: int, b: int) -> int: """ Subracts two numbers. Args: a (integer): the first number b (integer): the second number """ return a - b @tool def mul(a: int, b: int) -> int: """ multiplies two numbers. Args: a (integer): the first number b (integer): the second number """ return a * b @tool def div(a: int, b: int) -> float: """ divides two numbers and gave float as a result Args: a (integer): the first number b (integer): the second number """ return a / b @tool def floor_div(a: int, b: int) -> int: """ divides two numbers and gave integr as a result Args: a (integer): the first number b (integer): the second number """ return a // b @tool def square(a: int) -> int: """ returns square of the number Args: a (integer): the number """ return a * a @tool def mod(a: int, b: int) -> int: """ Modulus of two numbers. Args: a (integer): the first number b (integer): the second number """ return a % b @tool def pow(a: int, b: int) -> int: """ Get the power of two numbers Args: a (integer): the first number b (integer): the second number """ return a ** b @tool def square_root(a: int): """ Square root of the number Args: a (integer): the number """ if a < 0: return cmath.sqrt(a) else: return a ** 0.5 @tool def absolute(a: int) -> int: """ returns absolute value of the number Args: a (integer): the number """ return a if a >= 0 else -a @tool def gcd(a: int, b: int) -> int: """ returns gcd of two numbers using recursion Args: a (integer): the first number b (integer): the second number """ if b == 0: return a return gcd(b, a % b) @tool def lcm(a: int, b: int) -> int: """ returns lcm of two numbers Args: a (integer): the first number b (integer): the second number """ return absolute(a * b) // gcd(a, b) @tool def factorial(a: int) -> int: """ returns factorial of a number Args: a (integer): the number """ if a <= 1: return 1 return a * factorial(a - 1)