diff --git a/functions.py b/functions.py
index 5160daf0cfc1e2e5008db4a17d4e70ede4fa2a89..ec4d573a23da039defb438282df619195fc5a29c 100644
--- a/functions.py
+++ b/functions.py
@@ -169,7 +169,7 @@ class Exp(_Function):
         # TODO: Implement the derivative dx for this opetation and add the
         # result of the chain rule on self.dx.
         #######################################################################
-        self.dx = np.exp(self.x.data)
+        self.dx = grad * np.exp(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -184,7 +184,7 @@ class Log(_Function):
         # TODO: Implement the forward pass and put the result in self.result.
         # The notbook provide you the formulas for this operation.
         #######################################################################
-        self.result = 1/(self.x.data)
+        self.result = np.log(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -194,7 +194,7 @@ class Log(_Function):
         # TODO: Implement the derivative dx for this opetation and add the
         # result of the chain rule on self.dx.
         #######################################################################
-        self.dx = 1/(self.x.data)
+        self.dx = grad * 1/(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -209,7 +209,7 @@ class Sin(_Function):
         # TODO: Implement the forward pass and put the result in self.result.
         # The notbook provide you the formulas for this operation.
         #######################################################################
-        self.result = np.cos(self.x.data)
+        self.result = np.sin(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -219,7 +219,7 @@ class Sin(_Function):
         # TODO: Implement the derivative dx for this opetation and add the
         # result of the chain rule on self.dx.
         #######################################################################
-        self.dx = np.cos(self.x.data)
+        self.dx = grad * np.cos(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -234,7 +234,7 @@ class Cos(_Function):
         # TODO: Implement the forward pass and put the result in self.result.
         # The notbook provide you the formulas for this operation.
         #######################################################################
-        self.result = -np.sin(self.x.data)
+        self.result = np.cos(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -244,7 +244,7 @@ class Cos(_Function):
         # TODO: Implement the derivative dx for this opetation and add the
         # result of the chain rule on self.dx.
         #######################################################################
-        self.dx = -np.sin(self.x.data)
+        self.dx = grad * (-np.sin(self.x.data))
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -259,7 +259,7 @@ class Tan(_Function):
         # TODO: Implement the forward pass and put the result in self.result.
         # The notbook provide you the formulas for this operation.
         #######################################################################
-        self.result = 1/np.square(np.cos(self.x.data))
+        self.result = np.tan(self.x.data)
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################
@@ -269,7 +269,7 @@ class Tan(_Function):
         # TODO: Implement the derivative dx for this opetation and add the
         # result of the chain rule on self.dx.
         #######################################################################
-        self.dx = 1/np.square(np.cos(self.x.data))
+        self.dx = grad * (1/np.square(np.cos(self.x.data)))
         #######################################################################
         # --------------------------- END OF YOUR CODE ------------------------
         #######################################################################