예제 #1
0
            /// <summary>Write output to files.</summary>
            /// <exception cref="System.IO.IOException"/>
            /// <exception cref="System.Exception"/>
            protected override void Cleanup(Reducer.Context context)
            {
                Configuration conf = context.GetConfiguration();
                Path          dir  = new Path(conf.Get(WorkingDirProperty));
                FileSystem    fs   = dir.GetFileSystem(conf);

                {
                    // write hex output
                    Path         hexfile = new Path(conf.Get(HexFileProperty));
                    OutputStream @out    = new BufferedOutputStream(fs.Create(hexfile));
                    try
                    {
                        foreach (byte b in hex)
                        {
                            @out.Write(b);
                        }
                    }
                    finally
                    {
                        @out.Close();
                    }
                }
                // If the starting digit is 1,
                // the hex value can be converted to decimal value.
                if (conf.GetInt(DigitStartProperty, 1) == 1)
                {
                    Path outfile = new Path(dir, "pi.txt");
                    Log.Info("Writing text output to " + outfile);
                    OutputStream outputstream = fs.Create(outfile);
                    try
                    {
                        PrintWriter @out = new PrintWriter(new OutputStreamWriter(outputstream, Charsets.
                                                                                  Utf8), true);
                        // write hex text
                        Print(@out, hex.GetEnumerator(), "Pi = 0x3.", "%02X", 5, 5);
                        @out.WriteLine("Total number of hexadecimal digits is " + 2 * hex.Count + ".");
                        // write decimal text
                        BaileyBorweinPlouffe.Fraction dec = new BaileyBorweinPlouffe.Fraction(hex);
                        int decDigits = 2 * hex.Count;
                        // TODO: this is conservative.
                        Print(@out, new _IEnumerator_168(decDigits, dec), "Pi = 3.", "%d", 10, 5);
                        @out.WriteLine("Total number of decimal digits is " + decDigits + ".");
                    }
                    finally
                    {
                        outputstream.Close();
                    }
                }
            }
예제 #2
0
 public _IEnumerator_168(int decDigits, BaileyBorweinPlouffe.Fraction dec)
 {
     this.decDigits = decDigits;
     this.dec       = dec;
     this.i         = 0;
 }