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