[system] / trunk / webwork / system / courseScripts / PGanswermacros.pl Repository:
ViewVC logotype

Diff of /trunk/webwork/system/courseScripts/PGanswermacros.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 33 Revision 34
152 $functZeroLevelTolDefault,$functAbsTolDefault,$functNumOfPoints,$functVarDefault, 152 $functZeroLevelTolDefault,$functAbsTolDefault,$functNumOfPoints,$functVarDefault,
153 $functLLimitDefault, $functULimitDefault, $functMaxConstantOfIntegration, 153 $functLLimitDefault, $functULimitDefault, $functMaxConstantOfIntegration,
154 ); 154 );
155 155
156sub _PGanswermacros_init { 156sub _PGanswermacros_init {
157 PG_restricted_eval(q{ 157
158 $BR = $main::BR; # convenient localizations. 158 $BR = $main::BR; # convenient localizations.
159 $PAR = $main::PAR; 159 $PAR = $main::PAR;
160 160
161 # import defaults 161 # import defaults
162 # these are now imported from the %envir variable 162 # these are now imported from the %envir variable
163 $numRelPercentTolDefault = $main::numRelPercentTolDefault; 163 $numRelPercentTolDefault = PG_restricted_eval(q{$main::numRelPercentTolDefault});
164 $numZeroLevelDefault = $main::numZeroLevelDefault; 164 $numZeroLevelDefault = PG_restricted_eval(q{$main::numZeroLevelDefault});
165 $numZeroLevelTolDefault = $main::numZeroLevelTolDefault; 165 $numZeroLevelTolDefault = PG_restricted_eval(q{$main::numZeroLevelTolDefault});
166 $numAbsTolDefault = $main::numAbsTolDefault; 166 $numAbsTolDefault = PG_restricted_eval(q{$main::numAbsTolDefault});
167 $numFormatDefault = $main::numFormatDefault; 167 $numFormatDefault = PG_restricted_eval(q{$main::numFormatDefault});
168 168
169 $functRelPercentTolDefault = $main::functRelPercentTolDefault; 169 $functRelPercentTolDefault = PG_restricted_eval(q{$main::functRelPercentTolDefault});
170 $functZeroLevelDefault = $main::functZeroLevelDefault; 170 $functZeroLevelDefault = PG_restricted_eval(q{$main::functZeroLevelDefault});
171 $functZeroLevelTolDefault = $main::functZeroLevelTolDefault; 171 $functZeroLevelTolDefault = PG_restricted_eval(q{$main::functZeroLevelTolDefault});
172 $functAbsTolDefault = $main::functAbsTolDefault; 172 $functAbsTolDefault = PG_restricted_eval(q{$main::functAbsTolDefault});
173 $functNumOfPoints = $main::functNumOfPoints; 173 $functNumOfPoints = PG_restricted_eval(q{$main::functNumOfPoints});
174 $functVarDefault = $main::functVarDefault; 174 $functVarDefault = PG_restricted_eval(q{$main::functVarDefault});
175 $functLLimitDefault = $main::functLLimitDefault; 175 $functLLimitDefault = PG_restricted_eval(q{$main::functLLimitDefault});
176 $functULimitDefault = $main::functULimitDefault; 176 $functULimitDefault = PG_restricted_eval(q{$main::functULimitDefault});
177 $functMaxConstantOfIntegration = $main::functMaxConstantOfIntegration; 177 $functMaxConstantOfIntegration = PG_restricted_eval(q{$main::functMaxConstantOfIntegration});
178 178
179 } 179
180 ); 180
181} 181}
182 182
183########################################################################## 183##########################################################################
184########################################################################## 184##########################################################################
185## Number answer evaluators 185## Number answer evaluators
388 ); 388 );
389 389
390 set_default_options( \%options, 390 set_default_options( \%options,
391 'tolType' => 'relative', 391 'tolType' => 'relative',
392 'tolerance' => $numRelPercentTolDefault, 392 'tolerance' => $numRelPercentTolDefault,
393 'mode' => 'std', 393 'mode' => 'std',
394 'format' => $numFormatDefault, 394 'format' => $numFormatDefault,
395 'relTol' => $numRelPercentTolDefault, 395 'relTol' => $numRelPercentTolDefault,
396 'zeroLevel' => $numZeroLevelDefault, 396 'zeroLevel' => $numZeroLevelDefault,
397 'zeroLevelTol' => $numZeroLevelTolDefault, 397 'zeroLevelTol' => $numZeroLevelTolDefault,
398 'debug' => 0, 398 'debug' => 0,
399 ); 399 );
400 400
401 num_cmp([$correctAnswer], %options); 401 num_cmp([$correctAnswer], %options);
402} 402}
403 403
404## Similar to std_num_cmp but accepts a list of numbers in the form 404## Similar to std_num_cmp but accepts a list of numbers in the form
405## std_num_cmp_list(relpercentTol,format,ans1,ans2,ans3,...) 405## std_num_cmp_list(relpercentTol,format,ans1,ans2,ans3,...)
1202 1202
1203######################################################################### 1203#########################################################################
1204# Retain this first check for backword compatibility. Allows input of the form 1204# Retain this first check for backword compatibility. Allows input of the form
1205# num_cmp($ans, 1, '%0.5f') but warns against it 1205# num_cmp($ans, 1, '%0.5f') but warns against it
1206######################################################################### 1206#########################################################################
1207 1207
1208 my %known_options = ( 'mode' => 'std', 1208 my %known_options = ( 'mode' => 'std',
1209 'format' => $numFormatDefault, 1209 'format' => $numFormatDefault,
1210 'tol' => $numAbsTolDefault, 1210 'tol' => $numAbsTolDefault,
1211 'relTol' => $numRelPercentTolDefault, 1211 'relTol' => $numRelPercentTolDefault,
1212 'units' => undef, 1212 'units' => undef,
1238 'zeroLevel' => $zeroLevel, 1238 'zeroLevel' => $zeroLevel,
1239 'zeroLevelTol' => $zeroLevelTol, 1239 'zeroLevelTol' => $zeroLevelTol,
1240 'mode' => 'std' 1240 'mode' => 'std'
1241 ); 1241 );
1242 } 1242 }
1243 else { 1243# else {
1244 # handle options 1244# # handle options
1245 1245#
1246 1246#
1247 @opt = ( 'relTol' => $relPercentTol, 1247# @opt = ( 'relTol' => $relPercentTol,
1248 'format' => $format, 1248# 'format' => $format,
1249 'zeroLevel' => $numZeroLevelDefault, 1249# 'zeroLevel' => $numZeroLevelDefault,
1250 'zeroLevelTol' => $numZeroLevelTolDefault, 1250# 'zeroLevelTol' => $numZeroLevelTolDefault,
1251 'mode' => 'std' 1251# 'mode' => 'std'
1252 ); 1252# );
1253 } 1253# }
1254######################################################################### 1254#########################################################################
1255# Now handle the options assuming they are entered in the form 1255# Now handle the options assuming they are entered in the form
1256# num_cmp($ans, relTol=>1, format=>'%0.5f') 1256# num_cmp($ans, relTol=>1, format=>'%0.5f')
1257######################################################################### 1257#########################################################################
1258 %out_options = @opt; 1258 %out_options = @opt;
1262 ); 1262 );
1263 1263
1264 1264
1265 1265
1266 1266
1267
1268 set_default_options( \%out_options, 1267 set_default_options( \%out_options,
1269 'tolType' => (defined($out_options{tol}) ) ? 'absolute' : 'relative', 1268 'tolType' => (defined($out_options{tol}) ) ? 'absolute' : 'relative',
1270 'tolerance' => (defined($out_options{tol}) ) ? $numAbsTolDefault : $numRelPercentTolDefault, 1269 'tolerance' => (defined($out_options{tol}) ) ? $numAbsTolDefault : $numRelPercentTolDefault,
1271 'mode' => 'std', 1270 'mode' => 'std',
1272 'format' => $numFormatDefault, 1271 'format' => $numFormatDefault,
1273 'tol' => $numAbsTolDefault, 1272 'tol' => $numAbsTolDefault,
1274 'relTol' => $numRelPercentTolDefault, 1273 'relTol' => $numRelPercentTolDefault,
1275 'units' => undef, 1274 'units' => undef,
1276 'strings' => undef, 1275 'strings' => undef,
1277 'zeroLevel' => $numZeroLevelDefault, 1276 'zeroLevel' => $numZeroLevelDefault,
1278 'zeroLevelTol' => $numZeroLevelTolDefault, 1277 'zeroLevelTol' => $numZeroLevelTolDefault,
1279 'debug' => 0, 1278 'debug' => 0,
1280 1279
1281 ); 1280 );
1282
1283 1281
1284 1282
1285 1283
1286 1284
1287 1285
1307 # $tol = $out_options{'relTol'}; 1305 # $tol = $out_options{'relTol'};
1308 # $out_options{'tolType'} = $out_options{'relative'}; 1306 # $out_options{'tolType'} = $out_options{'relative'};
1309 $out_options{'tolerance'}=$out_options{'relTol'}; 1307 $out_options{'tolerance'}=$out_options{'relTol'};
1310 # delete($out_options{'tol'}) if exists( $out_options{'tol'} ); 1308 # delete($out_options{'tol'}) if exists( $out_options{'tol'} );
1311 } 1309 }
1312
1313 1310
1314 # thread over lists 1311 # thread over lists
1315 my @ans_list = (); 1312 my @ans_list = ();
1316 1313
1317 if ( ref($correctAnswer) eq 'ARRAY' ) { 1314 if ( ref($correctAnswer) eq 'ARRAY' ) {
1646 $rh_ans; 1643 $rh_ans;
1647} 1644}
1648 1645
1649sub NUM_CMP { # low level numeric compare 1646sub NUM_CMP { # low level numeric compare
1650 my %num_params = @_; 1647 my %num_params = @_;
1651 1648
1652 my @keys = qw ( correctAnswer tolerance tolType format mode zeroLevel zeroLevelTol debug ); 1649 my @keys = qw ( correctAnswer tolerance tolType format mode zeroLevel zeroLevelTol debug );
1653 foreach my $key (@keys) { 1650 foreach my $key (@keys) {
1654 warn "$key must be defined in options when calling NUM_CMP" unless defined ($num_params{$key}); 1651 warn "$key must be defined in options when calling NUM_CMP" unless defined ($num_params{$key});
1655 } 1652 }
1656 1653

Legend:
Removed from v.33  
changed lines
  Added in v.34

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9