[system] / trunk / pg / lib Repository:
ViewVC logotype

Log of /trunk/pg/lib

View Directory Listing Directory Listing


Sticky Revision:

Revision 3328 - Directory Listing
Modified Fri Jul 1 15:52:36 2005 UTC (14 years, 5 months ago) by gage
Added commment

Revision 3322 - Directory Listing
Modified Wed Jun 29 02:47:40 2005 UTC (14 years, 5 months ago) by gage
Corrected how preview_latex_strings are handled when two
AnswerHashes are ANDed or ORed.

Revision 3298 - Directory Listing
Modified Thu Jun 16 15:32:02 2005 UTC (14 years, 5 months ago) by dpvc
New flag showAllErrors for when a custom checker is supplied.  This
will cause all errors generated in the user's code to be reported
(normally, messages from the Value and Parser packages are ignored).

Revision 3296 - Directory Listing
Modified Thu Jun 16 04:03:40 2005 UTC (14 years, 5 months ago) by dpvc
Fixed a problem with auto-generated functions getting an incomplete
variable list.

Revision 3295 - Directory Listing
Modified Thu Jun 16 00:52:13 2005 UTC (14 years, 5 months ago) by gage
Fixed documentation for $graph->size()

Revision 3291 - Directory Listing
Modified Wed Jun 15 22:00:32 2005 UTC (14 years, 5 months ago) by jj
Changed whitespace removal of TeX strings to safer version.

Revision 3274 - Directory Listing
Modified Thu Jun 9 11:16:01 2005 UTC (14 years, 6 months ago) by dpvc
Fixed Disable() and Enable() so that they can be called as

    Context()->functions->disable()
and
    Context()->functions->enable()

as well as

    Parser::Context::Functions::Disable()
and
    Parser::Context::Functions::Enable()

The former is the preferred syntax.

Revision 3273 - Directory Listing
Modified Mon Jun 6 02:32:20 2005 UTC (14 years, 6 months ago) by dpvc
Forgot to check hardcopy mode.  Fixed some problems with that.  The
answer array items have to turn off verbatim mode that is used when
answer are included in the hardcopy.  This causes paragraph breaks
between entries in a singleResult MultiPart that includes ans_arrays,
which make the output less pretty, but at least they show up.

Revision 3269 - Directory Listing
Modified Sun Jun 5 23:52:11 2005 UTC (14 years, 6 months ago) by dpvc
Added ability to have Matrix, Vector and Point objects produce input
arrays similar to the ones available in PGmatrixmacros.pg.  This
provides some substantial new functionality, and it may still have
some shaking down to do, but it should not affect the existing
functionality of the answer checkers.

To create an answer array for a matrix, vector or point, use the new
ans_array() or named_ans_array() methods of these objects.  For
example:

	Context("Matrix");
	$M = Matrix([1,2],[3,4]);

	BEGIN_TEXT
	\{$M->TeX\} = \{$M->ans_array\}
	END_TEXT

	ANS($M->cmp);

This creates a matrix, then prints it ans creates an answer array of
the appropriate size for the matrix.  The answer checker will
automatically know to handle the multiple entry blanks.

To used a named answer rule, use:

	Context("Matrix");
	$M = Matrix([1,2],[3,4]);

	BEGIN_TEXT
	\{$M->TeX\} = \{$M->named_ans_array('fred')\}
	END_TEXT

	NAMED_ANS(fred => $M->cmp);

Both methods also take an optional argument that specifies the width
of the answer rules.  The default is 5.

You can get a multi-input point or vector array as well, and you can
make column vectors as follows:

        Context("Vector");
	$V = ColumnVector("1+x","3x","1-x");

	BEGIN_TEXT
	\{$V->TeX\} = \{$V->ans_array\}
	END_TEXT

	ANS($V->cmp);

Note that you can make answer arrays for matrices and vectors of
formulas as well as constants, provided the formula is an explicit
matrix or vector of formulas, and is not obtained by matrix
arithmatic.

For concistencey, all objets now have ans_rule and named_ans_rule
methods as well.  The default width is 20 for these.

Revision 3267 - Directory Listing
Modified Sun Jun 5 23:25:20 2005 UTC (14 years, 6 months ago) by dpvc
Allow for vectors to be marked as Column Vectors.

Revision 3266 - Directory Listing
Modified Sun Jun 5 23:24:29 2005 UTC (14 years, 6 months ago) by dpvc
Better handling of delimiters that are explicitly set byt he user.
Fixed an incorrect call during object class promotion.
Added ability to sepcify that a vector is a Column Vector.

Revision 3265 - Directory Listing
Modified Sun Jun 5 23:22:20 2005 UTC (14 years, 6 months ago) by dpvc
Better handling of open and close delimiters that are explicitly set.

Revision 3264 - Directory Listing
Modified Sun Jun 5 23:18:01 2005 UTC (14 years, 6 months ago) by dpvc
Fix some incorrect calls when the promoting types to higher precedence
object types.

Revision 3263 - Directory Listing
Modified Sun Jun 5 23:08:32 2005 UTC (14 years, 6 months ago) by dpvc
Fixed a bug with Matrix->perl() method that would cause an extra level
of nesting in constant matrices.

Revision 3261 - Directory Listing
Modified Sat Jun 4 13:50:41 2005 UTC (14 years, 6 months ago) by dpvc
Avoid possible infinite loop with length and typeref calls.

Revision 3260 - Directory Listing
Modified Sat Jun 4 13:50:01 2005 UTC (14 years, 6 months ago) by dpvc
Remove unneeded comment.

Revision 3259 - Directory Listing
Modified Fri Jun 3 22:03:23 2005 UTC (14 years, 6 months ago) by dpvc
Added a ->with() method that lets you set fields of a Parser object as
you create it.  For example:

    $f = Formula("sqrt(x)")->with(limits=>[0,3]);

or

    ANS(Formula("(x+1)/x")->with(checkUndefinedPoints=>1,test_at=>[[0]])->cmp);

or

    ANS($f->with(test_points=>[[0],[1],[2]])->cmp);

Revision 3258 - Directory Listing
Modified Fri Jun 3 19:14:00 2005 UTC (14 years, 6 months ago) by dpvc
Better control over number of points that can be undefined, and
new ability to specify required test points plus additional random
ones.  (Previously, if you set the test points, no random points were
generated.)  For example:

     $f = Formula("(x^2-1)/(x-1)");
     $f->{test_at} = [[1]];  # test at x=1 plus random points

as opposed to

     $f->{test_points} = [[-1],[0],[1]];

which tests only the points x = -1, x = 0 and x = 1.

Revision 3257 - Directory Listing
Modified Thu Jun 2 22:50:24 2005 UTC (14 years, 6 months ago) by dpvc
Modified the Formula answer checker to allow checking of points where
the functions are undefined (i.e., attempt to check that the domains
agree).  This can be enabled by setting the checkundefinedPoints flag
in the Context(), or in the formula itself.  Test points where the
function is undefined will be retained and the student's answer will
have to be undefined at the same points.  If the points are selected
at random, the points where the function is undefined are kept in
addition to the ones where it is defined, so the required number of
test points where the function IS defined will still need to be
found.  The number of undefined points can be up to the number of
defined points.  This number can be reduced by setting the
max_undefined flag.  If you want to guarantee that a specific
undefined point be tested, you can provide that point using the
test_points field of the formula.  For example:

     Context()->flags->set(checkUndefinedPoints=>1);
     $f = Formula("(x^2-1)/(x-1)");
     $f->{test_points} = [[-1],[0],[1],[2]];
     ANS($f->cmp);

will guarantee that the singularity at x=1 is tested, so the answer
x+1 will not be marked as correct.

If an answer matches at all the test points where the functions are
both defined, but some of the undefind points differ between the two
functions, the answer checker will generate an error message
indicating that the domains of the functions don't agree.  (This is
ONLY generated with the functions match except for that.)  This can be
controlled by setting the showDomainErrors flag in the formula's cmp()
call:

     ANS($f->cmp(showDomainErrors=>0));

The default is to show these errors.

Revision 3256 - Directory Listing
Modified Thu Jun 2 19:53:06 2005 UTC (14 years, 6 months ago) by dpvc
Fixed an accidental hard-coded operation from always being "add" to
being the correct operation when promoting the operations to an object
of higher precedence.  (But since formulas are normally the highest
precedence, this will never have occurred.)

