Browse Source
* examples/pi.cc and examples/pi.1: New files.
* examples/pi.cc and examples/pi.1: New files.
* examples/Makefile.in: Build the pi executable.master
Richard Kreckel
21 years ago
4 changed files with 103 additions and 2 deletions
@ -0,0 +1,29 @@ |
|||
.TH PI 1 |
|||
.SH NAME |
|||
pi \- compute decimal Archimedes' constant Pi to arbitrary accuracy. |
|||
.SH SYNOPSIS |
|||
.B pi |
|||
.I "[digits]" |
|||
.br |
|||
.SH "DESCRIPTION" |
|||
The |
|||
.BR pi |
|||
command prints 100 decimal digits of Archimedes' constant pi or |
|||
a number of digits specified by an integer parameter on the command |
|||
line. |
|||
.TP |
|||
.B \-\-help |
|||
Show summary of options. |
|||
.TP |
|||
.B \-\-version |
|||
Show version of program and exit. |
|||
.TP |
|||
.B \-\-bibliography |
|||
Output recommended readings and exit. |
|||
.SH "SEE ALSO" |
|||
The CLN library is documented fully by |
|||
.IR "cln" , |
|||
available via the Info system. |
|||
.SH AUTHOR |
|||
CLN was written by Bruno Haible <haible@gnu.org> and is |
|||
maintained by Richard Kreckel <kreckel@ginac.de>. |
@ -0,0 +1,65 @@ |
|||
// Compute decimal Archimedes' constant Pi to arbitrary accuracy.
|
|||
|
|||
#include <cln/output.h>
|
|||
#include <cln/real.h>
|
|||
#include <cln/real_io.h>
|
|||
#include <ctype.h>
|
|||
#include <stdlib.h>
|
|||
//#include <string.h>
|
|||
|
|||
using namespace std; |
|||
using namespace cln; |
|||
|
|||
static void |
|||
usage (ostream &os) |
|||
{ |
|||
os << "Usage: pi [digits]\n"; |
|||
os << "Compute decimal Archimedes' constant Pi to arbitrary accuracy.\n\n"; |
|||
os << " --help display this help and exit\n"; |
|||
os << " --version output version information and exit\n"; |
|||
os << " --bibliography output recommended readings and exit\n"; |
|||
} |
|||
|
|||
int |
|||
main (int argc, char * argv[]) |
|||
{ |
|||
int digits = 100; |
|||
if (argc > 1) { |
|||
if (argc == 2 && !strcmp(argv[1],"--help")) { |
|||
usage(cout); |
|||
return 0; |
|||
} |
|||
if (argc == 2 && !strcmp(argv[1],"--version")) { |
|||
cout << "pi (cln) " << CL_VERSION_MAJOR << "." << CL_VERSION_MINOR << endl; |
|||
cout << "Written by Bruno Haible." << endl; |
|||
cout << endl; |
|||
cout << "Copyright (C) 1998-2001 Bruno Haible." << endl; |
|||
cout << "This is free software; see the source for copying conditions. There is NO" << endl; |
|||
cout << "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." << endl; |
|||
cout << endl; |
|||
return 0; |
|||
} |
|||
if (argc == 2 && !strcmp(argv[1],"--bibliography")) { |
|||
cout << "Recommended readings:\n"; |
|||
cout << "\"Pi\", by Joerg Arndt and Christoph Haenel (1999)\n"; |
|||
cout << "\"Pi: A Source Book\" by Lennart Berggren, Jonathan Borwein, Peter Borwein (1997)" << endl; |
|||
return 0; |
|||
} |
|||
if (argc == 2 && isdigit(argv[1][0])) { |
|||
digits = atoi(argv[1]); |
|||
} else { |
|||
usage(cerr); |
|||
return 1; |
|||
} |
|||
} |
|||
|
|||
cl_F p = pi(float_format(digits)); |
|||
// make CLN believe this number has default_float_format to suppress
|
|||
// exponent marker which would be quite boring for 3.1416...
|
|||
cl_print_flags cpf; |
|||
cpf.default_float_format = float_format(p); |
|||
print_real(cout, cpf, p); |
|||
cout << endl; |
|||
|
|||
return 0; |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue