LON-CAPA Functions

All LON-CAPA functions are called as &function_name. Function names are case-sensitive. Variable names must be preceded by the "$" sign.


 
CAPA Functions
LON-CAPA
Descriptions
Differences (if any)
sin(x), cos(x), tan(x)
&sin($x), &cos($x), &tan($x)
Trigonometric functions where x is in radians. $x can be a pure number, i.e., you can call &sin(3.1415).
asin(x), acos(x), atan(x), atan2(y,x)
&asin($x), &acos($x), &atan($x), &atan2($y,$x)
Inverse trigonometric functions. Return value is in radians. For asin and acos the value of x must be between -1 and 1. The atan2 returns a value between -pi and pi the sign of which is determined by y. $x and $y can be pure numbers.
log(x), log10(x)
&log($x), &log10($x)
Natural and base-10 logarithm. $x can be a pure number.
exp(x), pow(x,y), sqrt(x)
&exp($x), &pow($x,$y), &sqrt($x)
Exponential, power and square root, i.e.,ex, xy and . $x and $y can be pure numbers.
abs(x), sgn(x)
&abs($x), &sgn($x)
Abs takes the absolute value of x while sgn(x) returns 1, 0 or -1 depending on the value of x. For x>0, sgn(x) = 1, for x=0, sgn(x) = 0 and for x<0, sgn(x) = -1. $x can be a pure number.
erf(x), erfc(x)
&erf($x), &erfc($x)
Error function. and erfx(x) = 1.0 - erf(x)

$x can be a pure number.

ceil(x), floor(x)
&ceil($x), &floor($x)
Ceil function returns an integer rounded up whereas floor function returns and integer rounded down. If x is an integer than it returns the value of the integer. $x can be a pure number.
min(...), max(...)
&min(...), &max(...)
Returns the minimum/ maximum value of a list of arguments if the arguments are numbers. If the arguments are strings then it returns a string sorted according to the ASCII codes.
factorial(n)
&factorial($n)
Argument (n) must be an integer else it will round down. The largest value for n is 170. $n can be a pure number.
N%M
$N%$M
N and M are integers and returns the remainder (in integer) of N/M. $N and $M can be pure numbers.
sinh(x), cosh(x), tanh(x)
&sinh($x), &cosh($x), &tanh($x)
Hyperbolic functions. $x can be a pure number.
asinh(x), acosh(x), atanh(x)
&asinh($x), &acosh($x), &atanh($x)
Inverse hyperbolic functions. $x can be a pure number.
roundto(x,n)
&roundto($x,$n)
Rounds a real number to n decimal points. $x and $n can be pure numbers.
web("a","b","c") or web(a,b,c)
&web("a","b","c") or &web($a,$b,$c)
Returns either a, b or c depending on the output medium. a is for plain ASCII, b for tex output and c for html output.
 
html("a") or html(a)
&html("a") or &html($a)
Output only if the output mode chosen is in html format.
jn(m,x)
&j0($x), &j1($x), &jn($m,$x), &jv($y,$x)
Bessel functions of the first kind with orders 0, 1 and m respectively. For jn(m,x), m must be an integer whereas for jv(y,x), y is real. $x can be a pure number. $m must be an integer and can be a pure integer number. $y can be a pure real number.
In CAPA, j0, j1 and jn are contained in one function, jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) was not implemented.
yn(m,x)
&y0($x), &y1($x), &yn($m,$x), &yv($y,$x)
Bessel functions of the second kind with orders 0, 1 and m respectively. For yn(m,x), m must be an integer whereas for yv(y,x), y is real. $x can be a pure number. $m must be an integer and can be a pure integer number. $y can be a pure real number.
In CAPA, y0, y1 and yn are contained in one function, yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) was not implemented.
random(l,u,d)
&random($l,$u,$d)
Returns a uniformly distributed random number between the lower bound, l and upper bound, u in steps of d. $l, $u and $d can be pure numbers.
In CAPA, all the 3 arguments must be of the same type. However, now you can mix the type.
choose(i,..)
&choose($i,...)
Choose the ith item from the argument list. i must be an integer greater than 0 and the value of i should not exceed the number of items. $i can be a pure integer.
tex(a,b), tex("a","b")
&tex($a,$b), &tex("a","b")
Returns a if the output mode is in tex otherwise returns b.
var_in_tex(a)
&var_in_tex($a)
Equivalent to tex("a","")
to_string(x), to_string(x,y)
&to_string($x), &to_string($x,$y)
If x is an integer, returns a string. If x is real than the output is a string with format given by y. For example, if x = 12.3456, &to_string(x,".3F") = 12.345 and &to_string(x,".3E") = 1.234E+01.
capa_id(), class(), section(), set(), problem()
&class(), &section()
Returns null string, class descriptive name, section number, set number and null string.
capa_id(), set() and problem() are no longer used. Currently, they return a null value.
name(), student_number()
&name(), &student_number()
Return the full name in the following format: lastname, firstname initial. Student_number returns the student 9-alphanumeric string. If undefined, the functions return null.
open_date(), due_date(), answer_date()
&open_date(), &due_date(), &answer_date()
Problem open date, due date and answer date. The time is also included in 24-hr format.
Output format for time is changed slightly. If pass noon, it displays ..pm else it displays ..am. So 23:59 is displayed as 11:59 pm.
get_seed(), set_seed()
Not implemented
Get and set the random seed.
sub_string(a,b,c)
&sub_string($a,$b,$c)

perl 

substr function. However, note the differences.

Retrieve a portion of string a starting from b and length c. For example, 

$a = "Welcome to LON-CAPA";

$result=&sub_string($a,4,4);

then $result is "come".

Perl intrinsic function, substr(string,b,c) starts counting from 0 (as opposed to 1). In the example to the left, substr($a,4,4) returns "ome ".
array[xx]
@arrayname

Array is intrinsic in perl.

To access a specific element use $arrayname[$n] where $n is the $n+1 element since the array count starts from 0.

"xx" can be a variable or a calculation.
In LON-CAPA, an array is defined by @arrayname. It is not necessary to specify the dimension of the array. 
array_moments(B,A)
@B=&array_moments(@A)
Evaluates the moments of an array A and place the result in array B[i] where i = 0 to 4. The contents of B are as follows: B[0] = number of elements, B[1] = mean, B[2] = variance, B[3] = skewness and B[4] = kurtosis.
array_max(Name), array_min(Name)

&min(@Name), &max(@Name)
In LON-CAPA to find the maximum value of an array, use

&max(@arrayname) 

and to find the minimum value of an array, use

&min(@arrayname).

Combined with the min and max functions defined earlier.
init_array(Name)
undef @name
To destroy the contents of an array, use

undef @arrayname;

Use perl intrinsic undef function.
random_norma(...), random_beta(...), random_gamma(...), random_exponential(...), random_poisson(...), random_chi(...), random_noncentral(...)
Not yet implemented.