#!/usr/bin/perl

use POSIX;

$maxerror=0;

while($l = <>)
{
  chomp($l);
  if($l =~ /^\s+(\d+)\.\s+(\d+)\.\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+),/)
  {
    $p1 = $1;
    $p2 = $2;
    $c1 = $3;
    $c2 = $4;
    $c3 = $5;
    $c4 = $6;
    $man = (($c2*1024)+$c3)*1024+$c4;
    $expo = 2.0**(($c1<512?$c1:($c1-1024))-28);
    $number1 = $man*$expo;
    $number2 = 10.0**(-$p1);
    $error = abs($number1-$number2)/$number2;
    print "$p1 $c1 $c2 $c3 $c4 $number1 $number2 $error\n";
    $maxerror=$error if($error>$maxerror);
    if($p1==39)
    {
      print "max error: $maxerror\n";
      $maxerror=0;
    }
    for($expo2=-512;$expo2<512;$expo2++)
    {
      $man2 = floor($number2*2.0**(28-$expo2)+0.5);
#     print "$man2\n";
      $d4 = $man2%1024;
      $man2 = ($man2-$d4)/1024;
      $d3 = $man2%1024;
      $man2 = ($man2-$d3)/1024;
      $d2 = $man2%1024;
      $man2 = ($man2-$d2)/1024;
      $d1 = $expo2;
      $d1 = $d1+1024 if($d1<0);
      last if $man2==0 && $d2>1 && $d2<512;
#     print "> $p1 $d1 $d2 $d3 $d4\n";
    }
    $man3 = (($d2*1024)+$d3)*1024+$d4;
    $expo3 = 2.0**(($d1<512?$d1:($d1-1024))-28);
    $number3 = $man3*$expo3;
    $error3 = abs($number3-$number2)/$number2;
    print "$p1 $d1 $d2 $d3 $d4 $number3 $number2 $error3\n\n";
  }
}
