|
|
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) |
|
|
|