Browse Source

* examples/pi.cc and examples/pi.1: New files.

* examples/Makefile.in: Build the pi executable.
master
Richard Kreckel 21 years ago
parent
commit
769f6fee48
  1. 5
      ChangeLog
  2. 6
      examples/Makefile.in
  3. 29
      examples/pi.1
  4. 65
      examples/pi.cc

5
ChangeLog

@ -1,3 +1,8 @@
2004-05-02 Richard B. Kreckel <kreckel@ginac.de>
* examples/pi.cc and examples/pi.1: New files.
* examples/Makefile.in: Build the pi executable.
2004-05-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> 2004-05-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* src/Makefile.in: Fix for parallel build: wait for subdir objects to * src/Makefile.in: Fix for parallel build: wait for subdir objects to

6
examples/Makefile.in

@ -50,7 +50,7 @@ OBJECTS = $(FILES_O)
LIBS = ../src/libcln.la -lm LIBS = ../src/libcln.la -lm
LIBDEPS = ../src/libcln.la LIBDEPS = ../src/libcln.la
PROGRAMS = contfrac e fibonacci legendre lucaslehmer nextprime perfnum
PROGRAMS = contfrac e fibonacci legendre lucaslehmer nextprime perfnum pi
MODULES_contfrac = contfrac MODULES_contfrac = contfrac
MODULES_e = e MODULES_e = e
MODULES_fibonacci = fibonacci MODULES_fibonacci = fibonacci
@ -58,8 +58,9 @@ MODULES_legendre = legendre
MODULES_lucaslehmer = lucaslehmer MODULES_lucaslehmer = lucaslehmer
MODULES_nextprime = nextprime MODULES_nextprime = nextprime
MODULES_perfnum = perfnum MODULES_perfnum = perfnum
MODULES_pi = pi
all : contfrac e fibonacci legendre lucaslehmer nextprime perfnum
all : contfrac e fibonacci legendre lucaslehmer nextprime perfnum pi
%.s : %.c %.s : %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -S $< -o $@ $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -S $< -o $@
@ -86,6 +87,7 @@ legendre : $(patsubst %,%.o,$(MODULES_legendre))
lucaslehmer : $(patsubst %,%.o,$(MODULES_lucaslehmer)) lucaslehmer : $(patsubst %,%.o,$(MODULES_lucaslehmer))
nextprime : $(patsubst %,%.o,$(MODULES_nextprime)) nextprime : $(patsubst %,%.o,$(MODULES_nextprime))
perfnum : $(patsubst %,%.o,$(MODULES_perfnum)) perfnum : $(patsubst %,%.o,$(MODULES_perfnum))
pi : $(patsubst %,%.o,$(MODULES_pi))
$(PROGRAMS) : % : $(LIBDEPS) $(PROGRAMS) : % : $(LIBDEPS)
$(LIBTOOL_LINK) $(CXX) $(CXXFLAGS) $(TARGET_ARCH) $(patsubst %,%.o,$(MODULES_$(*F))) $(LDFLAGS) $(LIBS) -o $@ $(LIBTOOL_LINK) $(CXX) $(CXXFLAGS) $(TARGET_ARCH) $(patsubst %,%.o,$(MODULES_$(*F))) $(LDFLAGS) $(LIBS) -o $@

29
examples/pi.1

@ -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>.

65
examples/pi.cc

@ -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;
}
Loading…
Cancel
Save