[system] / trunk / pg / lib / Value / Matrix.pm Repository:
ViewVC logotype

Log of /trunk/pg/lib/Value/Matrix.pm

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 6899 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 25 20:51:08 2011 UTC (8 years, 5 months ago) by dpvc
File length: 15940 byte(s)
Diff to previous 5943
Initial attempt to link Matrix MathObject to CPAN Matrix library (added methods for the major ones in the CPAN library)

Revision 5943 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 14 04:08:37 2008 UTC (11 years ago) by dpvc
File length: 12059 byte(s)
Diff to previous 5888
Updated ans_array and TeX methods so that Matrix arrays don't have an
extra blank line at the bottom.  (There was an extra \cr that
shouldn't have been there.)

Revision 5888 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Sep 1 11:45:50 2008 UTC (11 years, 3 months ago) by dpvc
File length: 12034 byte(s)
Diff to previous 5696
Don't inherit the ColumnVector flag from Vector operands.  (This fixes
a problem with using the result of matrix-vector multiplication
together with the ->ans_array method.)

Revision 5696 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 14 12:14:21 2008 UTC (11 years, 5 months ago) by dpvc
File length: 11905 byte(s)
Diff to previous 5468
Added

	 no strict "refs"

to try to avoid new error checking in Perl 5.10.

Revision 5468 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Sep 8 21:33:53 2007 UTC (12 years, 3 months ago) by dpvc
File length: 11887 byte(s)
Diff to previous 5108
The make() method now inherits all the settings of the parent object,
so that flags set by the user (e.g., tolerances, periods, and so on)
will be passed on as new objects are created.  For example, in

     $x = Real(1)=>with(tolerance=>.0001);
     $y = sin($x);

$y will also have tolerance set to .0001.

This also applies to binary operations, where the result will now
inherit all the values of either operand, with the left-hand operand
taking precedence when they both have a flag set but to different
values.

This is a significant change, and there may be unforeseen side effects
that I'll have to take care of as they appear.  It passes my test
suite, however, so I'm hoping they will be limited.

Revision 5108 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jul 1 18:34:13 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11763 byte(s)
Diff to previous 5095
Remove unneeded parens and do better type coersion in new() method.
Preserve contexts in more situations.
Handle errors in powers better.
Promote more types of objects (specifically, parse string values) in several places.
Handle dimensions more carefully in comparison.
Handle dimensions more carefully in column extraction.
Allow identity matrix dimension to come from the object creating it, when applicable.
Don't override stringify or string methods.  (This used to be needed
  to force the display to use proper open and close symbols, but
  we now coerce the rows to be of matrix type, so that is no longer needed.)

Revision 5095 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 30 02:33:11 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11876 byte(s)
Diff to previous 5089
Need to use flag() not getFlag() for context objects.

Revision 5089 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 29 22:07:10 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11879 byte(s)
Diff to previous 5042
Transfer flags from parent objects to their children for comparisons
and printing purposes.  Also touch up a few type-coersion issues.  (It
may be possible to not to need Value::isValue() if these can all be
taken care of.)

Revision 5042 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jun 28 01:31:09 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11567 byte(s)
Diff to previous 5012
Recent changes to automatically do promotion in the Value methods was
a mistake.  I put it back into the subclass methods again.

Revision 5012 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jun 21 23:10:13 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11691 byte(s)
Diff to previous 4996
Added Package method to the Context object to replace the
Value->Package() calls and simplify the $self->Package calls (don't
have to look up the context again).

Revision 4996 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jun 10 11:34:27 2007 UTC (12 years, 5 months ago) by dpvc
File length: 11664 byte(s)
Diff to previous 4993
Allow promote() to accept a context as the first argument so that the
promoted object can be forced into the given context.

Revision 4993 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 8 12:09:53 2007 UTC (12 years, 6 months ago) by dpvc
File length: 11550 byte(s)
Diff to previous 4991
Added more flexible type checking for MathObject classes.  This makes
it possible to correctly match types even when the context has
specified a different package to handle a given type, for example.