Revision 3221 - Directory Listing
Modified Mon May 2 00:58:00 2005 UTC (14 years, 7 months ago) by dpvc
During a call(), if the evaluation produced an error message generated
by Value::Error, report it, otherwise report a generic message.

Revision 3219 - Directory Listing
Modified Fri Apr 29 22:30:55 2005 UTC (14 years, 7 months ago) by dpvc
Added derivative of |x| as x/|x|.

Revision 3218 - Directory Listing
Modified Fri Apr 29 02:37:13 2005 UTC (14 years, 7 months ago) by dpvc
Fixed a bug with adaptive parameters where the relative tolerance
was not being properly computed.  This allowed large constants to be
treated as correct when they shouldn't be.

Revision 3217 - Directory Listing
Modified Wed Apr 27 21:30:13 2005 UTC (14 years, 7 months ago) by dpvc
Copy parameters like limits, etc, to the newly created formula when
'C0' is added by the "upToConstant=>1" option in formula cmp().

Revision 3216 - Directory Listing
Modified Wed Apr 27 21:29:10 2005 UTC (14 years, 7 months ago) by dpvc
Use correct form of "x" with lists (rather than hack using split()).

Revision 3214 - Directory Listing
Modified Sat Apr 9 18:33:07 2005 UTC (14 years, 8 months ago) by gage
Provide a default warning subroutine if none has been defined.

Revision 3210 - Directory Listing
Modified Thu Mar 31 19:44:49 2005 UTC (14 years, 8 months ago) by dpvc
Added a check that the coordinates are numeric.  This avoids an error
were <i+j+k> was accepted as OK.

Revision 3207 - Directory Listing
Modified Tue Mar 29 13:14:17 2005 UTC (14 years, 8 months ago) by dpvc
Handle error messages in the list checker better.  In particular, make
the error messages generated by custom checkers called on elements in
the list look better.  Also, in an ordered list, if the student enters
extra values, call an answer checker to do a syntax check.  (By
default, use the first element again, but the user can supply a
separate object to use for the checker using the extra=>object
option.)

Revision 3206 - Directory Listing
Modified Tue Mar 29 03:25:29 2005 UTC (14 years, 8 months ago) by dpvc
Compartmentalize the equality check one step further.  The cmp_equal
method now calls a new cmp_compare method to perform the actual
comparison (rather than use == directly).  The cmp_compare method
either calls a user-supplied checker routine, or defaults to using the
== operator.  The list checker also uses cmp_compare to check the
individual items in the list.  The list checker also calls a new
cmp_list_checker method to perform the list check.  This can be
overridden by a user-supplied list-checking routine.

To supply an alternate checking routine, use the "checker" option to
the cmp() method of the correct answer object.  For example:

    sub check {
      my ($correct,$student,$ans) = @_;
      return 0 unless $correct->length == $student->length;
      my ($x,$y) = $student->value;  # break up a point;
      return $x**2 - $y**2 = 1;      # check if it is on a hyperbola
    }
    Point(1,0)->cmp(checker=>~~&check);

This will check if the student's point lies on the given hyperbola.  All
the usual error messages will be issued if the student's answer is not
a point, or is of the wrong dimension, etc.

You can use

    sub list_check {
      my ($correct,$student,$ans) = @_;
      my @correct = @{$correct}; my @student = @{$student};
      ...
      return ($score,@errors);
    }
    List(...)->cmp(list_checker=>~~&list_check);

to replace the list-checking routine with your own custom one.  The
$correct and $student values are array references to the elements in
the lists provided by the professor and student.  (Note that you do
NOT get a List() object; this allows you to handle lists of formulas,
since a List of formulas becomes a formula returning a list).  The
checker routine should return the number of correct elements in the
student's list ($score), and a list of error messages produced while
checking the two lists (@errors).  (This is a list of messages, since
you might want to include an error for each entry in the list, for
example).

If your checker or list_checker routine wants to die with an error
message, use Value::Error(message).  This will put the message in the
WeBWorK display area at the top of the page.  If you use die(message),
or if the code fails due to a runtime error, then "pink screen of
death" will be produced indicating the error and asking the student to
report the error to the professor.

Revision 3205 - Directory Listing
Modified Tue Mar 29 02:55:10 2005 UTC (14 years, 8 months ago) by dpvc
Properly handle string values in postprocessing of vectors and other
related lists.  (It used to report a dimension error for things like 'NONE').

Revision 3204 - Directory Listing
Modified Mon Mar 28 23:47:50 2005 UTC (14 years, 8 months ago) by dpvc
Peroperly negate infinities even when reduceConstants is not in
effect.

Revision 3203 - Directory Listing
Modified Mon Mar 28 23:46:06 2005 UTC (14 years, 8 months ago) by dpvc
Handle extra parentheses better.

Revision 3202 - Directory Listing
Modified Mon Mar 28 23:45:27 2005 UTC (14 years, 8 months ago) by dpvc
Handle log as ln or log properly.

Revision 3194 - Directory Listing
Modified Wed Mar 16 13:35:01 2005 UTC (14 years, 8 months ago) by dpvc
removed a commented-out line that was no longer needed.

Revision 3193 - Directory Listing
Modified Wed Mar 16 13:33:59 2005 UTC (14 years, 8 months ago) by dpvc
Fixed a typo.

Revision 3192 - Directory Listing
Modified Wed Mar 16 13:30:28 2005 UTC (14 years, 8 months ago) by dpvc
Update the overloaded operators so that they can be overridden by
subclasses of the predefined object classes.  This involves calling
the objects method rather than using a hard reference to the routine
in the parent class.

Also, change the name of the string comparison routine to
compare_string to avoid conflicts with cmp that is used to produce the
answer checker for the class.

Finally, in Value.pm, promotePrecedence no longer has to do fancy
footwork to get "special" precedence to work (this was a hack to get
around the misfeature of the overloaded operators -- now that that is
being handled correctly, there is no need for it).

Revision 3187 - Directory Listing
Modified Sat Feb 26 23:03:12 2005 UTC (14 years, 9 months ago) by gage
Allow subclasses of AnswerEvalutor to be used.  Check for a match
with a substring AnswerEvaluator instead of equality.

Revision 3177 - Directory Listing
Modified Fri Feb 18 00:04:09 2005 UTC (14 years, 9 months ago) by dpvc
Missed one situation when making the previous update.  Fixed it.

Revision 3174 - Directory Listing
Modified Thu Feb 17 16:12:45 2005 UTC (14 years, 9 months ago) by dpvc
Fixed it so that direct calls to the add, sub, mult, etc functions
would work as expected (even though there is no need to call them directly).

Revision 3172 - Directory Listing
Modified Tue Feb 15 21:58:54 2005 UTC (14 years, 9 months ago) by dpvc
Updated the answer checkers so that you can more easily specify how
the correct answer shoudl be displayed.  In the past, you could use
something like Real(sqrt(2))->cmp(correct_ans=>"sqrt(2)") to do this,
but that is awkward.  Now the Compute() function (which parses and
then evaluates a string) sets things up so that the original string
will be what is used as the correct answer.  That means
Compute("sqrt(2)")->cmp will have the same result as the example
above.

You can also set the {correct_ans} properly of any Parser object to
have that value used as the correct answer.  For example

     $x = Real(sqrt(2));
     $x->{correct_ans} = "sqrt(2)";
     ANS($x->cmp)

would also produce the same answer checker as the two previous
examples.  All three methods should work.  Use the one that is most
convenient for you.

Revision 3171 - Directory Listing
Modified Tue Feb 15 21:53:23 2005 UTC (14 years, 9 months ago) by dpvc
Improved the Real(), Complex(), Point(), Vector(), Matrix() and
String() constructors so that they will process formulas passed to
them as strings rather than requiring perl objects for these.

For example, you can use Real("2/3") rather than Real(2/3) if you
want.  Also, Real("1+x") will return a formula returning a real
(essentially the same as Formula("1+x") in this case).

Revision 3166 - Directory Listing
Modified Tue Feb 15 02:20:52 2005 UTC (14 years, 9 months ago) by dpvc
Fixed an error with Matrix() that could cause it to loop infinitely
when bad data is passed to it.

Also, allow Matrix(), Point(), Vector(), and Real() to accept string
values that are evaluated to produce the value returned.

(Sorry, accidentally committed with a blank message.)

Revision 3165 - Directory Listing
Modified Tue Feb 15 02:16:10 2005 UTC (14 years, 9 months ago) by dpvc
*** empty log message ***

