# Function Calls

Functions are packets of statements that can be used repeatedly. They can accept any number of inputs and can return any number of outputs.

The name of a function must be a valid identifier. If a function name is the same as a variable name, the variable name takes precedence. Similarly, if a user-defined function and built-in function have the same name, the user-defined function takes precedence.

`my_function(input1, input2, …, inputN)`

If a function can be called
without inputs, the ()’s are optional.`sqrt(1+b/3*5^2) % assuming b is a valid variable`

If the number of inputs passed to a function does not match the number expected by that function, an error occurs.

`sum(sqrt(1)+sqrt(2))`

It can also be assigned to a
variable.`output = sqrt(1)`

```
[out1, out2] = f(in1, in2)
function [len,first] = info(x)
len = length(x);
first = x(1);
end
[a,b] = info([4,8,2,9])
```

Unlike single return function calls, multi-return function calls cannot be directly combined with other operators.

If a function returns more outputs than are assigned, the remainder is ignored. If a function returns fewer outputs than are assigned, an error occurs.

```
myfunc('hello','goodbye')
myfunc hello goodbye
```

OML language has many built-in functions that are directly callable. These will be cataloged in a separate document. Users can also define their own functions (see next section).