Revision 4991 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 8 02:09:21 2007 UTC (12 years, 6 months ago) by dpvc
File length: 11523 byte(s)
Diff to previous 4987
Update new() and make() methods to accept a context as the first
parameter (making it easier to create objects in a given context
without having to resort to a separate call to coerce them to the
given context after the fact).

Revision 4987 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jun 7 21:54:46 2007 UTC (12 years, 6 months ago) by dpvc
File length: 11506 byte(s)
Diff to previous 4979
Added Value->Package(name[,context]) to look up what package is
currently set to handle the named type.  E.g.,
Value->Package("Complex") usually returns "Value::Complex".  These can
be overridden in the Context so that modified vesions of the
MathObjects can be made to replace the existing ones more easily.  In
particular, the Parser classes should call these (not yet implemented)
when they create objects, so that you can override the object they
create.

Also cleaned up some more context issues (with still more to come).

Revision 4979 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jun 7 11:59:05 2007 UTC (12 years, 6 months ago) by dpvc
File length: 11495 byte(s)
Diff to previous 4975
More updates for marking MathObjects with the context in which they
were created, so they should now work like the Formula objects in that
respect.  As they are combined via overloaded operators, they should
pass on their contexts correctly.

Also normalized the use of getFlag() to obtain flags from the
MathObject's context rather than looking in the context directly.
This allows the math object to override the flag by setting the flag
value in the object's hash (e.g., $f->{tolerance} = .001).  I've also
added the ability to override context flags via the answerHash (e.g.,
$f->cmp(tolerance => .001)), though some filtering may need to be
added to this at some point.  Note that ONLY the context flags can be
overridden, not other parts of the context.

Revision 4975 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 6 21:44:05 2007 UTC (12 years, 6 months ago) by dpvc
File length: 11515 byte(s)
Diff to previous 4301
This begins some major updates to the Parser and Value libraries.
This may make the MathObjects unstable as things shake down, but I'll
try to keep that to a minimum.

This update reorganizes how the overloading of operations are
implemented.  The base Value class is now overloaded rather than the
individual Value classes.  This makes it easier to make subclasses
that take advantage of the overloading.

The code that handles promoting one MathObject to another has been
updated as a part of this.  This should also make subclassing the
existing MathObjects more flexible.

In the past, Formula objects included a pointer to the Context in
which the object was created, but other MathObject did not.  This
update is the first round of updates to include the context in the
other MathObjects, but more work needs to be done.

The changes here should not affect existing problems; it is possible
that some macro files will need to be updated, but none of the
standard ones in pg/macros seem to need it at the moment.

Revision 4301 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jul 26 13:23:09 2006 UTC (13 years, 4 months ago) by dpvc
File length: 11757 byte(s)
Diff to previous 3716
Allow matrices to be created from lists of vectors or points, or from
formulas returning vectors or points.

Revision 3716 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Oct 16 03:37:17 2005 UTC (14 years, 1 month ago) by dpvc
File length: 11668 byte(s)
Diff to previous 3370
In the past, when Value objects were inserted into strings, they would
automatically include parentheses so that if you had $f equal to 1+x
and $g equal to 1-x, then Formula("$f/$g") would mean (1+x)/(1-x)
rather than 1+(x/1)-x, which is what would happen as a straing string
substitution.

The problem is that this would also happen for real numbers, vectors,
and everything else, even when it wasn't necessary.  So if $x=Real(3),
then "Let x = $x" would be "Let x = (3)".