Revision 3093 - Directory Listing
Modified Sun Jan 16 00:52:49 2005 UTC (14 years, 10 months ago) by gage
Undoing some of the temporary changes I made to the warn message.

This may break what happens with xmlrpc however. (sigh)

Revision 3074 - Directory Listing
Modified Tue Jan 4 17:56:33 2005 UTC (14 years, 11 months ago) by dpvc
Fixed index problem with matrix multiplciation.  (It was returning the
transpose!)

Revision 3071 - Directory Listing
Modified Sat Jan 1 22:29:41 2005 UTC (14 years, 11 months ago) by gage
Temporary modifications which allow the Warning mechanisms to work when
using the XML access methods.

This needs to be looked at again.  There is also a problem with defining
permissions for creating directories.  There is a temporary #FIXME
that seems to work.

Revision 2991 - Directory Listing
Modified Tue Nov 9 15:23:38 2004 UTC (15 years, 1 month ago) by gage
Defined some variables that were causing warning messages.
Someone more familiar with this script should look at this
to make sure that this subsection of the parser is working correctly.

-- Mike

Revision 2985 - Directory Listing
Modified Wed Nov 3 22:39:21 2004 UTC (15 years, 1 month ago) by dpvc
Fixed a bug in processing absolute values with implicit
multiplication.

Revision 2969 - Directory Listing
Modified Tue Nov 2 01:55:21 2004 UTC (15 years, 1 month ago) by dpvc
Fixed typo in a comment.

Revision 2938 - Directory Listing
Modified Tue Oct 19 00:24:47 2004 UTC (15 years, 1 month ago) by dpvc
Added reduction rules to remove redundent negatives.
Override string and TeX methods that avoid redundent parentheses.

Revision 2937 - Directory Listing
Modified Tue Oct 19 00:23:01 2004 UTC (15 years, 1 month ago) by dpvc
Added "areParallel" method as a synonym for "isParallel".

Revision 2936 - Directory Listing
Modified Tue Oct 19 00:22:07 2004 UTC (15 years, 1 month ago) by dpvc
Don't promote an object unless it is a Value object.

Revision 2916 - Directory Listing
Modified Wed Oct 13 18:41:07 2004 UTC (15 years, 2 months ago) by dpvc
Clear error messages before doing the answer check (this clears old
messages left over inclass this checker is called by another one,
e.g. when using UNORDERD_ANS()).

Revision 2915 - Directory Listing
Modified Wed Oct 13 03:31:17 2004 UTC (15 years, 2 months ago) by dpvc
Trap errors in functions that are not native perl functions (like
acos() and csc(), etc.).  In the past, if an error occurred within the
definition of a function, the error message that was reported was the
internal error within the definition of the function.  For example
csc(0) would report "illegal division by zero", while acos(-2) would
report "can't take sqrt of -3".  Now the errors will be "can't take
csc of 0" and "can't take acos of -2".

Revision 2914 - Directory Listing
Modified Wed Oct 13 02:41:33 2004 UTC (15 years, 2 months ago) by dpvc
Added support for useBaseTenLogs to make log() work like ln() or
log10() depending on the value in the course.conf file.

Also fixed a bug that caused the WeBWorK parameters not to be
copied into contexts by initCopy().

Revision 2909 - Directory Listing
Modified Tue Oct 12 20:49:25 2004 UTC (15 years, 2 months ago) by dpvc
In Complex context, make sqrt() and log() of negative numbers return
their complex values.  Also make ^ and ** do the same with negative
bases.  These can be controlled by setting/clearing the
"negativeIsComplex" entry for these functions and operators.

Revision 2908 - Directory Listing
Modified Tue Oct 12 20:46:43 2004 UTC (15 years, 2 months ago) by dpvc
Report errors for powers of negative numbers rather than return 'nan'.
Don't allow 'nan' to be made into a Real object.

Revision 2907 - Directory Listing
Modified Tue Oct 12 20:44:20 2004 UTC (15 years, 2 months ago) by dpvc
In StandardPrecedence mode, make the precedence of function apply
match that in use by that AlgParser.

Revision 2900 - Directory Listing
Modified Tue Oct 12 00:52:47 2004 UTC (15 years, 2 months ago) by dpvc
Don't give coordinate hints during parallel vector checks.  Also fixed
a typo.

Revision 2842 - Directory Listing
Modified Wed Sep 29 15:47:30 2004 UTC (15 years, 2 months ago) by dpvc
Allow string constants to include spaces.

Revision 2832 - Directory Listing
Modified Mon Sep 27 17:47:04 2004 UTC (15 years, 2 months ago) by dpvc
Fix problem with TeX output of implicit multiplication between
items that would put two digits next to each other (like 2 3^2).

Revision 2823 - Directory Listing
Modified Thu Sep 23 21:09:14 2004 UTC (15 years, 2 months ago) by dpvc
Fixed Parser so that you can replace the Formula class as well as the
other object types.

Revision 2803 - Directory Listing
Modified Sun Sep 19 15:11:08 2004 UTC (15 years, 2 months ago) by dpvc
The $Parser::class variable was being handled after the "use"
statements at the end, so had to put a BEGIN around it.

Revision 2802 - Directory Listing
Modified Sun Sep 19 14:43:32 2004 UTC (15 years, 2 months ago) by dpvc
Eliminated unneeded parentheses in TeX output when unary minus and
plus are used with fractions.

Revision 2801 - Directory Listing
Modified Sun Sep 19 14:41:57 2004 UTC (15 years, 2 months ago) by dpvc
More changes for the isZero and isOne checks.  (Missed this file when
I committed the others.)

Revision 2800 - Directory Listing
Modified Sun Sep 19 14:27:39 2004 UTC (15 years, 2 months ago) by dpvc
Added isZero and isOne checks for Parser::Value objects (i.e., for
constants within formulas).  These now correctly handle vector and
matrices, in particular.  The isOne and isZero checks are used in the
reduce() method to simplify formulas.

Revision 2799 - Directory Listing
Modified Sun Sep 19 11:49:32 2004 UTC (15 years, 2 months ago) by dpvc
Added a new flag to the Formula()->cmp answer checker that allows a
constant-valued formula to be evaluated and then use the checker for
the resulting type.  This is useful when you want the correct answer
for a numeric check to be shown in a symbolic form (like "pi/4")
rather than as a decimal number.  To do this, use

       Formula("pi/4")->cmp(eval=>1);

rather than Real(pi/4)->cmp, which would show the correct answer as
0.785398.  Note that Formula("pi/4")->cmp would also match against
pi/4, but it does it as a function rather than a number, so error
messages might be issued indicating that the checker is expecting a
formula that returns a number, rather than just a number; this might
be confusing to a student.  It would also accept answers like
"pi/4-x+x" as correct, whereas with eval=>1 this would produce an
error message saying that the answer was supposed to be a number not a
formula returning a number.

Similarly, if you want to show sqrt(2)/2 as the correct answer, use

     Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0);
     Formula("sqrt(2)/2")->cmp(eval=>1);

The first line tells the parser not to automatically reduce
expressions that only involve constants, so that the value of the
formula in the second line will not be reduced to a decimal before
the cmp method is called.

Revision 2798 - Directory Listing
Modified Sun Sep 19 11:29:06 2004 UTC (15 years, 2 months ago) by dpvc
Make Formula()->eval return a Real (ie, aValue::Real object) rather
than a perl number.  That way, you can use $f->eval->cmp rather than
needing Real($f->eval)->cmp, and so on.

Also make Formula()->perl do the same, for consistency.

(This could have been accomplished by having the Parser::Number class
evaluate to a Real, but for efficiency during computation, we put
off making the Real object until the end.  It probably doesn't make
that big a difference, but every little bit helps.)

Revision 2797 - Directory Listing
Modified Sun Sep 19 01:16:10 2004 UTC (15 years, 2 months ago) by dpvc
File needed to reduction flags that was accidentally left out of the
previous commit.  Sorry!

Revision 2796 - Directory Listing
Modified Sun Sep 19 01:15:03 2004 UTC (15 years, 2 months ago) by dpvc
Added flags that control the reductions performed by
Formula()->reduce.  Each reduction operation can be individually
enabled or disabled in the context, and in the reduce() call itself.

More complex reductions need to be developed.

Revision 2795 - Directory Listing
Modified Sat Sep 18 23:16:37 2004 UTC (15 years, 2 months ago) by dpvc
Fixed typo in addParens method name.

