version 1.26, 2008/09/24 18:01:07
|
version 1.37, 2017/03/07 18:28:02
|
Line 51 sub maximareply {
|
Line 51 sub maximareply {
|
print $socket &escape($cmd)."\n"; |
print $socket &escape($cmd)."\n"; |
my $reply=<$socket>; |
my $reply=<$socket>; |
chomp($reply); |
chomp($reply); |
if ($reply=~/^Incorrect/) { $reply='Error: '.$reply; } |
if ($reply=~/^Incorrect/i) { $reply='Error: '.$reply; } |
return &unescape($reply); |
return &unescape($reply); |
} else { |
} else { |
return 'Error: no connection.'; |
return 'Error: no connection.'; |
Line 61 sub maximareply {
|
Line 61 sub maximareply {
|
sub blacklisted { |
sub blacklisted { |
my ($cmd)=@_; |
my ($cmd)=@_; |
foreach my $forbidden ( |
foreach my $forbidden ( |
'\? ','\?','%o','batch','block' |
'\? ','\?','%i\d+','%o','batch','block' |
,'compil','concat','describe','display2d','file','inchar' |
,'compil','concat','describe','display2d','file','inchar' |
,'includ','lisp','load','outchar','plot','quit' |
,'includ','lisp','load','outchar','plot','quit' |
,'read','reset','save','stin','stout','stringout' |
,'read','reset','save','stin','stout','stringout' |
Line 117 sub runscript {
|
Line 117 sub runscript {
|
|
|
sub maxima_cas_formula_fix { |
sub maxima_cas_formula_fix { |
my ($expression)=@_; |
my ($expression)=@_; |
return &Apache::response::implicit_multiplication($expression); |
$expression=&Apache::response::implicit_multiplication($expression); |
|
$expression=~s/([^\w\%])pi/$1\%pi/gs; |
|
return $expression; |
} |
} |
|
|
sub maxima_run { |
sub maxima_run { |
Line 153 sub maxima_eval {
|
Line 155 sub maxima_eval {
|
|
|
sub compareterms { |
sub compareterms { |
my ($socket,$terma,$termb)=@_; |
my ($socket,$terma,$termb)=@_; |
my $difference=$terma.'-('.$termb.')'; |
my $difference='('.$terma.')-('.$termb.')'; |
if (&blacklisted($difference)) { return 'Error: blacklisted'; } |
if (&blacklisted($difference)) { return 'Error: blacklisted'; } |
my $reply=&maximareply($socket,'trigsimp(trigreduce('.$difference.'));'); |
my $reply=&maximareply($socket,'trigsimp(trigreduce('.$difference.'));'); |
if ($reply=~/^\s*0\s*$/) { return 'true'; } |
if ($reply=~/^\s*0\s*$/) { return 'true'; } |
Line 164 sub compareterms {
|
Line 166 sub compareterms {
|
sub maxima_check { |
sub maxima_check { |
my ($response,$answer,$reterror) = @_; |
my ($response,$answer,$reterror) = @_; |
my $socket=&connect(); |
my $socket=&connect(); |
my $reply=&compareterms($socket,$response,$answer); |
my $reply=&maximareply($socket,$response.';'); |
|
unless ($reply=~/^Error\:/) { |
|
$reply=&compareterms($socket,$response,$answer); |
|
} |
&disconnect($socket); |
&disconnect($socket); |
# integer to string mappings come from capaParser.h |
# integer to string mappings come from capaParser.h |
# 1 maps to 'EXACT_ANS' |
# 1 maps to 'EXACT_ANS' |