Diff for /doc/homework/homework5.html between versions 1.2 and 1.4

version 1.2, 2001/05/19 03:40:19 version 1.4, 2001/06/01 14:17:04
Line 301 Line 301
     <p>       <p> 
       A list of functions that have been written that are available in         A list of functions that have been written that are available in 
       the Safe space scripting environment inside a problem. The eventual        the Safe space scripting environment inside a problem. The eventual
       goal is to provide all of the functions available in CAPA        goal is to provide all of the functions available in CAPA. Detailed
         descriptions of each function and comparison with CAPA is given in
         <a href="homework6.html">CAPA to LON-CAPA Functions</a>.
     </p>      </p>
     <ul>      <ul>
         <li>sin(x), cos(x), tan(x)</li>
         <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
         <li>log(x), log10(x)</li>
         <li>exp(), pow(x,y), sqrt(x)</li>
         <li>abs(x), sgn(x)</li>
         <li>erf(x), erfc(x)</li>
         <li>ceil(x), floor(x)</li>
         <li>min(...), max(...)</li>
         <li>factorial(n)</li>
         <li>N%M</li>
         <li>sinh(x), cosh(x), tanh(x)</li>
         <li>asinh(x), acosh(x), atanh(x)</li>
         <li>roundto(x,n)</li>
         <li>web("a","b","c") or web(a,b,c)</li>
         <li>html("a") or html(a)</li>
         <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
         <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
       <li>random</li>        <li>random</li>
       <li>tan</li>  
       <li>atan</li>  
       <li>acos</li>  
       <li>asin</li>  
       <li>log10</li>  
       <li>pow</li>  
       <li>ceil</li>  
       <li>floor</li>  
       <li>format</li>  
       <li>map</li>  
       <li>choose</li>        <li>choose</li>
         <li>tex("a","b") or tex(a,b)</li>
         <li>var_in_tex(a)</li>
         <li>to_string(x), to_string(x,y)</li>
         <li>class(), section()</li>
         <li>name(), student_number()</li>
         <li>open_date(), due_date(), answer_date()</li>
         <li>sub_string()</li>
         <li>array_moments(array)</li>
         <li>format(x,y)</li>
         <li>map(...)</li>
       <li>caparesponse_check</li>        <li>caparesponse_check</li>
       <li>caparesponse_check_list</li>        <li>caparesponse_check_list</li>
     </ul>      </ul>
   
     <table border=1>
         <tr>
               <td valign="top"><b>CAPA Functions</b</td>
               <td valign="top"><b>LON-CAPA</b</td>
               <td valign="top"><b>Descriptions</b</td>
               <td valign="top"><b>Differences (if any)</b</td>
        </tr>
   
        <tr>
                <td valign="top">sin(x), cos(x), tan(x)</td>
                <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>
                <td valign="top">Trigonometric functions where x is in radians. $x
            can be a pure number, i.e., you can call &amp;sin(3.1415)</td>
                <td valign="top">&nbsp</td>
       </tr>
   
       <tr>
                <td valign="top">sin(x), cos(x), tan(x)</td>
                <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>
                <td valign="top">Trigonometric functions where x is in radians. $x
            can be a pure number, i.e., you can call &amp;sin(3.1415)</td>
                 <td valign="top">&nbsp</td>
       </tr>
   
       <tr>
                <td valign="top">asin(x), acos(x), atan(x), atan2(y,x)</td>
                <td valign="top">&amp;asin($x), &amp;acos($x), &amp;atan($x), &amp;atan2($y,$x)</td>
                <td valign="top">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</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">log(x), log10(x)</td>
                <td valign="top">&amp;log($x), &amp;log10($x)</td>
                <td valign="top">Natural and base-10 logarithm. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">exp(x), pow(x,y), sqrt(x)</td>
                <td valign="top">&amp;exp($x), &amp;pow($x,$y), &amp;sqrt($x)</td>
                <td valign="top">Exponential, power and square root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x.                  $x and $y can be pure numbers</td>
   
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">abs(x), sgn(x)</td>
                <td valign="top">&amp;abs($x), &amp;sgn($x)</td>
                <td valign="top">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&lt;0, sgn(x) = -1. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">erf(x), erfc(x)</td>
                <td valign="top">&amp;erf($x), &amp;erfc($x)</td>
                <td valign="top">Error function.&nbsp; erf = 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>                 erfx(x)</i> = 1.0 - <i>erf(x)</i>.&nbsp; $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">ceil(x), floor(x)</td>
                <td valign="top">&amp;ceil($x), &amp;floor($x)</td>
                <td valign="top">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</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">min(...), max(...)</td>
                <td valign="top">&amp;min(...), &amp;max(...)</td>
                <td valign="top">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</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">factorial(n)</td>
                <td valign="top">&amp;factorial($n)</td>
                <td valign="top">Argument (n) must be an integer else it will round
                    down. The largest value for n is 170. $n can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">N%M</td>
                <td valign="top">$N%$M</td>
   
                <td valign="top">N and M are integers and returns the remainder (in
                    integer) of N/M. $N and $M can be pure numbers</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">sinh(x), cosh(x), tanh(x)</td>
                <td valign="top">&amp;sinh($x), &amp;cosh($x), &amp;tanh($x)</td>
                <td valign="top">Hyperbolic functions. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">asinh(x), acosh(x), atanh(x)</td>
                <td valign="top">&amp;asinh($x), &amp;acosh($x), &amp;atanh($x)</td>
                <td valign="top">Inverse hyperbolic functions. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">roundto(x,n)</td>
                <td valign="top">&amp;roundto($x,$n)</td>
                <td valign="top">Rounds a real number to n decimal points. $x and
                    $n can be pure numbers</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">web("a","b","c") or web(a,b,c)</td>
                <td valign="top">&amp;web("a","b","c") or &amp;web($a,$b,$c)</td>
                <td valign="top">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</td>
                <td valign="top">&nbsp</td>
       </tr>
   
       <tr>
                <td valign="top">html("a") or html(a)</td>
                <td valign="top">&amp;html("a") or &amp;html($a)</td>
                <td valign="top">Output only if the output mode chosen is in html
                    format</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">jn(m,x)</td>
                <td valign="top">&amp;j0($x), &amp;j1($x), &amp;jn($m,$x), &amp;jv($y,$x)</td>
                <td valign="top">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</td>
                <td valign="top">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</td>
       </tr>
   
       <tr>
                <td valign="top">yn(m,x)</td>
                <td valign="top">&amp;y0($x), &amp;y1($x), &amp;yn($m,$x), &amp;yv($y,$x)</td>
                <td valign="top">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</td>
                <td valign="top">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</td>
       </tr>
   
       <tr>
                <td valign="top">random(l,u,d)</td>
                <td valign="top">&amp;random($l,$u,$d)</td>
                <td valign="top">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</td>
                <td valign="top">In CAPA, all the 3 arguments must be of the same
                    type. However, now you can mix the type</td>
       </tr>
   
       <tr>
                <td valign="top">choose(i,...)</td>
                <td valign="top">&amp;choose($i,...)</td>
                <td valign="top">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</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">tex(a,b), tex("a","b")</td>
                <td valign="top">&amp;tex($a,$b), &amp;tex("a","b")</td>
                <td valign="top">Returns a if the output mode is in tex otherwise
                     returns b</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">var_in_tex(a)</td>
                <td valign="top">&amp;var_in_tex($a)</td>
                <td valign="top">Equivalent to tex("a","")</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">to_string(x), to_string(x,y)</td>
                <td valign="top">&amp;to_string($x), &amp;to_string($x,$y)</td>
                <td valign="top">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, &amp;to_string(x,".3F") = 12.345 and &amp;to_string(x,".3E") =
                   1.234E+01.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">capa_id(), class(), section(), set(), problem()</td>
                <td valign="top">&amp;class(), &amp;section()</td>
                <td valign="top">Returns null string, class descriptive name, section
                       number, set number and null string.</td>
                <td valign="top">capa_id(), set() and problem() are no longer used.
                       Currently, they return a null value.</td>
       </tr>
   
       <tr>
                <td valign="top">name(), student_number()</td>
                <td valign="top">&amp;name(), &amp;student_number()</td>
                <td valign="top">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.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">open_date(), due_date(), answer_date()</td>
                <td valign="top">&amp;open_date(), &amp;due_date(), &amp;answer_date()</td>
                <td valign="top">Problem open date, due date and answer date. The
                       time is also included in 24-hr format.</td>
                <td valign="top">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.</td>
       </tr>
   
       <tr>
                <td valign="top">get_seed(), set_seed()</td>
                <td valign="top">Not implemented</td>
                <td valign="top">Get and set the random seed.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">sub_string(a,b,c)</td>
                <td valign="top">&amp;sub_string($a,$b,$c) <br>perl&nbsp; substr function. 
                    However, note the differences</td>
                <td valign="top">Retrieve a portion of string a starting from b and
                       length c. For example,&nbsp; $a = "Welcome to LON-CAPA"; 
                       $result=&amp;sub_string($a,4,4); then $result is "come"</td>
                <td valign="top">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 ".</td>
       </tr>
   
       <tr>
                <td valign="top">array[xx]</td>
                <td valign="top">@arrayname <br>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</td>
                <td valign="top">"xx" can be a variable or a calculation.</td>
                <td valign="top">In LON-CAPA, an array is defined by @arrayname.
                     It is not necessary to specify the dimension of the array.&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">array_moments(B,A)</td>
                <td valign="top">@B=&amp;array_moments(@A)</td>
                <td valign="top">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.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">array_max(Name), array_min(Name)</td>
                <td valign="top">&amp;min(@Name), &amp;max(@Name)</td>
                <td valign="top">In LON-CAPA to find the maximum value of an array, use
                      &amp;max(@arrayname)&nbsp; and to find the minimum value of an array, use
                      &amp;min(@arrayname)</td>
                <td valign="top">Combined with the min and max functions defined
                   earlier.</td>
       </tr>
   
       <tr>
                <td valign="top">init_array(Name)</td>
                <td valign="top">undef @name</td>
                <td valign="top">To destroy the contents of an array, use</td>
                <td valign="top">Use perl intrinsic undef function.</td>
       </tr>
   
       <tr>
                <td valign="top">random_norma(...), random_beta(...), random_gamma(...),
                  random_exponential(...), random_poisson(...), random_chi(...), random_noncentral(...)</td>
                <td valign="top">Not yet implemented.</td>
                <td valign="top">&nbsp;</td>
                <td valign="top">&nbsp;</td>
       </tr>
     </table>
   
   
     <h2>&lt;script&gt; Variables</h2>      <h2>&lt;script&gt; Variables</h2>
     <ul>      <ul>
       <li>        <li>
Line 342 Line 660
  seed the random number generator   seed the random number generator
       </li>        </li>
       <li>$pi - set to PI </li>        <li>$pi - set to PI </li>
         <li>$rad2deg - converts radians to degrees </li>
         <li>$deg2rad - converts degrees to radians </li>
     </ul>      </ul>
           
     <hr>      <hr>

Removed from v.1.2  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>