math.sin(num):map -> math.cos(num)
math.cos(num):map -> -math.sin(num)
math.tan(num):map -> 1 / math.cos(num) ** 2
math.exp(num):map -> math.exp(num)
math.log(num):map -> 1 / num
math.log10(num):map -> 1 / (num * math.log(10))
math.asin(num):map -> 1 / math.sqrt(1 - num ** 2)
math.acos(num):map -> (-1) / math.sqrt(1 - num ** 2)
math.atan(num):map -> 1 / (1 + num ** 2)
math.sqrt(num):map -> 1 / (2 * math.sqrt(num))
{ x ** 2 } -> 2 * x
{ x ** 3 } -> 3 * x ** 2
{ x ** 4 } -> 4 * x ** 3
{ a ** x } -> math.log(a) * a ** x
{ math.sin(x) } -> math.cos(x)
{ math.cos(x) } -> -math.sin(x)
{ math.tan(x) } -> 1 / math.cos(x) ** 2
{ math.exp(x) } -> math.exp(x)
{ math.log(x) } -> 1 / x
{ math.log10(x) } -> 1 / (x * math.log(10))
{ math.asin(x) } -> 1 / math.sqrt(1 - x ** 2)
{ math.acos(x) } -> (-1) / math.sqrt(1 - x ** 2)
{ math.atan(x) } -> 1 / (1 + x ** 2)
{ math.sqrt(x) } -> 1 / (2 * math.sqrt(x))
{ math.sin(x) ** 2 } -> math.cos(x) * 2 * math.sin(x)
{ math.sin(x ** 2) } -> math.cos(x ** 2) * (2 * x)
{ math.log(math.sin(x)) } -> (1 / math.sin(x)) * math.cos(x)
{ x ** 2 * math.sin(x) } -> 2 * x * math.sin(x) + x ** 2 * math.cos(x)
{ math.sin(x) / x ** 2 } -> (math.cos(x) * x ** 2 - math.sin(x) * (2 * x)) / x ** 2 ** 2
{ 3 ** 2 * x } -> 2 * math.log(3) * 3 ** 2 * x
{ math.log((x ** 2 + 1)) } -> (1 / (x ** 2 + 1)) * (2 * x)
{ (x - 1) ** 2 * (x - 2) ** 3 / (x - 5) ** 2 } -> ((2 * (x - 1) * (x - 2) ** 3 + (x - 1) ** 2 * (3 * (x - 2) ** 2)) * (x - 5) ** 2 - (x - 1) ** 2 * (x - 2) ** 3 * (2 * (x - 5))) / (x - 5) ** 2 ** 2
{ math.sin(2 * x - 3) } -> math.cos(2 * x - 3) * 2
{ math.cos(x) ** 2 } -> -math.sin(x) * 2 * math.cos(x)
{ (2 * x - 1) ** 3 } -> 6 * (2 * x - 1) ** 2
{ math.sqrt(x ** 2 + 2 * x + 3) } -> (1 / (2 * math.sqrt(x ** 2 + 2 * x + 3))) * (2 * x + 2)
{ 1 / x } -> (-1) / x ** 2
{ math.exp(x) + math.exp(-x) } -> math.exp(x) - math.exp(-x)
{ math.exp(x) - math.exp(-x) } -> math.exp(x) + math.exp(-x)
{ (math.sin(x + 2) + x + 2) * (math.sin(x + 3) + x + 3) } -> (math.cos(x + 2) + 1) * (math.sin(x + 3) + x + 3) + (math.sin(x + 2) + x + 2) * (math.cos(x + 3) + 1)
{ math.sin(math.sin(x ** 2 / 3)) } -> math.cos(math.sin(x ** 2 / 3)) * (math.cos(x ** 2 / 3) * ((2 * x * 3) / 9))
