Diff for /loncom/homework/default_homework.lcpm between versions 1.96 and 1.97

version 1.96, 2005/03/29 17:57:51 version 1.97, 2005/03/31 14:43:13
Line 518  sub format { Line 518  sub format {
     #if ($options =~ /\$/) { $dollamode=1; }      #if ($options =~ /\$/) { $dollamode=1; }
     #if ($options =~ /,/)  { $commamode=1; }      #if ($options =~ /,/)  { $commamode=1; }
     if ($options =~ /\./) { $alwaysperiod=1; }      if ($options =~ /\./) { $alwaysperiod=1; }
     $fmt=~s/e/E/g;      if ($fmt=~/s$/i) {
     my $result=sprintf('%.'.$fmt,$value);   $result=&format_significant_figures($value,$fmt);
     if ($alwaysperiod && $fmt eq '0f') { $result .='.'; }      } else {
     $result=~s/(E[+-]*)0/$1/;   $fmt=~s/e/E/g;
    my $result=sprintf('%.'.$fmt,$value);
    if ($alwaysperiod && $fmt eq '0f') { $result .='.'; }
    $result=~s/(E[+-]*)0/$1/;
       }
     #if ($dollarmode) {$result=&dollarformat($result);}      #if ($dollarmode) {$result=&dollarformat($result);}
     #if ($commamode) {$result=&commaformat($result);}      #if ($commamode) {$result=&commaformat($result);}
     return $result;      return $result;
Line 585  sub prettyprint { Line 589  sub prettyprint {
     if ($options =~ /\$/) { $dollarmode=1; }      if ($options =~ /\$/) { $dollarmode=1; }
     if ($options =~ /,/)  { $commamode=1; }      if ($options =~ /,/)  { $commamode=1; }
     if ($options =~ /\./) { $alwaysperiod=1; }      if ($options =~ /\./) { $alwaysperiod=1; }
     if ($fmt) { $value=sprintf('%.'.$fmt,$value); }      if ($fmt=~/s$/i) {
    $value=&format_significant_figures($value,$fmt);
       } elsif ($fmt) {
    $value=sprintf('%.'.$fmt,$value);
       }
     if ($alwaysperiod && $fmt eq '0f') {      if ($alwaysperiod && $fmt eq '0f') {
  if ($target eq 'tex') {   if ($target eq 'tex') {
     $value .='\\ensuremath{.}';      $value .='\\ensuremath{.}';
Line 647  sub dollarformat { Line 655  sub dollarformat {
     return $number;       return $number; 
 }  }
   
   # format of form ns or nS where n is an integer
   sub format_significant_figures {
       my ($number,$format) = @_; 
       return '0' if ($number == 0);
       # extract number of significant figures needed
       my ($sig) = ($format =~ /(\d+)s/i);
       # arbitrary choice - suggestions ?? or throw error message?
       $sig = 3 if ($sig eq '');
       # save the minus sign
       my $sign = ($number < 0) ? '-' : '';
       $number = abs($number);
       # needed to correct for a number greater than 1 (or
       my $power = ($number < 1) ? 0 : 1;
       # could round up. Take the integer part of log10.
       my $x10 = int(log($number)/log(10));
       # find number with values left of decimal pt = # of sign figs.
       my $xsig = $number*10**($sig-$x10-$power);
       # get just digits left of decimal pt - also rounds off correctly
       my $xint  = sprintf('%.0f',$xsig);
       # save any trailing zero's
       my ($zeros) = ($xint =~ /(0+)$/);
       # return number to original magnitude
       my $numSig = $xint*10**($x10-$sig+$power);
       # insert trailing zero's if have decimal point
       $numSig =~ s/^(\d+)\.(\d+)(\e?(.*)?)$/$1\.$2$zeros$3/;
       # return number with sign
       return $sign.$numSig;
   
   }
   
 sub map {  sub map {
     my ($phrase,$dest,$source)=@_;      my ($phrase,$dest,$source)=@_;
     my @oldseed=&random_get_seed();      my @oldseed=&random_get_seed();

Removed from v.1.96  
changed lines
  Added in v.1.97


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>