Revision 2791 - Directory Listing
Modified Thu Sep 16 23:43:54 2004 UTC (15 years, 2 months ago) by dpvc
Don't reduce constants in the display of student answers (so they can
tell how the parser interprets their answer).  The drawback is that
the final number is not displayed.  (We may need to add more columns
to the results display.)

Revision 2790 - Directory Listing
Modified Thu Sep 16 23:03:03 2004 UTC (15 years, 2 months ago) by dpvc
Use extra parens in the string version of the student's answer, but
not in the professor's (unless the problem sets the showExtraParens
flag).

Revision 2789 - Directory Listing
Modified Thu Sep 16 22:24:32 2004 UTC (15 years, 2 months ago) by dpvc
Added context flags to control automatic reduction of operations that
involve only constant values.  The default is to combine constants,
but this can now be disabled.

Also added a new flag to control the addition of extra parentheses
that make string values painfully unambiguous (these are for
situations that students tend to get wrong).  By default this is
turned off (so that professor answers won't contain excessive
parentheses), but the answer checker will be made to turn this on for
student answers.

Finally, when extra parens are added to formulas, they alternate
between ( ) and [ ] to make it easier to read.

Revision 2788 - Directory Listing
Modified Thu Sep 16 22:19:59 2004 UTC (15 years, 2 months ago) by dpvc
Produce an error when attempting to auto-create a formula using a
function that has been removed from the current context.

Revision 2772 - Directory Listing
Modified Sun Sep 12 11:11:47 2004 UTC (15 years, 3 months ago) by dpvc
Make partial credit in list answer checkers be the default (now that
WeBWorK can handle this).

Revision 2771 - Directory Listing
Modified Sat Sep 11 17:11:29 2004 UTC (15 years, 3 months ago) by dpvc
Fixed a bug with constants where the values were being cached so that
changes in the context were not being reflected in the formulas that
use them.

Revision 2768 - Directory Listing
Modified Fri Sep 10 23:55:31 2004 UTC (15 years, 3 months ago) by dpvc
When creating formulas from functions, don't evaluate even if the
formula is constant.  (This makes it possible to create automatically
create formulas even if they only contain constants.)

Revision 2757 - Directory Listing
Modified Fri Sep 10 14:50:14 2004 UTC (15 years, 3 months ago) by dpvc
No longer produces the message that there are too many answers if
hints are being shown about individual entries in a list.  (This gave
away the answer about which ones to remove.)

Revision 2756 - Directory Listing
Modified Fri Sep 10 14:48:35 2004 UTC (15 years, 3 months ago) by dpvc
Changed the error message produced for functions that have been
removed from the parser.  I hope this will be more appropriate for
students.

Revision 2746 - Directory Listing
Modified Wed Sep 8 02:00:52 2004 UTC (15 years, 3 months ago) by dpvc
Fixed error where AlgParser produces \sech and \csch, which are not
defined in TeX.  This fixes bug #665.

Revision 2701 - Directory Listing
Modified Sat Aug 28 15:53:09 2004 UTC (15 years, 3 months ago) by dpvc
Only convert (f(x))^2 to f^2(x) for specified functions f
(as marked in the Context).

Revision 2698 - Directory Listing
Modified Sat Aug 28 13:52:33 2004 UTC (15 years, 3 months ago) by dpvc
Add better error reporting in PG translator.  In particular, these
changes add two new features:

	1)  produce a full stack trace when a .pg file dies, and
	2)  convert (eval nnn) references to filenames, when
	    possible, in warn and die messages while processing a
	    .pg file.

There is also a change in the webwork tree that is needed to make this
all work, so be sure to apply updates in both trees.

Revision 2697 - Directory Listing
Modified Sat Aug 28 12:43:57 2004 UTC (15 years, 3 months ago) by dpvc
Two more minor TeX improvements.

Revision 2696 - Directory Listing
Modified Sat Aug 28 12:34:56 2004 UTC (15 years, 3 months ago) by dpvc
Improved TeX and string output in a number of situations.  Improved
use of parentheses to avoid things like x+-3.  Fixed wrong parentheses
in powers.  Display (sin(x))^2 as sin^2(x) in TeX output.

Revision 2692 - Directory Listing
Modified Fri Aug 27 21:49:36 2004 UTC (15 years, 3 months ago) by dpvc
Use the current context if the answer doesn't have one itself (like
with Value objects).

Revision 2688 - Directory Listing
Modified Fri Aug 27 19:42:59 2004 UTC (15 years, 3 months ago) by dpvc
Added in functMaxConstantOfIntegration support in the adaptive
parameter answer checking.  Also added a flag to the formula answer
checker that allows checking a formula up to a constant (for
integration problems).  This really just adds a new parameter to the
context and adds that to the formula, so there is nothing deep about
this.

	ANS(Formula("2x")->cmp(upToConstant=>1));

Finally, don't look for adaptive parameters if they aren't actually
used in the professor's formula (even if they are defined).

Revision 2687 - Directory Listing
Modified Fri Aug 27 00:28:27 2004 UTC (15 years, 3 months ago) by dpvc
Added ability to have linear adaptive parameters in the function
answer checker.  It only works for real-valued functions, though.
To use a parameter, use

       Context()->variables->add(a=>'Parameter');

and then use 'a' as a variable within your answer.  The student will
not be allowed to enter the parameter, but the professor will.

Note that the correct answer will show the full professor's answer,
including the parameters, even though the student can't type it.  Is
this the right behaviour?

