From: dpvc v. a. <we...@ma...> - 2007-11-06 16:47:19
|
Log Message: ----------- When (-x)*y or x*(-y) reductions are performed, don't print extra parentheses in string and TeX version. I.e., display as -xy not -(xy). This makes reduction with polynomials work better. Modified Files: -------------- pg/lib/Parser/BOP: multiply.pm Revision Data ------------- Index: multiply.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Parser/BOP/multiply.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -Llib/Parser/BOP/multiply.pm -Llib/Parser/BOP/multiply.pm -u -r1.15 -r1.16 --- lib/Parser/BOP/multiply.pm +++ lib/Parser/BOP/multiply.pm @@ -67,6 +67,13 @@ return $self; } +sub makeNeg { + my $self = shift; + $self = $self->SUPER::makeNeg(@_); + $self->{op}{noParens} = 1; + return $self; +} + $Parser::reduce->{'1*x'} = 1; $Parser::reduce->{'x*1'} = 1; $Parser::reduce->{'0*x'} = 1; @@ -76,6 +83,26 @@ $Parser::reduce->{'x*n'} = 1; $Parser::reduce->{'fn*x'} = 1; +sub string { + my ($self,$precedence,$showparens,$position,$outerRight) = @_; + my $string; my $bop = $self->{def}; + $position = '' unless defined($position); + $showparens = '' unless defined($showparens); + my $extraParens = $self->context->flag('showExtraParens'); + my $addparens = + defined($precedence) && !$self->{noParens} && + ($showparens eq 'all' || (($showparens eq 'extra' || $bop->{fullparens}) && $extraParens > 1) || + $precedence > $bop->{precedence} || ($precedence == $bop->{precedence} && + ($bop->{associativity} eq 'right' || ($showparens eq 'same' && $extraParens)))); + $outerRight = !$addparens && ($outerRight || $position eq 'right'); + + $string = $self->{lop}->string($bop->{precedence},$bop->{leftparens},'left',$outerRight). + $bop->{string}. + $self->{rop}->string($bop->{precedence},$bop->{rightparens},'right'); + + $string = $self->addParens($string) if $addparens; + return $string; +} sub TeX { my ($self,$precedence,$showparens,$position,$outerRight) = @_; @@ -87,7 +114,7 @@ $cdot = '\cdot ' unless $cdot; my $addparens = - defined($precedence) && + defined($precedence) && !$self->{noParens} && ($showparens eq 'all' || $precedence > $bop->{precedence} || ($precedence == $bop->{precedence} && ($bop->{associativity} eq 'right' || $showparens eq 'same'))); |