**Functions for mathematics are what elementary particles are for physics. **For this reason, the Scalar Calculator and its mathematical engine, provide the syntax for defining user functions, which is as close to natural as possible. Just enter f (x) = x^2 and you are ready to go. Stay tuned to learn a bit more details! 🙂

## ⭐ Basic user defined functions

The syntax for defining user functions is as follows.

**FunctionName(param1 <, param2, ...>) = expression**

It is much easier to understand this on the basis of an example - it is really easy. Please note that **you can easily define a function depending on the function you have already defined.** It gives you great flexibility.

**Scalar code result:**

scalar > f(x) = sqrt(x) scalar > g(x) = f(x)^2 scalar > h(x) = g(x)^2 scalar > h(4) e1 = 16 scalar > g(4) e2 = 4 scalar > f(4) e3 = 2 scalar > Showing command history

**Scalar script:**

f(x) = sqrt(x) g(x) = f(x)^2 h(x) = g(x)^2 h(4) g(4) f(4)

I am sure, that from time to time, you will want to check what you have already defined. This is possible using context help. Long click on the "example /?" button, then select the user items option.

## ⭐ Drawing charts of user defined functions

Each defined function is available in the Scalar namespace. Nothing prevents you from referring to these names anywhere in the application. **In particular, it allows you to draw graphs of your own functions.**

## ⭐ User defined functions with many parameters

Nothing special in this case as Scalar has no restrictions. Simply use the similar syntax to the presented in the below example.

**Scalar code result:**

scalar > f(x,y) = sin(x) + cos(y) scalar > f(pi/6, pi/4) e1 = 1.2071067811865475 scalar > 1/2 + sqrt(2)/2 e2 = 1.2071067811865475 scalar > f(x,y,z) = x*y*z scalar > f(1,2,3) e3 = 6 scalar > f(4,5,f(1,2,3)) e4 = 120

**Scalar script:**

f(x,y) = sin(x) + cos(y) f(pi/6, pi/4) 1/2 + sqrt(2)/2 f(x,y,z) = x*y*z f(1,2,3) f(4,5,f(1,2,3))

## ⭐ Variadic user defined functions

Scalar provides a special syntax for defining functions with **any (variable) number of parameters.**

**FunctionName(...) = expression**

**"(...)"** is obligatory as it indicates that you create function with variable number of parameters.

**Additionally Scalar provides special keywords that help to build expression defining variadic functions.**

**[npar]**- number of parameters provided by the user on calculation request**par(i)**- value of parameter at index "i"

Please refer to the below example

**Scalar code result:**

scalar > f(...) = [npar] scalar > f(2) e1 = 1 scalar > f(3,1) e2 = 2 scalar > f(4,2,5,6) e3 = 4 scalar > f(...) = sum(i,1,[npar],par(i)) scalar > f(1,2,3,4,5) e4 = 15 scalar > 1+2+3+4+5 e5 = 15

**Scalar script:**

f(...) = [npar] f(2) f(3,1) f(4,2,5,6) f(...) = sum(i,1,[npar],par(i)) f(1,2,3,4,5) 1+2+3+4+5

Thank you for your time 🙂

All the bets!