I have changed the behavior of the string concatenation for Value
objects so that parentheses are only added in a few cases: for
Formulas, Complex numbers, and Unions.  This makes the other Value
objects work more like regular variables in strings, but might cause
some problems with strings that are used as formulas.  For example, if
$a = Real(-3), then "x + 2 $a" will become "x + 2 -3", or "x-1" rather
than the expected "x - 6".  (The old approach would have made it "x +
2 (-3)" which would have worked properly).  For the most part, it is
easier to use something like "x + 2*$a" or even "x" + 2*$a in this
case, so the extra trouble of having to avoid parentheses when you
really meant to substitute the value into a string didn't seem worth
it.

Revision 3370 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jul 12 22:29:53 2005 UTC (14 years, 4 months ago) by dpvc
File length: 11660 byte(s)
Diff to previous 3265
A first pass at making parser error messages localizable.  The
Context()->{error}{msg} hash can be used to specify translations of
the standard messages.  For example,

    Context()->{error}{msg}{'Division by zero'} = "Don't divide by zero, dude!";
    Context()->{error}{msg}{'Function '%s' has too many inputs'} =
        "You passed too many arguments to '%s'";

(I didn't translate into another language, here, but you could do
that, too.)

The msg hash could also be used within answer checkers to make certain
answer messages more appropriate for the given type of expected answer.

Revision 3265 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jun 5 23:22:20 2005 UTC (14 years, 6 months ago) by dpvc
File length: 11670 byte(s)
Diff to previous 3261
Better handling of open and close delimiters that are explicitly set.

Revision 3261 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 4 13:50:41 2005 UTC (14 years, 6 months ago) by dpvc
File length: 11656 byte(s)
Diff to previous 3192
Avoid possible infinite loop with length and typeref calls.

Revision 3192 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Mar 16 13:30:28 2005 UTC (14 years, 8 months ago) by dpvc
File length: 11799 byte(s)
Diff to previous 3171
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 3171 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 15 21:53:23 2005 UTC (14 years, 9 months ago) by dpvc
File length: 11659 byte(s)
Diff to previous 3166
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 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 15 02:20:52 2005 UTC (14 years, 9 months ago) by dpvc
File length: 11702 byte(s)
Diff to previous 3165
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 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 15 02:16:10 2005 UTC (14 years, 9 months ago) by dpvc
File length: 11730 byte(s)
Diff to previous 3074
*** empty log message ***

Revision 3074 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 4 17:56:33 2005 UTC (14 years, 11 months ago) by dpvc
File length: 11496 byte(s)
Diff to previous 2800
Fixed index problem with matrix multiplciation.  (It was returning the
transpose!)

Revision 2800 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Sep 19 14:27:39 2004 UTC (15 years, 2 months ago) by dpvc
File length: 11496 byte(s)
Diff to previous 2671
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 2671 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Aug 22 21:18:06 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11028 byte(s)
Diff to previous 2668
Fixed some inconsistencies between handing of matrices within the
parser and Value packages.  Added a predefined Matrix context.

Revision 2668 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Aug 22 02:55:38 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11017 byte(s)
Diff to previous 2625
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 2625 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Aug 16 18:35:12 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11043 byte(s)
Diff to previous 2615
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 2615 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Aug 14 21:27:45 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11040 byte(s)
Diff to previous 2612
*** empty log message ***

Revision 2612 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Aug 14 19:29:42 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11053 byte(s)
Diff to previous 2606
Fixed some bugs in the handle of the context in ->string and ->TeX
methods of Value objects.

Revision 2606 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Aug 14 11:25:47 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11039 byte(s)
Diff to previous 2603
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 2603 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 13 23:01:07 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11155 byte(s)
Diff to previous 2592
Added an Infinite object class for the Value package.  Still need to
add it to the Parser package.

Revision 2592 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Aug 12 16:40:47 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11198 byte(s)
Diff to previous 2579
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 2579 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Aug 9 21:38:01 2004 UTC (15 years, 3 months ago) by dpvc
File length: 11133 byte(s)
Diff to previous 2558
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 2558 - (view) (download) (as text) (annotate) - [select for diffs]
Added Wed Jul 28 20:32:33 2004 UTC (15 years, 4 months ago) by sh002i
File length: 10776 byte(s)
merged changes from rel-2-1-a1 -- stop using that branch.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9