Revision 2684 - Directory Listing
Modified Tue Aug 24 21:35:21 2004 UTC (15 years, 3 months ago) by dpvc
Added the makeUnion call that was removed earlier.  The AnswerChecker
for formulas sometimes called it (when the student's answer is constant).

Revision 2682 - Directory Listing
Modified Tue Aug 24 03:36:54 2004 UTC (15 years, 3 months ago) by dpvc
Fixed a bug with  sin^2 x  that introduced when I adjusted the
error report for implied multiplication.

Revision 2681 - Directory Listing
Modified Tue Aug 24 03:34:47 2004 UTC (15 years, 3 months ago) by dpvc
TeX mode now adds parentheses around fractions, when needed.

Revision 2680 - Directory Listing
Modified Tue Aug 24 03:33:30 2004 UTC (15 years, 3 months ago) by dpvc
Made string function look for a string field in teh definition of the
function as an override for its name. (This way, you can make asin
appear as arcsin or even sin^(-1) if you want).

Revision 2679 - Directory Listing
Modified Tue Aug 24 03:31:47 2004 UTC (15 years, 3 months ago) by dpvc
Fixed wrong error messages when operators are undefined in a context.

Revision 2678 - Directory Listing
Modified Mon Aug 23 23:55:37 2004 UTC (15 years, 3 months ago) by dpvc
Modified the parser so that the classes for the various object
constructors are stored in the context table rather than hard-coded
into the parser.  That way, you can override the default classes with
your own.  This gives you even more complete control to modify the
parser.  (You had been able to replace the definitions of operators,
functions and list-like objects, but could not override the behaviour
of numbers, strings, variables, and so on.  Now you can.)

This effects most of the files, but only by changing the name of the
calls that create the various objects.

There are also a couple of other minor fixes.

Revision 2676 - Directory Listing
Modified Mon Aug 23 05:00:16 2004 UTC (15 years, 3 months ago) by dpvc
Better highlighting for syntax error involving implied
multiplication.  (No highlighted had been done in the past.)

Revision 2675 - Directory Listing
Modified Mon Aug 23 04:59:05 2004 UTC (15 years, 3 months ago) by dpvc
Get the type right when evaluating an AbsoluteValue and obtaining a
Value object.

Revision 2674 - Directory Listing
Modified Mon Aug 23 04:58:00 2004 UTC (15 years, 3 months ago) by dpvc
Remove more lines in error messages produced while evaluation student
answers.

Revision 2673 - Directory Listing
Modified Mon Aug 23 01:21:27 2004 UTC (15 years, 3 months ago) by dpvc
Moved WW-specific routines from Parser.pm to WeBWorK.pm.
Changed error reporting when the error message was not generated by
the parser directly.  (The stack trace and line number references are
removed before the error is reported.)

Revision 2672 - Directory Listing
Modified Sun Aug 22 22:46:14 2004 UTC (15 years, 3 months ago) by dpvc
Added easy calls to disable/enable collections of functions or
individual functions in the current context.  So you can say

	   Parser::Context::Functions::Disable('Trig');

to disallow the use of trig functions, or

	   Parser::Context::Functions::Disable('Trig','Numeric');
	   Parser::Context::Functions::Enable('sqrt');

to disable trig and numeric functions (like log, exp, abs, etc) but
allow sqrt.

Note that disabling sqrt() does not disable x^(1/2) (this must be done
through disabling the ^ and ** operators), and disabling abs() does
not disable |x| (which must be done by removing the '|' definition
from the Context's parens list).

Revision 2671 - Directory Listing
Modified Sun Aug 22 21:18:06 2004 UTC (15 years, 3 months ago) by dpvc
Fixed some inconsistencies between handing of matrices within the
parser and Value packages.  Added a predefined Matrix context.

Revision 2670 - Directory Listing
Modified Sun Aug 22 16:06:28 2004 UTC (15 years, 3 months ago) by dpvc
Had the default granularity the wrong direction.

Revision 2669 - Directory Listing
Modified Sun Aug 22 15:42:50 2004 UTC (15 years, 3 months ago) by dpvc
Made the granularity of the test-point intervals be a parameter that
can be set on a global or variable-by-variable basis, so this is now
controlable from the .pg file.  For example:

            Context("Numeric")->variables->are(
              k=>{limits=>[1,10], resolution=>1},
              x=>{limits=>[-2,2], granularity=>1000},
            );

will make k be a variable that will only take on integer values
between 1 and 10, and x a variable that will take on one of 1000
different values evenly spaced between -2 and 2 (so resolution is
4/1000 in this case).

These parameters can also be set for an individual formula:

           $f = Formula("k^2-1");
           $f->{resolution} = 1;
           $f->{limits} = [0,10];

Revision 2668 - Directory Listing
Modified Sun Aug 22 02:55:38 2004 UTC (15 years, 3 months ago) by dpvc
Fixed TeX output of Matrices to use \array rather than \matrix for
matrices with formulas as entries (this had already been fixed for
constant matrices).  Made intervals produce formulas when of of the
endpoints is a formula.  Removed unneeded comment.

Revision 2667 - Directory Listing
Modified Sun Aug 22 02:51:53 2004 UTC (15 years, 3 months ago) by dpvc
Added support for dimension warnings in the answer checker for
formulas that return points, vectors or matrices.

Revision 2666 - Directory Listing
Modified Sun Aug 22 00:56:32 2004 UTC (15 years, 3 months ago) by dpvc
Formulas can now be compared even if their variables are complex
numbers, or even points or vectors!  This makes it possible to ask
students for complex functions like z^2+i and so on.

You can specify limits for variables either via
Context()->variables->set(x=>{limits=>[0,1]})  (for reals) or
Context()->variables->set(z=>{limits=>[[-2,2],[0,1]]}) (for complexes).
Similarly for points and vectors (where the number of sub arrays
depends on the dimension).  You can also give the limits for a
specific formula by assigning to its ->{limits} field:

    $f = Formula("sqrt(x-10)");
    $f->{limits} = [10,12];

There are now named variable types for 'Point2D', 'Point3D',
'Vector2D' and 'Vector3D', in addition to 'Real' and 'Complex'.
You can also specify a variable type by giving an explicit instance of
a value of the given type.  E.g.

    Context()->variables->add(x=>'Real',y=>0);     # two real variables
    Context()->variables->add(z=>'Complex',w=>i);  # two complexes
    Context()->variables->add(r=>Vector(0,0,0));   # a vector in R^3
    Context()->variables->add(X=>'Vector3D');      # a vector in R^3

There still needs to be more error checking in processing
user-supplied limits, but I'm not sure how much overhead is worth it.

Revision 2665 - Directory Listing
Modified Sun Aug 22 00:41:44 2004 UTC (15 years, 3 months ago) by dpvc
Made the default context be Numeric context rather than Full context.
Since there is only one variable in this context, it will speed up
function answer checking.  It will also encourage you to choose the
correct context explicitly.

Also changed Complex context to have z as the only variable.  If you
want x and y as reals, you need to add them in by hand.  Again, this
is for efficiency in answer checking.

Revision 2664 - Directory Listing
Modified Sat Aug 21 22:02:14 2004 UTC (15 years, 3 months ago) by dpvc
Added a file to perform WeBWorK-specific modifications to the
Parser/Value packages.  (I've tried to make these independent of
WeBWorK, so you can use them in other perl code if you want to.)

The parameters for fuzzy reals and some of the other parameters now
are taken from the pg->{ansEvalDefaults} values (as defined in
global.conf or course.conf).  More still needs to be done with this,
however.

Revision 2661 - Directory Listing
Modified Fri Aug 20 15:56:56 2004 UTC (15 years, 3 months ago) by dpvc
A number of fixes to make handing lists work better.  In particular,
you can now specify checks for whether the right kinds of parentheses
(or none at all) are used on the student's answer.  Some of the flags
for the list checker have been changed to accommodate this.

Revision 2660 - Directory Listing
Modified Fri Aug 20 15:52:32 2004 UTC (15 years, 3 months ago) by dpvc
A number of adjustments to get negative infinities to work better.
They used to be stored as separate Parser strings, but now they are
flagged versions of a single string.

All of the problems are really due to the fact that there is no
Infinity class in the Parser (only a Value version).  That should be
changed, but will require some work, and can be put off for now.

It would be best if the classes within the two packages would match up
nearly 1-to-1, but for historical reasons, they don't.  Since the
introduction of Real, String and Infinity classes to the Value
package, The Infinity class is the one main difference between the
two, and once that is fixed, everything needs to be looked over to
check for unnecessary complications due to the historical lack of classes
in one or the other package.

Revision 2658 - Directory Listing
Modified Fri Aug 20 11:17:06 2004 UTC (15 years, 3 months ago) by dpvc
Make blank patterns be ^$ (which should never match) rather than empty
(which always matches).  this fixes a problem where if a context has
no functions, for example, the parser would attempt to create function
calls to a function named ''.

Revision 2657 - Directory Listing
Modified Fri Aug 20 11:13:51 2004 UTC (15 years, 3 months ago) by dpvc
Handle trapped error messages that are not produced by the parser
error reporter (i.e., by bugs within the parser itself).  Also added
an error if implied multiplication is attempted when the operator for
it is not defined in the current context.

Revision 2656 - Directory Listing
Modified Fri Aug 20 02:13:38 2004 UTC (15 years, 3 months ago) by dpvc
We need to protect the HTML in the professor's answer so that if it
contains <, for example, it won't disappear.

Revision 2655 - Directory Listing
Modified Fri Aug 20 02:11:50 2004 UTC (15 years, 3 months ago) by dpvc
Fixed typo.

Revision 2654 - Directory Listing
Modified Fri Aug 20 02:11:08 2004 UTC (15 years, 3 months ago) by dpvc
Avoid possible infinite recursion in promotePrecedence() when special
precedence is used.

Revision 2653 - Directory Listing
Modified Thu Aug 19 17:31:18 2004 UTC (15 years, 3 months ago) by dpvc
Fixed error with handling of +infinity and -infinity.
(They had been defined as strings, but now we can let the + and -
operators handle them).

Revision 2650 - Directory Listing
Modified Thu Aug 19 14:23:00 2004 UTC (15 years, 3 months ago) by dpvc
Added Parser::Number::NoDecimals() function that causes the parser to
give an error message when the student types a decimal number.  This
means the student must enter fractions as fractions, or values like
sqrt(2) or pi/4 symbolically not numerically.

Revision 2649 - Directory Listing
Modified Thu Aug 19 14:19:32 2004 UTC (15 years, 3 months ago) by dpvc
Fixed an error in the generation of regexp patterns for the various
data types.

Revision 2648 - Directory Listing
Modified Thu Aug 19 12:38:47 2004 UTC (15 years, 3 months ago) by dpvc
The answer checkers now work with subclasses of Formulas that are not
part of the Value:: package tree itself (we call Value::isFormula()
rather than checking the class directly).

I also removed the various cmp_* flags that stored method names as
they ended up not needing to be used (they were intended as a means of
overriding the default method names, but subclassing turned out to be
a better approach).

I moved some initialization of the answer checker out of the anonymous
subroutine that is installed in the checker and just have that
subroutine call the correct answer's main checker (which I renamed).

Finally, I changed the student_ans value to be an HTMLized version of
the student answer, since the student could include things like < in
his answer (e.g., for vectors), in which case his whole answer might
disappear.  I wonder if this couldn't be handled better at a higher
level, as it seems wrong to make the student_ans be HTML rather than
the parsed string.  I originally thought Problem.pm could do the
protecting of HTML special characters, but this won't work without
additional changes, since some answer checkers put HTML into
student_ans to mark sytanx errors in the student answer, and you DON'T
want to protect those HTML characters.  The student_ans field is
probably being misused in this, and there might want to be another
field that gets used by Problem.pm in place of student_ans (which can
be HTML protected) when it is non-empty; say student_HTML or something
like that.  The answer checkers could use that field if it wants to
add HTML to the student answer, and student_ans otherwise, with the
assurance that it's HTML characters will be protected.  That way, if a
second answer checker calls the first (like some list checkers do),
then the second checker doesn't have to worry about removing HTML from
the student ans, and doesn't ahve to wonder whether the student_ans
actually contains an error message or syntax markings rather than the
actual student answer.

Revision 2647 - Directory Listing
Modified Thu Aug 19 12:18:56 2004 UTC (15 years, 3 months ago) by dpvc
Context() now accepts a reference to an actual Context object rather
than a name of a predefined context, and will switch to that.

Revision 2646 - Directory Listing
Modified Thu Aug 19 12:16:41 2004 UTC (15 years, 3 months ago) by dpvc
Make it possible to create subclasses of objects in the value package
that are not actually in the Value:: package tree.  This makes it
possible to have .pl files (that are run via loadMacros) that create
new Value object classes that are local to the problem rather than
global to the system.  (With mod_perl, if a .pl file added to the
Value:: tree itself, the results would be persistent, and this could
adversely affect future problems processed by the same httpd child
process.  It could lead to "redefined subroutine" errors, or worse.)
This provides a safe way to extend the parser on a problem-specific
basis.

This technique is used in the line and plane answer checkers (coming
soon), for example.  If such a checker becomes widely used, it can
always be added into the Value:: tree at a later time.

Revision 2645 - Directory Listing
Modified Thu Aug 19 12:02:15 2004 UTC (15 years, 3 months ago) by dpvc
Make sure equality always returns a defined value, and
put spaces around the equal sign in string output.

Revision 2643 - Directory Listing
Modified Thu Aug 19 11:55:56 2004 UTC (15 years, 3 months ago) by dpvc
Use the standard precedences rather than the experimental ones by
default.  The professor will need to specificaly request the
non-standard ones, for now.

Revision 2634 - Directory Listing
Modified Tue Aug 17 15:21:58 2004 UTC (15 years, 3 months ago) by dpvc
Changed the string used for the student answer to be taken from the
unevaluated formula rather than the fully-evaluated one.  This leaves
constants unreplaced, for one thing.

Currently the parser combines constants automatically during the parse
[which should be controllable by a flag], so student answers that
produce numbers are fully evaluated at this point already, except for
constant substitution.  This could be changed so that even for
numberic results, the student sees the parsed expression (rather than
the numeric result), which might help them identify where they and the
parser differ in their interpretation.  It is still nice to see the
final computed result, however, but there is no place to show the
parsed input as well as the final result.  One solution would be to
add another column (wasting space).  Another would be to make the
value shown be "parsed-value = computed-value" when they are not the
same thing.  A bit ugly, but works within the current framework.

Revision 2632 - Directory Listing
Modified Tue Aug 17 12:05:18 2004 UTC (15 years, 3 months ago) by dpvc
Fixed typo in name of random generator.

Revision 2629 - Directory Listing
Modified Tue Aug 17 02:01:27 2004 UTC (15 years, 3 months ago) by dpvc
Fixed a number of minor problems with creating perl functions from
formulas (this is done automatically as part of the function answer
checker, so is showing up now that I have that checker in place).

Also improved error messages in the function answer checker, and fixed
a bug when students enter a constant list or union when the answer
checker expects formulas.

Revision 2628 - Directory Listing
Modified Mon Aug 16 21:41:05 2004 UTC (15 years, 3 months ago) by dpvc
Allow parser "constants" to be (in reality) formulas.  That way, for
example, you can defined T, N and B to be the formulas for the unit
tangent, normal and binormal of a space curve (as functions of "t")
and the student can write anwers in terms of T, N and B (without
having to compute them).

You could have created FUNCTIONS T(t), N(t) and B(t), and added them
to the parser to get almost the same effect, but the students would
have had to include the "(t)".  (If you want that, go ahead and do it
that way.)

Revision 2627 - Directory Listing
Modified Mon Aug 16 20:22:16 2004 UTC (15 years, 3 months ago) by dpvc
Removed unwanted side-effects of some type-match checks, and moved the
ignoreStrings flag so that it is available for the checkers of ANY type.

Revision 2626 - Directory Listing
Modified Mon Aug 16 19:44:26 2004 UTC (15 years, 3 months ago) by dpvc
One more fix for handling intervals properly (I think it's really
right this time).  Also, named constants that end in numbers will
produce TeX output with the number as a subscript (this was already
true for variable names).

Revision 2625 - Directory Listing
Modified Mon Aug 16 18:35:12 2004 UTC (15 years, 3 months ago) by dpvc
Added string comparison to all Value object classes (to compare the
string value of an object to another string).

Overloaded perl '.' operator to do dot product when the operands are
formulas returning vectors.  (Part of the auto-generation of
formulas).

A few improvements to real and complex class output results.

Made Union class slightly more robust and removed need for makeUnion
method other than in the Union itself.

Revision 2624 - Directory Listing
Modified Mon Aug 16 13:44:45 2004 UTC (15 years, 3 months ago) by dpvc
Added support for unorderd list or formulas with partial credit.
Fixed type mismatch reporting in formula answer checker.
Fixed an error with Unions producing incorrect perl versions under
some circumstances.

Revision 2622 - Directory Listing
Modified Sun Aug 15 22:46:57 2004 UTC (15 years, 3 months ago) by dpvc
Created the first draft of the Parser's function answer checker.  Some
work still needs to be done, in particular, type mismatches are not
being reported, and lists are being processed only as ordered lists
with no partial credit.

This doesn't implement everything from fun_cmp.  In particular, there
is no support for parameter matching at the moment.  This will have to
be added, but I'm not quite sure how to do it when the function's
return value is not a real number (e.g., an interval).

On the other hand, this checker is more forgiving about domain errors:
if tries a point where the professor's function is not defined, it
ignores that one and looks for another (until it decides it can't find
one).  Once it has these points, it tries them on the student's
answer, and if the student's function is undefined, then the student
answer is wrong (since it is not defined somewhere that the
professor's funciton is).  This avoids the "Error evaluating student
function at ..." messages, which just confused most students anyway.

Revision 2621 - Directory Listing
Modified Sun Aug 15 17:05:41 2004 UTC (15 years, 3 months ago) by dpvc
Improved error messages, particularly when the student enters a
formula in an answer that should be constant, and also for incorrect
answers in lists of answers.  There are a few other miscellaneous output
improvements as well.

Revision 2620 - Directory Listing
Modified Sun Aug 15 12:02:05 2004 UTC (15 years, 3 months ago) by dpvc
Had to put back the global context variable after all.  :-(
It gets reset in Parser.pl, so it should be OK even with mod_perl.

Revision 2619 - Directory Listing
Modified Sun Aug 15 00:45:46 2004 UTC (15 years, 3 months ago) by dpvc
Modified Context() function so that it no longer uses a global package
variable for storing the user's context table.

Revision 2617 - Directory Listing
Modified Sun Aug 15 00:13:38 2004 UTC (15 years, 3 months ago) by dpvc
The Union answer checker now uses the generic List checker, so that it
will be able to produce partial credit and hints about which Intervals
are correct.

Revision 2616 - Directory Listing
Modified Sat Aug 14 21:29:21 2004 UTC (15 years, 3 months ago) by dpvc
Added an equality operator (not active initially) that can be used for
things like equations of planes and so on.  I'm working on the answer
checker for that.

Revision 2615 - Directory Listing
Modified Sat Aug 14 21:27:45 2004 UTC (15 years, 3 months ago) by dpvc
*** empty log message ***

Revision 2612 - Directory Listing
Modified Sat Aug 14 19:29:42 2004 UTC (15 years, 4 months ago) by dpvc
Fixed some bugs in the handle of the context in ->string and ->TeX
methods of Value objects.

Revision 2611 - Directory Listing
Modified Sat Aug 14 15:59:35 2004 UTC (15 years, 4 months ago) by dpvc
Fixed a typo in one of the parser answer checkers.  Added a line that
was incorrecctly removed in the parser.

Revision 2610 - Directory Listing
Modified Sat Aug 14 13:55:54 2004 UTC (15 years, 4 months ago) by dpvc
The class file for the Value::String object.  (Forgot to add it before
the last commit.  Sorry!)

Revision 2609 - Directory Listing
Modified Sat Aug 14 13:54:52 2004 UTC (15 years, 4 months ago) by dpvc
Added a String type to the Value package.  Mostly this is to make it
possible to generate an answer checker for it that uses the parser.
It also makes it more consistent for handling things like stringify,
especially when they are recursively called internally.

Added new default strings "NONE" and "DNE", since these get used a
lot.

Modified how the default parameters are set up for the answer
checkers, and how the answer checker reports the expected answer type
in type mismatch error messages.

Revision 2607 - Directory Listing
Modified Sat Aug 14 11:26:49 2004 UTC (15 years, 4 months ago) by dpvc
Allow unary + and - to work on infinities.

Revision 2606 - Directory Listing
Modified Sat Aug 14 11:25:47 2004 UTC (15 years, 4 months ago) by dpvc
Can now specify that the objects stringify themselfs in their TeX
forms rather than their answer-string forms.  This makes it easier to
use the objects in the text of a problem (without having to call ->TeX
explicitly each reference).

Use

       Context()->texStrings

to start outputting TeX strings, and

      Context()->normalStrings

to switch back.

Revision 2605 - Directory Listing
Modified Sat Aug 14 02:50:18 2004 UTC (15 years, 4 months ago) by dpvc
Incorporated infinities into Parser package better.  They have been
stored as String objects (with extra data) in the parser, and I've
left it that way, but now they convert to/from Vallue::Infinity
objects correctly, and these are used for generating the output.

Also added the Infinity answer checker, and adjusted the error
messages produces by type mismatches in the answer checkers and
elsewhere.

Revision 2604 - Directory Listing
Modified Fri Aug 13 23:49:16 2004 UTC (15 years, 4 months ago) by dpvc
Fixed some output issues with intervals and unions.

Revision 2603 - Directory Listing
Modified Fri Aug 13 23:01:07 2004 UTC (15 years, 4 months ago) by dpvc
Added an Infinite object class for the Value package.  Still need to
add it to the Parser package.

Revision 2601 - Directory Listing
Modified Fri Aug 13 19:06:09 2004 UTC (15 years, 4 months ago) by dpvc
Added ability to report incorrect coordinates in point and vector
answers, and incorrect endpoints and endpoint types in intervals.
Separated these kinds of checks from the typeMatch check, where they
didn't really belong.

Added ability to specify intervals and unions as strings in Interval()
and Union(), which makes it easier to make constants of these types.

There are still problems comparing intervals that contain infinities;
I really need to make the infinity object to solve this, so have put
off trying to fix that for now.

Revision 2600 - Directory Listing
Modified Fri Aug 13 14:39:16 2004 UTC (15 years, 4 months ago) by dpvc
Handle list entries that are not Value objects better.

Revision 2599 - Directory Listing
Modified Fri Aug 13 14:19:23 2004 UTC (15 years, 4 months ago) by dpvc
The List object's answer checker is now considerably improved.  It
will allow you to specify an unorderd or ordered check, and whether to
print various kinds of hints for wrong answers.

The checker can return partial credit, but WW doesn't deal well with
this at the moment (some small changes to Problem.pm can take care of
that).  Partial credit should be based on $showPartialCorrectAnswers,
but it is disabled for now.

The list answer checker probably still needs some work, especially
with non-numeric lists.

Revision 2597 - Directory Listing
Modified Fri Aug 13 11:38:22 2004 UTC (15 years, 4 months ago) by dpvc
Added answer checker for parallel vectors.
Added option to number checker to have it not report type mismatches
for the known strings (like 'infinity').  (Really need a class for
infinities, and a Value.pm class for strings.)

Revision 2596 - Directory Listing
Modified Thu Aug 12 23:11:32 2004 UTC (15 years, 4 months ago) by dpvc
Have parser handle infinities better.

Revision 2594 - Directory Listing
Modified Thu Aug 12 20:17:18 2004 UTC (15 years, 4 months ago) by dpvc
Fixes for handling intervals better.  In particular, deal better with
ambiguous situations, like (1,2) that could be a point.

You can use [a,a] to specify the single point a.  I'd like to make {a}
represent this (and maybe even {a,b,c} to form finite sets), but this
would interfere with the use of { and } as alternative parentheses.
(Does anyone really use these?)

Do we need a cross product for intervals (and sets) as a means of
representing regions in R^2 (or higher)?

Revision 2593 - Directory Listing
Modified Thu Aug 12 16:48:52 2004 UTC (15 years, 4 months ago) by dpvc
This is a preliminary attempt at adding answer checkers that use the
parser.  If you have a parser object (like a formula or a vector), you
can use the ->cmp method to get an answer checker appropriate for the
object.  For example:

	 Context('Vector');
	 $v = Vector(1,2,3);
	 #  print text of problem
	 ANS($v->cmp);

would produce an answer checker that matched against the vector <1,2,3>.
Most of the parameters are set in the Context, but additional ones can
be passed to the checker (this still needs work).

See the sample problems for more examples.

The checkers for Reals, Complexes, Points, Vectors, Matrices and
Intervals work pretty well.  The ones for List and Union objects need
more work, as they only do an ORDERED check at the moment (the student
answers must be in the same order).  This needs to be fixed.
The checker for Formula objects (which corresponds to fun_cmp) still
needs to be written.

Revision 2592 - Directory Listing
Modified Thu Aug 12 16:40:47 2004 UTC (15 years, 4 months ago) by dpvc
A number of small fixes.  Most were to fix minor bugs in string and
TeX output, particulary for the various list-based objects (like
vectors, intervals, etc.).  There were also some bug fixes in the
comparison routines.  Some additional checks were added for valid
intervals when the coordinates are formulas.

Revision 2583 - Directory Listing
Modified Tue Aug 10 11:22:19 2004 UTC (15 years, 4 months ago) by dpvc
Fixed generation of LaTeX version of sqrt(...).

Revision 2580 - Directory Listing
Modified Mon Aug 9 21:38:58 2004 UTC (15 years, 4 months ago) by dpvc
Forgot to add this file.  It implements the "fuzzy real" class.

Revision 2579 - Directory Listing
Modified Mon Aug 9 21:38:01 2004 UTC (15 years, 4 months ago) by dpvc
Significant update to new parser.

New features include:

  Better control over format of vector output (you can now
    specify ijk-format rather than <...> format)

  "Fuzzy" reals, where the relations like == return true when the
    two values are "close enough".  (This is controlable using
    parameters similar to those used in NUM_CMP).

  The fuzzy reals are now used in vectors/points/matrices/complexes/intervals
    and so on so that their relations will also be fuzzy.  E.g.,
    (1E-13,2) == (0,3) will be true, and norm(Vector(0,1E-13)) will
    equal 0.

  The two main portions of the parser (the Parser and Value packages)
    now share a common context object for configuration purposes.

Revision 2576 - Directory Listing
Modified Wed Aug 4 20:52:28 2004 UTC (15 years, 4 months ago) by dpvc
Make Parser work with PGauxiliaryFunctions.pl, and add the macro files
needed to initialize the parser.

Revision 2558 - Directory Listing
Modified Wed Jul 28 20:32:33 2004 UTC (15 years, 4 months ago) by sh002i
merged changes from rel-2-1-a1 -- stop using that branch.

Revision 2469 - Directory Listing
Modified Thu Jul 8 15:29:45 2004 UTC (15 years, 5 months ago) by apizer
Create equations directory if it doesn't exist.  All directories under
tmp should be recreated if they don't exist.

Arnie

Revision 2461 - Directory Listing
Modified Wed Jul 7 21:26:52 2004 UTC (15 years, 5 months ago) by apizer
Change permission of tmp files so that they can be removed.

Arnie

Revision 2420 - Directory Listing
Modified Sat Jun 26 21:56:44 2004 UTC (15 years, 5 months ago) by jj
Most of the work for adjusting vertical alignment of images is here.

Revision 2409 - Directory Listing
Modified Fri Jun 25 16:27:55 2004 UTC (15 years, 5 months ago) by jj
Allow option of not using the cache.  If its path is the empty string, then
we just return the md5 hash of the latex string followed by a 1.

Revision 2389 - Directory Listing
Modified Thu Jun 24 18:13:33 2004 UTC (15 years, 5 months ago) by dpvc
Removed extra spaces from around dvipng images.

(These can cause bad line breaks, e.g. between mathematics and the
punctuation that follows.)

Revision 2369 - Directory Listing
Modified Wed Jun 23 01:18:58 2004 UTC (15 years, 5 months ago) by sh002i
ImageGenerator is now using WeBWorK::Constants

Revision 2363 - Directory Listing
Modified Tue Jun 22 18:03:07 2004 UTC (15 years, 5 months ago) by jj
When using the imageCache (which is always), put images into subdirectories
based on the first two characters of their md5 hash.

Revision 2345 - Directory Listing
Modified Thu Jun 17 20:02:12 2004 UTC (15 years, 5 months ago) by apizer
Changed pacckage name from strict to ww_strict per Sam's suggestion
to prevent redefining warnings.

Arnie

Revision 2274 - Directory Listing
Modified Mon Jun 7 23:53:45 2004 UTC (15 years, 6 months ago) by sh002i
got rid of remaining calls to "wwerror". Fixes bug #530.

Revision 2167 - Directory Listing
Modified Sat May 22 22:32:43 2004 UTC (15 years, 6 months ago) by gage
Moved be_strict after package main;

Revision 2164 - Directory Listing
Modified Sat May 22 22:10:30 2004 UTC (15 years, 6 months ago) by gage
Moving ww_strict.pm forward to 5.8.3 compatible version
with require Carp; commented out

Revision 2163 - Directory Listing
Modified Sat May 22 21:34:58 2004 UTC (15 years, 6 months ago) by gage
Moved ww_strict.pm back to be identical with strict.pm from perl 5.6

Revision 2158 - Directory Listing
Modified Sat May 22 20:48:51 2004 UTC (15 years, 6 months ago) by gage
We are now using ww_strict.pm instead of strict.pm in be_strict;

Revision 2157 - Directory Listing
Modified Sat May 22 20:46:20 2004 UTC (15 years, 6 months ago) by gage
We are using our own version of strict.pm that has a require Carp;  commented out.
This is included in be_strict which is used to implement strict within PG macro files
which need to be evaluted inside the Safe compartment

Revision 2142 - Directory Listing
Modified Fri May 21 23:54:00 2004 UTC (15 years, 6 months ago) by apizer
Replaced PGsort with a version that uses quick sort.  This fixes the
problem the old PGsort had with Perl compiled with ithreads.

Arnie

Revision 2135 - Directory Listing
Modified Fri May 21 01:34:28 2004 UTC (15 years, 6 months ago) by sh002i
Modified DVIPNG_ARGS to work with dvipng >= 1.0.

Revision 2060 - Directory Listing
Modified Sun May 9 17:43:32 2004 UTC (15 years, 7 months ago) by gage
Cosmetic fixes to code layout.

Revision 2057 - Directory Listing
Modified Sat May 8 22:53:03 2004 UTC (15 years, 7 months ago) by gage
Preliminary changes that may eventually allow us to solve the be_strict problem for 5.8.0

Revision 1779 - Directory Listing
Modified Fri Feb 6 02:52:42 2004 UTC (15 years, 10 months ago) by gage
Allow a 256 error from dvipng.  This seems to be necessary on webwork.math.rochester.edu, so I'm commiting
it to the CVS as well to keep the two systems in sync.

--Mike

Revision 1759 - Directory Listing
Modified Mon Jan 26 16:59:30 2004 UTC (15 years, 10 months ago) by gage
Minor change to the definition of the timer

Revision 1688 - Directory Listing
Modified Sat Dec 27 21:34:04 2003 UTC (15 years, 11 months ago) by gage
Added error messages that should make it easier to tell if
certain directories have not been created. Also checks that
files are actually created and written at each step of the process.
--Mike

Revision 1556 - Directory Listing
Modified Wed Oct 1 02:40:09 2003 UTC (16 years, 2 months ago) by sh002i
changed the way the IO modules work: shared subroutines are in IO now,
and IO has a hash %WeBWorK::PG::IO::SHARE which can be added to
Translator's %shared_subroutine_hash directly.

Revision 1555 - Directory Listing
Modified Wed Oct 1 02:31:54 2003 UTC (16 years, 2 months ago) by sh002i
changed documentation to reflect the fact that reh refresh and mtime
flags are no longer used

Revision 1553 - Directory Listing
Modified Tue Sep 30 01:20:55 2003 UTC (16 years, 2 months ago) by sh002i
added files from WW2

Revision 1540 - Directory Listing
Modified Sat Sep 27 16:47:34 2003 UTC (16 years, 2 months ago) by gage
When displaying a raw student answer, nulls are converted to \0 so that they
can be seen.  This is probably redundant since strings with multiple values
separated by nulls are supposed to be converted to references to arrays before
they reach this point.
--Mike

Revision 1535 - Directory Listing
Modified Fri Sep 26 21:16:18 2003 UTC (16 years, 2 months ago) by gage
Added line which prints out the raw student answer when the debug
flag is on.
--Mike

Revision 1524 - Directory Listing
Modified Thu Sep 25 00:28:15 2003 UTC (16 years, 2 months ago) by sh002i
added image generation modules from WW2

Revision 1454 - Directory Listing
Modified Tue Aug 12 16:43:36 2003 UTC (16 years, 4 months ago) by jj
Redoing fix to random so that random(2,7,3) won't produce 8.  The original
fix was lost in the merger with mod-perl version.

Revision 1333 - Directory Listing
Modified Wed Jul 9 23:20:23 2003 UTC (16 years, 5 months ago) by jj
Fixed new bug introduced by, er, my previous bug fix.

Revision 1310 - Directory Listing
Modified Tue Jul 1 15:35:51 2003 UTC (16 years, 5 months ago) by gage
Changed the defintion of *i to be inside the Complex package.
this and the change to dangerousMacros seems to have cured bug #116
--Mike

Revision 1303 - Directory Listing
Modified Mon Jun 30 20:36:57 2003 UTC (16 years, 5 months ago) by apizer
added missing hyperbolic, inverse trig, and inverse hyperbolic functions
cintributed by Davide Cervone

Arnie

Revision 1290 - Directory Listing
Modified Thu Jun 26 22:43:15 2003 UTC (16 years, 5 months ago) by gage
Merge the time optimized branch and the main branch.  I forgot one subroutine
--Mike

Revision 1285 - Directory Listing
Modified Thu Jun 26 21:04:09 2003 UTC (16 years, 5 months ago) by gage
Adding preliminary ability to decompose non-square matrices.  Won't work
if a permutation is required (i.e. a pivot)
--Mike

Revision 1280 - Directory Listing
Modified Thu Jun 26 17:42:18 2003 UTC (16 years, 5 months ago) by malsyned
Merged the changes needed to work with the new WW2 translator
optimizations into the main pg branch.

Revision 1117 - Directory Listing
Modified Wed Jun 11 04:00:37 2003 UTC (16 years, 6 months ago) by gage
Added a feature to correspond to a change made in process_answers in Translator.pm.

 Each answer
evaluator is given the
answer AND the answer label (e.g. AnSWer1) of the answer.  The label
is placed in the answer hash at $hash{ans_label} for use by filters
that need to know the label of the answer they are evaluating.

--Mike

Revision 1094 - Directory Listing
Modified Mon Jun 9 22:46:25 2003 UTC (16 years, 6 months ago) by jj
Fixed bug when the function is sampled at a point where it is not defined.

Revision 1079 - Directory Listing
Modified Mon Jun 9 17:36:12 2003 UTC (16 years, 6 months ago) by apizer
removed unneccesary shebang lines

Revision 1073 - Directory Listing
Modified Mon Jun 9 13:30:46 2003 UTC (16 years, 6 months ago) by gage
This module contains IO used in saving an answer to a file.
--Mike

Revision 1070 - Directory Listing
Modified Mon Jun 9 02:02:20 2003 UTC (16 years, 6 months ago) by gage
Bringing this version of Matrix.pm up to date with the latest in
courseScripts.
--Mike

Revision 1050 - Directory Listing
Added Fri Jun 6 21:39:42 2003 UTC (16 years, 6 months ago) by sh002i
moved PG modules and macro files from webwork-modperl to pg
-sam

Sort log by:

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9