Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r75271 - sandbox/multiprecision/libs/multiprecision/doc
From: pbristow_at_[hidden]
Date: 2011-11-02 07:44:42


Author: pbristow
Date: 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
New Revision: 75271
URL: http://svn.boost.org/trac/boost/changeset/75271

Log:
Files needed for multiprecision docs
Added:
   sandbox/multiprecision/libs/multiprecision/doc/Acknowledgements.qbk (contents, props changed)
   sandbox/multiprecision/libs/multiprecision/doc/conventions.qbk (contents, props changed)
   sandbox/multiprecision/libs/multiprecision/doc/html4_symbols.qbk (contents, props changed)
   sandbox/multiprecision/libs/multiprecision/doc/jamfile.v2 (contents, props changed)
   sandbox/multiprecision/libs/multiprecision/doc/latin1_symbols.qbk (contents, props changed)
   sandbox/multiprecision/libs/multiprecision/doc/multiprecision.qbk (contents, props changed)

Added: sandbox/multiprecision/libs/multiprecision/doc/Acknowledgements.qbk
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/Acknowledgements.qbk 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,33 @@
+[section:acknowledgements Acknowledgements]
+
+* Paul A. Bristow produced a prototype of this Quickbook documentation of Multiprecision.
+
+* [@http://oasis-open.org Docbook] authors and maintainers.
+
+* __boostbook (an extension of __docbook) was developed by Douglas Gregor.
+
+* __quickbook was developed by Joel de Guzman and Eric Niebler, and now maintained by Daniel James.
+
+* The link to __doxygen was pioneered by Doug Gregor, and developed by Steven Watanabe.
+
+* Rendering to PDF was made to work by John Maddock.
+
+* Improvements to the tool chain, especially XSLT, by Daniel James and a welcome speedup and other enhancements by Steven Watanabe.
+
+* [@http://www.renderx.com/reference.html RenderX] kindly provide free use of XEP to render the PDF files from XML.
+
+* Automatic Indexing was developed by John Maddock.
+
+* __doxygen is maintained by Dimitri van Heesch.
+It was developed by many people who are acknowledged at the __doxygen site.
+
+
+[endsect] [/section:acknowledgements Acknowledgements]
+
+[/ Acknowledgements.qbk for Multiprecision Library
+ Copyright 2011 Christopher Kormanyos.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+]
+

Added: sandbox/multiprecision/libs/multiprecision/doc/conventions.qbk
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/conventions.qbk 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,55 @@
+[section:conventions Document Conventions]
+
+* [*Tutorials] are listed in the ['Table of Contents] and
+include many examples that should help you get started quickly.
+* [*Source code] of the many ['Examples] will often be your quickest starting point.
+* [*Reference section] prepared using Doxygen will provide the function and class signatures,
+but there is also an ['index] of these.
+* The main ['index] will also help,
+especially if you know a word describing what it does,
+without needing to know the exact name chosen for the function.
+
+This documentation makes use of the following naming and formatting conventions.
+
+* C++ Code is in `fixed width font` and is syntax-highlighted in color.
+* Other code is in [^teletype fixed-width font].
+* Replaceable text that you will need to supply is in [~italics].
+* If a name refers to a free function, it is specified like this:
+ `free_function()`; that is, it is in [~code font] and its name is followed by `()`
+ to indicate that it is a free function.
+* If a name refers to a class template, it is specified like this:
+ `class_template<>`; that is, it is in code font and its name is followed by `<>`
+ to indicate that it is a class template.
+* If a name refers to a function-like macro, it is specified like this: `MACRO()`;
+ that is, it is uppercase in code font and its name is followed by `()` to
+ indicate that it is a function-like macro. Object-like macros appear without the
+ trailing `()`.
+* Names that refer to ['concepts] in the generic programming sense are
+ specified in CamelCase.
+
+* Many code snippets assume an implicit namespace, for example, `std::` or `boost::checks`.
+
+* If you have a feature request, or if it appears that the implementation
+is in error, please check the TODO section first, as well
+as the rationale section.
+
+If you do not find your idea/complaint, please reach the author either through the Boost
+development list, or email the author(s) direct .
+
+[heading Admonishments]
+
+[note In addition, notes such as this one specify non-essential information that
+provides additional background or rationale.]
+
+[tip These blocks contain information that you may find helpful while coding.]
+
+[important These contain information that is imperative to understanding a concept.
+Failure to follow suggestions in these blocks will probably result in undesired behavior.
+Read all of these you find.]
+
+[warning Failure to heed this will lead to incorrect,
+and very likely undesired, results.]
+
+[endsect] [/section:conventions Document Conventions]
+
+

Added: sandbox/multiprecision/libs/multiprecision/doc/html4_symbols.qbk
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/html4_symbols.qbk 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,149 @@
+[/ Symbols and Greek letters (about 120) from HTML4 ]
+[/ File HTML4_symbols.qbk]
+[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
+[/ http://www.alanwood.net/demos/ent4_frame.html]
+[/ All (except 2 angle brackets) show OK on Firefox 2.0]
+
+[/ See also Latin-1 aka Western (ISO-8859-1) in latin1_symbols.qbk]
+[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html]
+
+[/ Also some miscellaneous math charaters added to this list - see the end.]
+
+[/ To use, enclose the template name in square brackets.]
+
+[template fnof[]'''&#x192;'''] [/ ƒ Latin small f with hook = function = florin]
+[template Alpha[]'''&#x391;'''] [/ ? Greek capital letter alpha]
+[template Beta[]'''&#x392;'''] [/ ? Greek capital letter beta]
+[template Gamma[]'''&#x393;'''] [/ G Greek capital letter gamma]
+[template Delta[]'''&#x394;'''] [/ ? Greek capital letter delta]
+[template Epsilon[]'''&#x395;'''] [/ ? Greek capital letter epsilon]
+[template Zeta[]'''&#x396;'''] [/ ? Greek capital letter zeta]
+[template Eta[]'''&#x397;'''] [/ ? Greek capital letter eta]
+[template Theta[]'''&#x398;'''] [/ T Greek capital letter theta]
+[template Iota[]'''&#x399;'''] [/ ? Greek capital letter iota]
+[template Kappa[]'''&#x39A;'''] [/ ? Greek capital letter kappa]
+[template Lambda[]'''&#x39B;'''] [/ ? Greek capital letter lambda]
+[template Mu[]'''&#x39C;'''] [/ ? Greek capital letter mu]
+[template Nu[]'''&#x39D;'''] [/ ? Greek capital letter nu]
+[template Xi[]'''&#x39E;'''] [/ ? Greek capital letter xi]
+[template Omicron[]'''&#x39F;'''] [/ ? Greek capital letter omicron]
+[template Pi[]'''&#x3A0;'''] [/ ? Greek capital letter pi]
+[template Rho[]'''&#x3A1;'''] [/ ? Greek capital letter rho]
+[template Sigma[]'''&#x3A3;'''] [/ S Greek capital letter sigma]
+[template Tau[]'''&#x3A4;'''] [/ ? Greek capital letter tau]
+[template Upsilon[]'''&#x3A5;'''] [/ ? Greek capital letter upsilon]
+[template Phi[]'''&#x3A6;'''] [/ F Greek capital letter phi]
+[template Chi[]'''&#x3A7;'''] [/ ? Greek capital letter chi]
+[template Psi[]'''&#x3A8;'''] [/ ? Greek capital letter psi]
+[template Omega[]'''&#x3A9;'''] [/ O Greek capital letter omega]
+[template alpha[]'''&#x3B1;'''] [/ a Greek small letter alpha]
+[template beta[]'''&#x3B2;'''] [/ ß Greek small letter beta]
+[template gamma[]'''&#x3B3;'''] [/ ? Greek small letter gamma]
+[template delta[]'''&#x3B4;'''] [/ d Greek small letter delta]
+[template epsilon[]'''&#x3B5;'''] [/ e Greek small letter epsilon]
+[template zeta[]'''&#x3B6;'''] [/ ? Greek small letter zeta]
+[template eta[]'''&#x3B7;'''] [/ ? Greek small letter eta]
+[template theta[]'''&#x3B8;'''] [/ ? Greek small letter theta]
+[template iota[]'''&#x3B9;'''] [/ ? Greek small letter iota]
+[template kappa[]'''&#x3BA;'''] [/ ? Greek small letter kappa]
+[template lambda[]'''&#x3BB;'''] [/ ? Greek small letter lambda]
+[template mu[]'''&#x3BC;'''] [/ µ Greek small letter mu]
+[template nu[]'''&#x3BD;'''] [/ ? Greek small letter nu]
+[template xi[]'''&#x3BE;'''] [/ ? Greek small letter xi]
+[template omicron[]'''&#x3BF;'''] [/ ? Greek small letter omicron]
+[template pi[]'''&#x3C0;'''] [/ p Greek small letter pi]
+[template rho[]'''&#x3C1;'''] [/ ? Greek small letter rho]
+[template sigmaf[]'''&#x3C2;'''] [/ ? Greek small letter final sigma]
+[template sigma[]'''&#x3C3;'''] [/ s Greek small letter sigma]
+[template tau[]'''&#x3C4;'''] [/ t Greek small letter tau]
+[template upsilon[]'''&#x3C5;'''] [/ ? Greek small letter upsilon]
+[template phi[]'''&#x3C6;'''] [/ f Greek small letter phi]
+[template chi[]'''&#x3C7;'''] [/ ? Greek small letter chi]
+[template psi[]'''&#x3C8;'''] [/ ? Greek small letter psi]
+[template omega[]'''&#x3C9;'''] [/ ? Greek small letter omega]
+[template thetasym[]'''&#x3D1;'''] [/ ? Greek small letter theta symbol]
+[template upsih[]'''&#x3D2;'''] [/ ? Greek upsilon with hook symbol]
+[template piv[]'''&#x3D6;'''] [/ ? Greek pi symbol]
+[template bull[]'''&#x2022;'''] [/ • bullet = black small circle]
+[template hellip[]'''&#x2026;'''] [/ … horizontal ellipsis = three dot leader]
+[template prime[]'''&#x2032;'''] [/ ' prime = minutes = feet]
+[template Prime[]'''&#x2033;'''] [/ ? double prime = seconds = inches]
+[template oline[]'''&#x203E;'''] [/ ? overline = spacing overscore]
+[template frasl[]'''&#x2044;'''] [/ / fraction slash]
+[template weierp[]'''&#x2118;'''] [/ P script capital P = power set = Weierstrass p]
+[template image[]'''&#x2111;'''] [/ I blackletter capital I = imaginary part]
+[template real[]'''&#x211C;'''] [/ R blackletter capital R = real part symbol]
+[template trade[]'''&#x2122;'''] [/ ™ trade mark sign]
+[template alefsym[]'''&#x2135;'''] [/ ? alef symbol = first transfinite cardinal]
+[template larr[]'''&#x2190;'''] [/ ? leftwards arrow]
+[template uarr[]'''&#x2191;'''] [/ ? upwards arrow]
+[template rarr[]'''&#x2192;'''] [/ ? rightwards arrow]
+[template darr[]'''&#x2193;'''] [/ ? downwards arrow]
+[template harr[]'''&#x2194;'''] [/ ? left right arrow]
+[template crarr[]'''&#x21B5;'''] [/ ? downwards arrow with corner leftwards = CR]
+[template lArr[]'''&#x21D0;'''] [/ ? leftwards double arrow]
+[template uArr[]'''&#x21D1;'''] [/ ? upwards double arrow]
+[template rArr[]'''&#x21D2;'''] [/ ? rightwards double arrow]
+[template dArr[]'''&#x21D3;'''] [/ ? downwards double arrow]
+[template hArr[]'''&#x21D4;'''] [/ ? left right double arrow]
+[template forall[]'''&#x2200;'''] [/ ? for all]
+[template part[]'''&#x2202;'''] [/ ? partial differential]
+[template exist[]'''&#x2203;'''] [/ ? there exists]
+[template empty[]'''&#x2205;'''] [/ Ø empty set = null set = diameter]
+[template nabla[]'''&#x2207;'''] [/ ? nabla = backward difference]
+[template isin[]'''&#x2208;'''] [/ ? element of]
+[template notin[]'''&#x2209;'''] [/ ? not an element of]
+[template ni[]'''&#x220B;'''] [/ ? contains as member]
+[template prod[]'''&#x220F;'''] [/ ? n-ary product = product sign]
+[template sum[]'''&#x2211;'''] [/ ? n-ary sumation]
+[template minus[]'''&#x2212;'''] [/ - minus sign]
+[template lowast[]'''&#x2217;'''] [/ * asterisk operator]
+[template radic[]'''&#x221A;'''] [/ v square root = radical sign]
+[template prop[]'''&#x221D;'''] [/ ? proportional to]
+[template infin[]'''&#x221E;'''] [/ 8 infinity]
+[template ang[]'''&#x2220;'''] [/ ? angle]
+[template and[]'''&#x2227;'''] [/ ? logical and = wedge]
+[template or[]'''&#x2228;'''] [/ ? logical or = vee]
+[template cap[]'''&#x2229;'''] [/ n intersection = cap]
+[template cup[]'''&#x222A;'''] [/ ? union = cup]
+[template int[]'''&#x222B;'''] [/ ? integral]
+[template there4[]'''&#x2234;'''] [/ ? therefore]
+[template sim[]'''&#x223C;'''] [/ ~ tilde operator = varies with = similar to]
+[template cong[]'''&#x2245;'''] [/ ? approximately equal to]
+[template asymp[]'''&#x2248;'''] [/ ˜ almost equal to = asymptotic to]
+[template ne[]'''&#x2260;'''] [/ ? not equal to]
+[template equiv[]'''&#x2261;'''] [/ = identical to]
+[template le[]'''&#x2264;'''] [/ = less-than or equal to]
+[template ge[]'''&#x2265;'''] [/ = greater-than or equal to]
+[template subset[]'''&#x2282;'''] [/ ? subset of]
+[template superset[]'''&#x2283;'''] [/ ? superset of]
+[template nsubset[]'''&#x2284;'''] [/ ? not a subset of]
+[template sube[]'''&#x2286;'''] [/ ? subset of or equal to]
+[template supe[]'''&#x2287;'''] [/ ? superset of or equal to]
+[template oplus[]'''&#x2295;'''] [/ ? circled plus = direct sum]
+[template otimes[]'''&#x2297;'''] [/ ? circled times = vector product]
+[template perp[]'''&#x22A5;'''] [/ ? up tack = orthogonal to = perpendicular]
+[template sdot[]'''&#x22C5;'''] [/ · dot operator]
+[template lceil[]'''&#x2308;'''] [/ ? left ceiling = APL upstile]
+[template rceil[]'''&#x2309;'''] [/ ? right ceiling]
+[template lfloor[]'''&#x230A;'''] [/ ? left floor = APL downstile]
+[template rfloor[]'''&#x230B;'''] [/ ? right floor]
+[template lang[]'''&#x2329;'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)]
+[template rang[]'''&#x232A;'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)]
+[template loz[]'''&#x25CA;'''] [/ ? lozenge]
+[template spades[]'''&#x2660;'''] [/ ? black spade suit]
+[template clubs[]'''&#x2663;'''] [/ ? black club suit = shamrock]
+[template hearts[]'''&#x2665;'''] [/ ? black heart suit = valentine]
+[template diams[]'''&#x2666;'''] [/ ? black diamond suit]
+
+[/ Other symbols, not in the HTML4 list:]
+[template space[]''' ''']
+[template plusminus[]'''&#x00B1;'''] [/ ? plus or minus sign]
+
+[/
+Copyright 2007 Paul A. Bristow.
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+]
+

Added: sandbox/multiprecision/libs/multiprecision/doc/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/jamfile.v2 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,343 @@
+# jamfile.v2
+
+# Creating multiprecision Boost documentation using Quickbook, Doxygen and Auto-Indexing.
+
+# Copyright Christopher Kormanyos 2011
+# Copyright Paul A. Bristow 2011
+
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt
+# or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+# Reminder: whitespace MUST terminate variable name!
+# so spaces or newlines BEFORE ; and : and AFTER too.
+# (because : and ; are keywords!)
+
+# Creating documentation as html and pdf from Quickbook, using Doxygen, AND auto-indexing.
+# see multiprecision.qbk or HTML or PDF produced therefrom.
+
+project multiprecision ; # Insert your project name here.
+
+using quickbook ; # Required if you want to use Quickbook.
+using doxygen ; # Required if you want to use Doxygen.
+
+import modules ;
+import path ;
+import os ; # Needed to get environment variables.
+
+# Set up Boost root folder.
+# For example, might be current release, a previous release, or trunk.
+# Assumes you have set an environment variable $BOOST_ROOT.
+local BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
+ECHO "os.environ BOOST_ROOT boost-root = " $(BOOST_ROOT) ; # Upper case for the value of environment variable(s).
+# For example: os.environ BOOST_ROOT boost-root = /boost_1_48_0 or /boost-trunk
+
+ECHO "BOOST_ROOT " $(BOOST_ROOT) ;
+path-constant local-boost-root : $(BOOST_ROOT) ; # Or you can access your chosen boost version here.
+ECHO "local-boost-root = " $(local-boost-root) ; # local-boost-root = I:\boost_1_48_0
+
+local boost_sandbox = [ os.environ BOOST_SANDBOX ] ;
+ECHO "os.environ boost-sandbox = " $(boost_sandbox) ; # Upper case for the value of environment variable(s).
+
+path-constant here : . ; # Convenient to refer to files in the same directory as this jamfile.v2.
+ECHO "here = " $(here) ; # \boost-sandbox\multiprecision\libs\multiprecision\doc
+
+path-constant nav_images : html/images/ ; # png and svg images for home, next, note, tip...
+# path-constant images_location : ../doc/html/images ; # location of SVG images referenced by Quickbook.
+
+path-constant images_location : html ; # location of SVG and PNG images referenced by Quickbook.
+
+ECHO "images_location" $(images_location) ;
+ECHO "nav_images" $(nav_images) ;
+
+if --enable-index in [ modules.peek : ARGV ]
+{
+ ECHO "Building the multiprecision docs with automatic index generation enabled." ;
+ using auto-index ;
+ project : requirements
+ <auto-index>on # Turns on index (or off).
+
+ <auto-index-verbose>on
+
+ # Choose indexing method (separately for html and pdf):
+ <format>html:<auto-index-internal>on # on (or off) to use internally generated indexes.
+ # <format>html:<xsl:param>generate.index=0 # Don't let the XSL stylesheets generate indexes.
+
+ <format>pdf:<auto-index-internal>off # on (or off) to use internally generated indexes.
+ # <auto-index-type>index # Use <index>...</index> as the XML wrapper.
+
+ <format>pdf:<xsl:param>index.on.type=1 # For the native stylesheets to generate the different indexes.
+ # PDF native index support is probably better for PDFs as then you actually get page numbers.
+
+ <auto-index-script>multiprecision_index.idx # Specifies the name of the script to load.
+ # <auto-index-prefix>../../../ # OK for Boost /boost and /libs normal directory layout
+ # using scan-path in multiprecision.idx, for example:
+
+ # Assume all header files are in boost/multiprecision and sub-folders.
+ #!scan-path boost/multiprecision ".*\.hpp" true
+
+ # Assume all Quickbook files are in /docs (none in sub-folders).
+ #!scan-path "libs/multiprecision" ".*\.qbk"
+
+ <auto-index-prefix>../../..
+
+ # Inform Quickbook that there is to be an index(es).
+ <quickbook-define>enable_index
+
+ ;
+}
+else
+{
+ ECHO "Building the multiprecision docs with automatic index generation disabled. To get an auto-index, try building with --enable-index." ;
+}
+
+doxygen autodoc
+ :
+ [ glob ../../../boost/multiprecision/*.hpp ] # These are hpp include files, mp_float.hpp etc.
+ # [ glob ../../../boost/multiprecision/detail/*.hpp ] # More include files, if necessary.
+ [ glob ../src/*.cpp ] # These are your source files.
+ :
+ # Lots of parameters passed to Doxygen. You can see these in the doxygen docs, or the Wizard Expert tab displays them.
+ # If you have successfuly built your Doxygen docs standalone using the Wizard (strongly recommended as it is much quicker).
+ # The values in your project's doxyfile are what to put as the Doxygen parameters passed below.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ # It is also wise to to set a warnings logfile like this:
+ <doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
+ # Much better to send message to a logfile than the default stderr.
+ # and make sure that there are no Doxygen errors or significant warnings in the log file.
+
+ <doxygen:param>WARN_IF_UNDOCUMENTED=NO # Default NO but useful if you aim to Doxygen document *all* members.
+ <doxygen:param>WARNINGS=YES # Default NO, but useful to see warnings, especially in a logfile.
+ <doxygen:param>QUIET=NO # Default NO, and best left as NO.
+ <doxygen:param>WARN_NO_PARAMDOC=NO # Default no, but YES useful if you aim to document all function parameters.
+ # <doxygen:param>DOXYFILE_ENCODING=UTF-8 # Default is UTF-8 which is almost certainly OK.
+ <doxygen:param>PROJECT_NAME="multiprecision " # Shows on Doxygen main page (if you have one).
+ <doxygen:param>PROJECT_NUMBER=1 # Might be useful for version numbering?
+ <doxygen:param>TAB_SIZE=2 # or your choice.
+ # <doxygen:param>OUTPUT_DIRECTORY # Default is current directory.
+ # <doxygen:param>CREATE_SUBDIRS=YES # Unlike to be useful except for a very large project.
+ # <doxygen:param>BRIEF_MEMBER_DESC=YES # Doxygen will include brief member descriptions by default, and is what you want.
+ # <doxygen:param>REPEAT_BRIEF=YES # Prepend brief description before detailed, default and is what you want.
+ # <doxygen:param>ALWAYS_DETAILED_SEC=NO # Probably not wanted.
+ # <doxygen:param>ABBREVIATE_BRIEF=NO # Probably not wanted.
+ # <doxygen:param>EXTRACT_ALL=YES # Documents everything, probably best to use to start and only extract selected items if it proves to be unmanageable.
+ <doxygen:param>INLINE_INHERITED_MEMB=YES # Show all inherited members of a class in the documentation of that class as if those members were ordinary class members.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # sort docs into alphabetical order - generally useful.
+ #<doxygen:param>EXTRACT_PRIVATE=YES # Show all private members. Less useful for user documentation.
+ <doxygen:param>EXTRACT_PRIVATE=NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will be included in the documentation
+ <doxygen:param>EXTRACT_STATIC=YES # Show all static members.
+
+ # <doxygen:param>EXTRACT_LOCAL_METHODS=YES # Only useful for Objective C.
+ # <doxygen:param>EXTRACT_ANON_NSPACES=YES # Probably not useful for user documentation?
+ <doxygen:param>EXTRACT_LOCAL_CLASSES=YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined locally in source files will be included in the documentation.
+ <doxygen:param>EXTRACT_LOCAL_METHODS=YES # Less useful for user documentation.
+ # The following are over-ridden by EXTRACT_ALL=YES
+ <doxygen:param>HIDE_UNDOC_MEMBERS=NO # Not useful unless you have carefully documented all members that you want Doxygen to list.
+ <doxygen:param>HIDE_UNDOC_CLASSES=YES # YES if you only want the items you *have* specifically documented all members that you want Doxygen to list.
+ <doxygen:param>HIDE_UNDOC_MEMBERS=NO # NO if you want all members Doxygen documented.
+ <doxygen:param>HIDE_FRIEND_COMPOUNDS=NO # Default is NO and will append friend information.
+ #<doxygen:param>HIDE_INBODY_DOCS=NO # Default is NO and will append this information. Option no longer supported?
+ <doxygen:param>INTERNAL_DOCS=YES # Allows implemented details NOT to be included in public docs.
+ <doxygen:param>CASE_SENSE_NAMES=NO # Must be NO for Boost which may include Windows file system. (means that all file names are lower case)
+ <doxygen:param>HIDE_SCOPE_NAMES=NO # Default NO is not to full qualify members with class and namespace.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # Default YES is to sort alphabetically.
+ <doxygen:param>SORT_BRIEF_DOCS=YES # Default is to sort brief documentation alphabetically.
+ <doxygen:param>SORT_MEMBERS_CTORS_1ST=NO # Default No puts constructors and destructors first.
+ # Preprocessor settings.
+ # Some ugly examples of predefined macro calls (from Boost.Units library) :(
+ <doxygen:param>"PREDEFINED= \\
+ \"BOOST_UNITS_STATIC_CONSTANT(a,b)=static const b a\" \\
+ \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
+ \"BOOST_PREVENT_MACRO_SUBSTITUTION=\" \\
+ \"BOOST_UNITS_HAS_TYPEOF=1\""
+ <doxygen:param>ENABLE_PREPROCESSING=YES # Evaluates all C-preprocessor directives found in files.
+ <doxygen:param>MACRO_EXPANSION=YES # Will expand all macro names.
+ <doxygen:param>EXPAND_ONLY_PREDEF=YES # Only predefined macros expanded. See units library for an example.
+ <doxygen:param>SEARCH_INCLUDES=YES # Search #include files found.
+ <doxygen:param>INLINE_INFO=YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] is inserted in the documentation for inline members.
+ <doxygen:param>SORT_BRIEF_DOCS=YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief descriptions of file, namespace and class members alphabetically by member name.
+ <doxygen:param>SORT_MEMBER_DOCS=YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen will sort the (detailed) documentation of file and class members alphabetically by member name.
+ <doxygen:param>SHOW_INCLUDE_FILES=NO # List of the files that are included by a file in the documentation of that file.
+ <doxygen:param>REPEAT_BRIEF=YES # Prepend the brief description of a member or function before the detailed description
+ <doxygen:param>BRIEF_MEMBER_DESC=YES # Include brief member descriptions after the members that are listed in the file and class
+ <doxygen:param>MULTILINE_CPP_IS_BRIEF=YES # Treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description.
+ # May be best to always use \brief and \details to avoid ambiguity?
+ # <doxygen:param>STRIP_FROM_PATH=NO # Most useful to leave default to strip just the directory from which Doxygen is run.
+ # Yes gives the full path, but NO is more useful, only giving enough to be
+ # <doxygen:param>CPP_CLI_SUPPORT=NO # unless, most unusually, you are compiled for a 'managed' CLI application.
+ <doxygen:param>SHOW_USED_FILES=YES # Default YES to show a list files used to generate documention.
+ <doxygen:param>SHOW_DIRECTORIES=YES # Default NO, but useful to show directory heirarchy.
+ <doxygen:param>SHOW_FILES=YES # Default YES is to include a tab for a page of files listed. Useful.
+ <doxygen:param>SHOW_NAMESPACES=YES # Default YES to include tab for list of namespaces. Useful if you have namespacess other than boost::
+
+ <doxygen:param>FILE_PATTERNS= # Types of files to be used as input. Default includes *.c *.cc *.cxx *.cpp *.c++ *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ *.py
+ <doxygen:param>RECURSIVE=YES # Search recursively down subdirectories.
+ <doxygen:param>EXCLUDE= # Files or directories that should be excluded from INPUT source files.
+ # Headers and footers are actually rather attractive,
+ <doxygen:param>HTML_HEADER="doxygen/multiprecision_doxygen_header.html" # A sample including a draft stamp and 'Not_Yet_In_Boost' logo.
+ # Take care that if you use this (recommended), you need to ensure that the html
+ <doxygen:param>HTML_FOOTER="doxygen/multiprecision_doxygen_footer.html" # This is very useful to add copyright, date of revision, versioning etc.
+
+ # A custom stylesheet is also useful.
+ # as the default syntax coloring is 'unusual' ;-)
+ <doxygen:param>HTML_STYLESHEET="doxygen/multiprecision_doxygen.css" # Placed in the doxygen directory,
+ # this will change to your choice of C++ syntax coloring when viewing source from Doxygen.
+ # Users can place (or edit) their own personal choice CSS file here.
+
+ # Default is just Reference but you can provide your own title for reference section here.
+ <xsl:param>"boost.doxygen.reftitle=multiprecision C++ Reference"
+
+;
+ #<doxygen:param>"PREDEFINED=\"BOOST_DEDUCED_TYPENAME=typename\" "
+ # See Doxygen configuration for detailed explanation of these options.
+ # And if you have (wisely) produced the Doxygen index first using the Wizard,
+ # see your doxyfile (which you should save in the project's Doxygen directory).
+
+
+xml multiprecision
+ :
+ multiprecision.qbk # This is your 'root' Quickbook file (that may include other .qbk files).
+ :
+;
+
+using boostbook ;
+
+boostbook standalone
+ :
+ multiprecision
+ :
+
+ # Path for links to Boost:
+ #<xsl:param>boost.root=\$(local-boost-root) # Link to Boost logo boost.png
+ # Links are relative and trying to make absolute does NOT work.
+ # And remember that all links MUST (unless in quotes) use backslash, not forward that is trip char.
+
+ # Grep through our stylesheet layer in $(local-boost-root)/tools/boostbook/xsl for xsl:params you can alter.
+ # main xsl param reference for docbook http://docbook.sourceforge.net/release/xsl/current/doc/
+
+ <xsl:param>boost.root=../../../../..
+
+ # Also control links to admonitions, so need to set separately.
+ #<xsl:param>boost.root=../../../../../../../boost_1_48_0 # OK file:///I:/boost_1_48_0/boost.png
+ # Quickbook [@boost:/boost/units/detail/utility.hpp] should make it relative to xsl parameter boost.root.
+
+ # [@boost:boost.png Boost logo] # xsl parameter boost.root, for example I:/boost_1_45_0/boost.png
+
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../../../libs/libraries.htm
+ # Use the main Boost stylesheet:
+ <xsl:param>html.stylesheet=../../doc/html/boostbook.css
+ #<xsl:param>html.stylesheet=./boostbook.css # in /doc folder.
+ # Use the your own local Boost stylesheet:
+ # <xsl:param>html.stylesheet=../html/boostbook.css
+
+ # Some general style settings:
+ # see http://docbook.sourceforge.net/release/xsl/current/doc/html/index.html
+ <xsl:param>table.footnote.number.format=1 # Identifies the format used for footnote numbers in tables.
+ <xsl:param>footnote.number.format=1 # Identifies the format used for text footnote numbers.
+
+ # Default to not including the Boost logo in the navbar, when one expressly asks to include the navbar.
+ # Boost jamroot now includes
+ # Default to not include a navbar.
+ #<xsl:param>nav.layout=none # No navigation bar (home, prev, next).
+ # defining creates a runtime error: Global parameter nav.layout already defined
+ <xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
+
+ <xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo like inspired_by_boost.png
+ <xsl:param>boost.image.src=./images/proposed_for_boost.png #
+ <xsl:param>boost.image.w=180 # Width of logo in pixels. (JM has W = 162, h = 46)
+ <xsl:param>boost.image.h=90 # Height of logo in pixels.
+
+ # HTML options:
+ # ------------
+ <xsl:param>navig.graphics=1 # Use graphics not text for navigation.
+ <xsl:param>chunk.section.depth=10 # How far down we chunk nested sections, basically all of them.
+ <xsl:param>chunk.first.sections=1 # Don't put the first section on the same page as the TOC.
+ <xsl:param>toc.section.depth=10 # How far down sections get TOCs.
+ <xsl:param>toc.max.depth=4 # Max depth in each TOC.
+ <xsl:param>generate.section.toc.level=10 # How far down we go with TOCs.
+
+ #<format>html:<xsl:param>img.src.path=$(images_location)/ # Path of image (.png) files. (Note trailing /)
+ # This doesn't work???
+
+ #<format>html:<xsl:param>admon.graphics.extension=".png" # default type for admonitions (important, warning, note ...)
+ #<format>html:<xsl:param>admon.graphics.path=$(nav-images)/ # path to admonition (warning, note...) image (.png) files.
+
+ #<xsl:param>root.filename="multiprecision"
+ # <xsl:param>project.root=http://beta.boost.org/development
+ # <xsl:param>annotation.support=1
+ # <xsl:param>quickbook.source.style.show="'true'"
+
+ # PDF Options:
+ # -----------
+ # TOC Generation
+ <xsl:param>fop1.extensions=0 # DISable extensions for FOP version 0.90 and later .
+ <format>pdf:<xsl:param>fop.extensions=0 # DISable extensions for FOP version 0.20.5 and earlier.
+ <format>pdf:<xsl:param>xep.extensions=1 # Use XEP extension- PDF bookmarks, document information and better index processing.
+
+ # No indent on body text:
+ <format>pdf:<xsl:param>body.start.indent=0pt #
+ <format>pdf:<xsl:param>paper.type=A4 # Paper type = A4
+ # http://xml.resource.org/public/rfc/html/rfc2346.html
+ # Making Postscript and PDF International, J Palme, RFC 2346 recommends
+ # If you are using US letter paper format, ensure that both left and right margins are at least 21 mm (0.8 in).
+ # If you are using A4 paper, ensure that both the top and bottom margins are at least 33 mm (1.3 in).
+ # Margins sizes:
+ #<format>pdf:<xsl:param>page.margin.top=1.3in
+ #<format>pdf:<xsl:param>page.margin.inner=0.8in
+ #<format>pdf:<xsl:param>page.margin.bottom=1.3in
+ #<format>pdf:<xsl:param>page.margin.outer=0.8in
+
+ # http://docbook.sourceforge.net/release/xsl/current/doc/index.html
+ # DocBook XSL Stylesheets: Reference Documentation.
+
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set these one for PDF generation *only*:
+ #
+ # In PDF format, default PNG graphics are awful, so better use SVG images (type .svg) instead.
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg" #
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1 # Use print role on next line.
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print # pdf role is to be printed.
+ <format>pdf:<xsl:param>img.src.path=$(images_location)/ # Path of image (.svg) files. (Note trailing /) ? //
+ #<format>pdf:<xsl:param>img.src.path=../ # alternative location of images.
+ <format>pdf:<xsl:param>admon.graphics.path=$(nav_images)/ # path to admonition (warning, note...) image (.svg) files.
+ <format>pdf:<xsl:param>draft.mode="no"
+ <format>pdf:<xsl:param>boost.url.prefix=I:/boost-sandbox/tools/multiprecision/libs/multiprecision/doc/html
+
+ <dependency>autodoc # Doxygen reference section
+ # <dependency>pdf-install # final pdf
+ <dependency>png-install # Boost standard icons in both png
+ <dependency>svg-install # and svg.
+ ;
+
+# To install a 'master'
+# install html : ../../../doc/html/boostbook.css ;
+# install ../ : ../../../boost.png ;
+
+# Install (copy) the 'master' copy of boostbook Cascading Style sheet
+# from your current Boost-root to the /doc/html folder.
+path-constant boost-root : [ modules.peek : BOOST ] ;
+install css-install : $(boost-root)/doc/src/boostbook.css : <location>html ;
+
+path-constant boost-root : [ modules.peek : BOOST ] ;
+
+# Install (copy) the 'master' copies of all icon images (both PNG and SVG)
+# and the Boost logo from your current Boost-root
+# to the local /doc/html/images folder so that html is complete and standalone.
+install png-install : [ glob $(boost-root)/doc/src/images/*.png $(boost-root)/boost.png ] : <location>html/images ;
+install svg-install : [ glob $(boost-root)/doc/src/images/*.svg ] : <location>html/images ;
+
+ # install unordered_pdf : standalone/<format>pdf : <location>. ;
+ # explicit unordered_pdf ; # The explicit rule is there so that it's only installed when the target is explicitly named.
+
+# Effectively copies the file from \bin folder to the \doc folder.
+# install pdf-install : standalone : <location>. <install-type>PDF ;
+# But will not work as expected if doxygen and/or autoindex is used
+# because a modified pdf file is created, so this command below
+# will rename the file to the expected filename, here multiprecision.pdf.
+# <location>. means installed in same place as this jamfile, /doc.
+
+install pdf-install : standalone : <install-type>PDF <location>. <name>multiprecision.pdf ;
+
+install callouts : [ glob src/images/callouts/*.png ] : <location>html/images/callouts ;
\ No newline at end of file

Added: sandbox/multiprecision/libs/multiprecision/doc/latin1_symbols.qbk
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/latin1_symbols.qbk 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,111 @@
+[/ Symbols and accented letters from Latin-1]
+[/ File Latin1_symbols.qbk]
+[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
+[/ based on table Copyright </copyright.html> 1998-2006 Liam Quinn.]
+[/ Glyphs <http://www.unicode.org/charts/> of the characters ]
+[/ are available at the Unicode Consortium <http://www.unicode.org/>. ]
+
+[template nbsp[]'''&#xA0;'''] [/ no-break space = non-breaking space]
+[template iexcl[]'''&#xA1;'''] [/ inverted exclamation mark ]
+[template cent[]'''&#xA2;'''] [/ cent sign ]
+[template pound[]'''&#xA3;'''] [/ pound sign ]
+[template curren[]'''&#xA4;'''] [/ currency sign ]
+[template yen[]'''&#xA5;'''] [/ yen sign = yuan sign ]
+[template brvbar[]'''&#xA6;'''] [/ broken vertical bar ]
+[template sectsign[]'''&#xA7;'''] [/ section sign ]
+[template uml[]'''&#xA8;'''] [/ diaeresis ]
+[template copy[]'''&#xA9;'''] [/ copyright ]
+[template ordf[]'''&#xAA;'''] [/ feminine ordinal indicator ]
+[template laquo[]'''&#xAB;'''] [/ left-pointing double angle quotation mark = left pointing guillemet ]
+[template not[]'''&#xAC;'''] [/ not sign ]
+[template shy[]'''&#xAD;'''] [/ soft hyphen = discretionary hyphen ]
+[template reg[]'''&#xAE;'''] [/ registered sign = registered trade mark sign ]
+[template macron[]'''&#xAF;'''] [/ macron = spacing macron = overline = APL overbar ]
+[template deg[]'''&#xB0;'''] [/ degree sign ]
+[template plusmn[]'''&#xB1;'''] [/ plus-minus sign = plus-or-minus sign ]
+[template sup2[]'''&#xB2;'''] [/ superscript two = superscript digit two = squared ]
+[template cubed[]'''&#xB3;'''] [/ superscript three = superscript digit three = cubed ]
+[template acute[]'''&#xB4;'''] [/ acute accent = spacing acute ]
+[template micro[]'''&#xB5;'''] [/ micro sign ]
+[template para[]'''&#xB6;'''] [/ pilcrow sign = paragraph sign ]
+[template middot[]'''&#xB7;'''] [/ middle dot = Georgian comma = Greek middle dot ]
+[template cedil[]'''&#xB8;'''] [/ cedilla = spacing cedilla ]
+[template sup1[]'''&#xB9;'''] [/ superscript one = superscript digit one ]
+[template ordm[]'''&#xBA;'''] [/ masculine ordinal indicator ]
+[template raquo[]'''&#xBB;'''] [/ right-pointing double angle quotation mark = right pointing guillemet ]
+[template frac14[]'''&#xBC;'''] [/ vulgar fraction one quarter = fraction one quarter ]
+[template frac12[]'''&#xBD;'''] [/ vulgar fraction one half = fraction one half ]
+[template frac34[]'''&#xBE;'''] [/vulgar fraction three quarters = fraction three quarters ]
+[template iquest[]'''&#xBF;'''] [/ inverted question mark = turned question mark ]
+[template Agrave[]'''&#xC0;'''] [/ Latin capital letter A with grave = Latin capital letter A grave ]
+[template Aacute[]'''&#xC1;'''] [/ Latin capital letter A with acute = Latin capital letter A acute ]
+[template Acirc[]'''&#xC2;'''] [/ Latin capital letter A with circumflex ]
+[template Atilde[]'''&#xC3;'''] [/Latin capital letter A with tilde ]
+[template Auml[]'''&#xC4;'''] [/ Latin capital letter A with diaeresis ]
+[template Aring[]'''&#xC5;'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ]
+[template AElig[]'''&#xC6;'''] [/ Latin capital letter AE = Latin capital ligature AE ]
+[template Ccedil[]'''&#xC7;'''] [/ Latin capital letter C with cedilla ]
+[template Egrave[]'''&#xC8;'''] [/ Latin capital letter E with grave ]
+[template Eacute[]'''&#xC9;'''] [/ Latin capital letter E with acute ]
+[template Ecirc[]'''&#xCA;'''] [/ Latin capital letter E with circumflex ]
+[template Euml[]'''&#xCB;'''] [/ Latin capital letter E with diaeresis ]
+[template Igrave[]'''&#xCC;'''] [/ Latin capital letter I with grave ]
+[template Iacute[]'''&#xCD;'''] [/ Latin capital letter I with acute ]
+[template Icirc[]'''&#xCE;'''] [/ Latin capital letter I with circumflex ]
+[template Iuml[]'''&#xCF;'''] [/ Latin capital letter I with diaeresis ]
+[template ETH[]'''&#xD0;'''] [/ Latin capital letter ETH ]
+[template Ntilde[]'''&#xD1;'''] [/ Latin capital letter N with tilde ]
+[template Ograve[]'''&#xD2;'''] [/ Latin capital letter O with grave]
+[template Oacute[]'''&#xD3;'''] [/ Latin capital letter O with acute ]
+[template Ocirc[]'''&#xD4;'''] [/ Latin capital letter O with circumflex ]
+[template Otilde[]'''&#xD5;'''] [/ Latin capital letter O with tilde ]
+[template Ouml[]'''&#xD6;'''] [/ Latin capital letter O with diaeresis ]
+[template times[]'''&#xD7;'''] [/ multiplication sign ]
+[template Oslash[]'''&#xD8;'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ]
+[template Ugrave[]'''&#xD9;'''] [/ Latin capital letter U with grave ]
+[template Uacute[]'''&#xDA;'''] [/ Latin capital letter U with acute ]
+[template Ucirc[]'''&#xDB;'''] [/ Latin capital letter U with circumflex ]
+[template Uuml[]'''&#xDC;'''] [/ Latin capital letter U with diaeresis ]
+[template Yacute[]'''&#xDD;'''] [/ Latin capital letter Y with acute ]
+[template THORN[]'''&#xDE;'''] [/ Latin capital letter THORN ]
+[template szlig[]'''&#xDF;'''] [/ Latin small letter sharp s = ess-zed ]
+[template agrave[]'''&#xE0;'''] [/ Latin small letter a with grave = Latin small letter a grave ]
+[template aacute[]'''&#xE1;'''] [/ Latin small letter a with acute ]
+[template acirc[]'''&#xE2;'''] [/ Latin small letter a with circumflex ]
+[template atilde[]'''&#xE3;'''] [/ Latin small letter a with tilde ]
+[template auml[]'''&#xE4;'''] [/ Latin small letter a with diaeresis ]
+[template aring[]'''&#xE5;'''] [/ Latin small letter a with ring above = Latin small letter a ring ]
+[template aelig[]'''&#xE6;'''] [/ Latin small letter ae = Latin small ligature ae ]
+[template ccedil[]'''&#xE7;'''] [/ Latin small letter c with cedilla ]
+[template egrave[]'''&#xE8;'''] [/ Latin small letter e with grave ]
+[template eacute[]'''&#xE9;'''] [/ Latin small letter e with acute ]
+[template ecirc[]'''&#xEA;'''] [/ Latin small letter e with circumflex ]
+[template euml[]'''&#xEB;'''] [/ Latin small letter e with diaeresis ]
+[template igrave[]'''&#xEC;'''] [/ Latin small letter i with grave ]
+[template iacute[]'''&#xED;'''] [/ Latin small letter i with acute ]
+[template icirc[]'''&#xEE;'''] [/ Latin small letter i with circumflex ]
+[template iuml[]'''&#xEF;'''] [/ Latin small letter i with diaeresis ]
+[template eth[]'''&#xF0;'''] [/ Latin small letter eth ]
+[template ntilde[]'''&#xF1;'''] [/ Latin small letter n with tilde ]
+[template ograve[]'''&#xF2;'''] [/Latin small letter o with grave ]
+[template oacute[]'''&#xF3;'''] [/ Latin small letter o with acute ]
+[template ocirc[]'''&#xF4;'''] [/ Latin small letter o with circumflex ]
+[template otilde[]'''&#xF5;'''] [/ Latin small letter o with tilde ]
+[template ouml[]'''&#xF6;'''] [/ Latin small letter o with diaeresis ]
+[template divide[]'''&#xF7;'''] [/ division sign ]
+[template oslash[]'''&#xF8;'''] [/ Latin small letter o with stroke = Latin small letter o slash ]
+[template ugrave[]'''&#xF9;'''] [/ Latin small letter u with grave ]
+[template uacute[]'''&#xFa;'''] [/ Latin small letter u with acute ]
+[template ucirc[]'''&#xFB;'''] [/ Latin small letter u with circumflex ]
+[template uuml[]'''&#xFC;'''] [/ Latin small letter u with diaeresis ]
+[template yacute[]'''&#xFD;'''] [/ Latin small letter y with acute ]
+[template thorn[]'''&#xFE;'''] [/ Latin small letter thorn ]
+[template yuml[]'''&#xFF;'''] [/ Latin small letter y with diaeresis ]
+
+[/ File Latin1_symbols.qbk
+Copyright 2007 Paul A. Bristow.
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+]
+

Added: sandbox/multiprecision/libs/multiprecision/doc/multiprecision.qbk
==============================================================================
--- (empty file)
+++ sandbox/multiprecision/libs/multiprecision/doc/multiprecision.qbk 2011-11-02 07:44:40 EDT (Wed, 02 Nov 2011)
@@ -0,0 +1,561 @@
+[article multiprecision Users Manual.
+ [quickbook 1.6]
+ [id multiprecision]
+ [copyright 2011 Christopher Kormanyos]
+ [license
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ [@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+ [authors [ Kormanyos, Christopher]]
+ [source-mode c++]
+]
+
+[/ Images]
+[/ $images is a reference to a sub-folder where images are held.]
+
+[/ Links - by (most common) convention, prefixed with double underscore so not confused with other names.]
+[def __alert [$./images/alert.png]] [/ Examples of your own images (in doc/html/images/ .]
+[def __tip [$./images/tip.png]]
+[def __smiley [$./images/smiley.svg]]
+[/ If you provide a file type like .png, you may (probably) find that the file is missing in the pdf version.]
+[/ This is because the default file type specified is .png in html, but .svg for pdf version.]
+[/ You can easily interconvert between these types using Inkscape.]
+
+[/ Some links to external sources.]
+[def __boost [@http://www.boost.org/ Boost]]
+[/Note the custom url schema for linking to files within the Boost distribution.]
+[/def __boostroot [@boost: Boost root] does NOT work withe PDF, so avoid.]
+[/Note too that it can't be used for images.]
+[def __boostlicense [@http://www.boost.org/LICENSE_1_0.txt Boost License]]
+
+[def __boostbook [@http://www.boost.org/doc/html/boostbook.html BoostBook]]
+[def __boostbook_docs [@http://www.boost.org/doc/libs/1_46_0/doc/html/boostbook.html BoostBook documentation]]
+
+[def __quickbook [@http://www.boost.org/doc/tools/quickbook/index.html Quickbook]]
+[def __quickbook_syntax [@http://www.boost.org/doc/libs/1_46_0/doc/html/quickbook/ref.html Quickbook Syntax Compendium]]
+[def __quickbook_phrase_syntax [@http://boost-sandbox.sourceforge.net/doc/html/quickbook/syntax.html#quickbook.syntax.phrase Quickbook phrase level syntax]]
+
+[def __autoindex [@https://svn.boost.org/svn/boost/sandbox/tools/auto_index/doc/html/index.html AutoIndex]]
+
+[def __docbook [@http://www.docbook.org/ DocBook]]
+[def __doxygen [@http://www.doxygen.org/ Doxygen]]
+[def __pdf [@http://www.adobe.com/products/acrobat/adobepdf.html PDF]]
+[def __inkscape [@http://www.inkscape.org Inkscape]]
+[def __svg [@http://http://www.w3.org/TR/SVG/ SVG]]
+
+[def __todo [link multiprecision.todo TODO]]
+
+[def __renderx [@http://www.renderx.com/tools/xep.html Render XEP]]
+
+[/ multiprecision References]
+
+[def __Coplien James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison Wesley, Reading
+Massachusetts, 1992.]
+
+[def __MISRA MISRA. MISRA-C++ 2008: Guidelines for the Use of the C++ Language in Critical Systems.
+MISRA Consortium, [@http://www.misra-cpp.org/ MISRA-C++], 2008.]
+
+[include html4_symbols.qbk]
+[include latin1_symbols.qbk]
+
+[/ Some composite templates]
+[template super[x]'''<superscript>'''[x]'''</superscript>''']
+[template sub[x]'''<subscript>'''[x]'''</subscript>''']
+[template floor[x]'''&#x230A;'''[x]'''&#x230B;''']
+[template floorlr[x][lfloor][x][rfloor]]
+[template ceil[x] '''&#x2308;'''[x]'''&#x2309;''']
+
+[template header_file[file] [@../../../../../[file] [file]]]
+
+[/ template to switch equations and graphs to use PNG for display but SVG for PDF]
+[template equation[name] '''<inlinemediaobject>
+<imageobject role="html">
+<imagedata fileref="../equations/'''[name]'''.png"></imagedata>
+</imageobject>
+<imageobject role="print">
+<imagedata fileref="../equations/'''[name]'''.svg"></imagedata>
+</imageobject>
+</inlinemediaobject>''']
+
+[template graph[name] '''<inlinemediaobject>
+<imageobject role="html">
+<imagedata align="center" fileref="../graphs/'''[name]'''.png"></imagedata>
+</imageobject>
+<imageobject role="print">
+<imagedata align="center" fileref="../graphs/'''[name]'''.svg"></imagedata>
+</imageobject>
+</inlinemediaobject>''']
+
+[warning This documentation is very much under construction!]
+
+[important This is NOT yet an official Boost library.]
+
+[note Comments and suggestions (even bugs!) to Christopher Kormanyos (at) e_float (dot) yahoo (dot) com]
+
+A PDF version of this manual that is printer-friendly is also available.
+
+[section:intro Introduction]
+[/ It is a good idea to give *all* sections an id - which must follow section: with *no* space(s).]
+[/ Perhaps also useful to use this text for the Doxygen standalone documentation.]
+
+
+[section:about About multiprecision]
+
+There are many multiple precision (MP) packages available to the scientific and engineering community.
+Each package has individual strengths within its range of application. However, most MP
+packages lack a uniform interface for high precision algorithm design. They also offer little or no
+special function support. Also, many MP packages have limited portability. There is no portable
+standalone C++ system which offers a wide variety of high precision special functions and handles
+large function parameters.
+
+The multiprecision system (previously called extended float) not only addresses these weaknesses
+but also significantly advances MP technology.
+It uses several MP packages and provides a uniform C++ interface for high
+precision algorithm design, independent of the underlying MP implementation. In addition, multiprecision
+supports a large collection of high performance MP functions which are entirely portable, solidly
+designed and can be used with any suitably prepared MP type. Furthermore, the multiprecision system
+provides software interfaces for seamless interoperability with other high level languages. No MP
+system other than multiprecision offers such a high degree of portability, such a wide range of functions,
+and such a rich selection of powerful interoperabilities. The multiprecision library can be used for a variety
+of purposes such as high precision function evaluation, numerical verification of compilers, function
+libraries or other computational systems as well as investigations of compiler quality, optimization
+methods and computer hardware.
+
+Multiprecision is unique because it is designed from the ground up utilizing generic and object oriented
+design methods to create an efficient and flexible numerical software architecture [footnote __Coplien], [footnote __MISRA], [super 36].
+[/TODO deal with all the references as macros and add to references section.]
+
+The standard containers and algorithms of the C++ STL and TR1 are consistently used to reduce
+programmatic complexity [super 3], [super 14], [super 15], [super 20]. Static and dynamic polymorphism are used to implement
+a standardized interface to MP types allowing for the interchangeable use of different MP
+implementations.
+
+Multiprecision is written in the C++ language making broad use of the C++ core language, much of the
+STL and some of TR1, as specified in ISO/IEC 14882:2003 and ISO/IEC 19768:2007 [super 14, super 15]. It
+is emphasized that the C++ compiler must closely adhere to these standards in order to successfully
+compile and link multiprecision. The source codes have been implemented according to safe programming
+and reliability standards originating from the automotive industry [super 26, 27]. A great
+effort has been invested in advanced C++ optimization techniques in order to improve system performance.
+Generic and object oriented programming methods have been used to create an efficient
+and flexible numerical software architecture. In addition, consistent use of standard containers and
+algorithms of the STL and TR1 [super 20, 3] has significantly reduced and evenly distributed the computational
+complexities of the entire program.
+
+...
+
+[endsect] [/section:about About Multiprecision]
+
+[section:config Configurations]
+
+The multiprecision system supports a variety of configurations using several multiprecision classes as well
+as other libraries and systems. These are shown in Table 1. Details about the capabilities and
+dependencies of the configurations are also included in the table below.
+
+[endsect] [/section:config Configurations]
+
+[section:architecture The Multiprecision System Architecture]
+
+The multiprecision system architecture is robust and flexible. With this architecture, both the integration
+of other MP types as well as the addition of more functions and interoperabilities can be done with
+ease. The system architecture is shown in Figure 1. It has four layers and two additional blocks, the
+test block and the tools block. Layers 1-4 have successively increasing levels of abstraction. They
+build up very high level functionalities in a stable, stepwise fashion.
+
+[note that ['multiprecision] is not only the name of the system but also the name of several multiprecision classes.]
+
+* Layer 1, the low level MP layer, ensures that each implementation-dependent, possibly nonportable
+MP implementation is suitably prepared to conform with the C++ class requirements of
+Layer 2. Each individual MP type is encapsulated within a specific multiprecision C++ class, each one
+of which defined within its own unique namespace. For example, classes such as efx::multiprecision,
+gmp::multiprecision and others are implemented. Each of these classes is derived from a common abstract
+base class called ::multiprecision base. The abstract base class defines public and pure virtual
+functions which implement arithmetic primitives such as self-multiplication, self-compare, special
+numbers like NaN, and string operations. These arithmetic primitives fulfill the requirements necessary
+for elementary mathematics. They simultaneously conform with Layer 2. Thus, via inheritance
+and implementation of virtual functions, each individual multiprecision class supports elementary mathematics
+and also complies with Layer 2.
+
+Some MP types include their own versions of various functions. Layer 1 accommodates this with
+the "has-its-own"-mechanism. This mechanism allows the C++ interface of a given MP type to use
+the MP s own algorithm for a particular function. It uses virtual Boolean functions prefixed with
+"has its own". For example, has its own sin returns true in order to use the MPs
+own implementation of sin(x), x2R. The performance of a specific MP class can be optimized by
+selectively activating these functions. MPFR [super 11] has its own implementations of most elementary
+functions and several higher transcendental functions. The elementary functions are quite efficient
+and these are, in fact, used to optimize the performance of mpfr::multiprecision.
+
+* Layer 2 implements the uniform C++ interface. The multiprecision type from layer 1, which will
+be used in the project configuration, is selected with a compile-time option. The functions of this
+multiprecision class are used to implement all arithmetic operations, numeric limits and basic I/O mechanisms.
+Thus, layer 2 provides a uniform C++ interface which is generic and fully equipped with
+all the basic functions necessary for high level MP algorithm design in a C++ environment.
+
+* Layer 3 is the C++ mathematical layer. It adds the class ef complex, i.e. the complex data
+type. This layer uses both the selected multiprecision type as well as ef complex to implement
+multiprecision's rich collection of elementary functions and higher transcendental functions.
+
+* Layer 4, the interoperability user layer, exposes all of the functions and capabilities of layers 2
+and 3 to other high level languages. Marshaling techniques [super 34] are used to create managed C++
+classes and wrapper functions which embody the full functionality of layers 2 and 3. These are
+compiled to a single CLR assembly which can be used with all Microsoft[reg] CLR languages including
+C#, managed C++/CLI, IronPython, etc. Compatibility with the Microsoft[reg].NET Framework 3.5
+has been tested. Another interoperability employs the boost.python library [super 1] to expose the
+functionality of layers 2 and 3 to Python. Compatibilities with Python 2.6.4 and boost 1.39 have
+been tested.
+
+Another layer 4 interoperability targets Mathematica [reg]. A sparse architecture has been developed
+to create a generic interface for interacting with computer algebra systems. The compatibility of this
+interface with Mathematica[reg] 7.1 has been tested. The interoperabilities of layer 4 are very powerful
+mechanisms based on highly advanced programming techniques. They can be used for very high
+level designs such as scripting, rapid algorithm prototyping and result visualization.
+
+diagram
+
+The test block contains several hundred automatically generated test files which have been specifically
+designed to test all algorithms and convergence regions of the entire multiprecision system. The test
+block includes an automatic test execution system and an automatic test case generator. This block
+allows for fully reproducible automated testing of the system.
+
+The tool block contains a variety of utilities and examples. The utilities predominantly consist
+of generic templates for standard mathematical operations such as numerical differentiation, root
+finding, recursive quadrature, etc. The examples show practical, non-trivial uses of the multiprecision
+system involving both high level algorithm design as well as interoperability.
+
+The multiprecision architecture exemplifies how layered design can be leveraged to find the right granularity
+to distribute a very large computational complexity among smaller constituents which have
+manageable software scope. For example, there are vast software distances between the handoptimized
+assembler routines of GNU MP [super 15] and, for example, the Hurwitz zeta function, or a
+high level GUI in C#. The multiprecision architecture elegantly navigates these distances to build up high
+level functionalities in a controlled, stepwise fashion.
+
+The multiprecision system architecture is a significant technological milestone in MP programming technology.
+While other MP packages do sometimes provide a specialized C++ interface for their own
+specific implementations, they are mostly incompatible with each other. However, multiprecision's uniform
+C++ layer creates a generic interface which can be used with any underlying MP type. Assuming
+that a given MP type can be brought into conformance with layer 2, it can be used in a portable fashion
+with all of multiprecision's capabilities including arithmetic, elementary functions, special functions,
+interoperabilities, automatic tests, utilities, and additional user-created extensions.
+
+[endsect] [/section:architecture The multiprecision System Architecture]
+
+
+[endsect] [/section:intro Introduction]
+
+[/ Now follow the main sections of your documentation.
+These .qbk files can of course many sections, and may include other .qbk files (examples.qbk perhaps?),
+links to other files of any type and location,
+and import C++ file snippets that may turn one or more sections into templates that can be included.]
+
+[section:example Examples]
+
+[section:use_library Using Multiprecision with a pre-built library]
+
+[section:building_library Building Multiprecision Library]
+
+To build a multiprecision library, see folder
+
+[@../../build/build_libraries/]
+
+and use the jamfile.v2 therein, by changing directory to your version of
+[^/multiprecision/libs/multiprecision/build/build_libraries/]
+
+and run the jamfile using
+
+ b2 > multiprecision_lib_build.log
+
+This will create a static library in that directory
+(you can copy or install it elsewhere if you prefer, for example boost-1.nnn/stage/lib).
+
+Whereever you place it, the library must be visible to the example programs.
+(For Microsoft Visual, either add the folder to to the VC++ Directories, Library Directories
+and add [^libboost_multiprecision] to the an Linker, Input, Additional Dependencies).
+
+[endsect] [/section:building_library Building multiprecision Library]
+
+[section:using_lib Using a Library]
+
+This section shows a few simple aspects of using multiprecision with a pre-built library.
+
+[import ../example/using_library_example/using_library_example.cpp]
+
+[using_library_example_1]
+
+[note It may seem (and be) simplest to declare global use of the namespace [^boost::multiprecision]
+but this risks conflicts with names that appear in other namespaces, like std.
+So it is safer to limit the scope to within user classes and functions,
+or to specify explicitly the functions, either with a using statement,
+or, more verbosely, at the point of use, as various shown below.]
+
+To start, we display the precision currently available (a compile-time constant),
+and the number of possibly significant and guaranteed digits from
+`std::numeric_limits` (which is fully specified for `mp_float`).
+
+[using_library_example_2]
+
+We then construct an mp_float from an integer (10),
+and also another mp_float using a constant function `boost::multiprecision::hundred();`
+and use it to calculate a [@http://en.wikipedia.org/wiki/Googol googol].
+We then try (but fail) to calculate a [@http://en.wikipedia.org/wiki/Googolplex googleplex],
+but the result is correctly reported as infinity because is exceeds even the monster range of multiprecision
+(at default precision), shown by using numeric_limits
+
+ std::numeric_limits<mp_float>::max()
+ = 1.000000000000000000000000000000000000000000000000000000000e+003063937869882635617
+
+[using_library_example_3]
+
+Many other constants are available as functions.
+It would be verbose and inconvenient to have to fully specify each use fully,
+so `using` statements are sensible.
+
+[using_library_example_4]
+
+Other constants can be derived with no loss of precision,
+but as the next examples show, there are dragons awaiting the unwary!
+
+The first is a C++ danger, familiar using integers and built-in floating-point types.
+
+ double r = 41/47; // zero!
+
+We [*must] use a floating-point type constant (41.0) for the numerator
+
+ double r = 41.0/47;
+
+but there are further dangers using multiprecision and builtin floating-point types double...
+from the risk of often silent but catastrophic loss of precision converting from the much lower precision built-in type.
+So if we innocently write
+
+ mp_float r = 41./47;
+
+[warning It [*appears] to get the right result, but in fact loses precision from converting from double to mp_float,
+typically near the the 17th decimal digit.]
+
+So one needs to be very careful to always work with `mp_float`, for example by static_casting.
+
+ mp_float r = static_cast<mp_float>(41)/47;
+
+[using_library_example_4]
+
+The full output from this example is
+
+[library_eg_output]
+
+The full source code of this examples is at [@../../example/using_library_example/using_library_example.cpp using_library_example.cpp].
+
+[endsect] [/section:using_lib Using a Library]
+
+
+[endsect] [/section:use_library Using multiprecision with a pre-built library]
+
+
+[section:use_headeronly Using multiprecision ['headeronly]]
+
+Some users like to avoid pre-built libraries (static .LIB or synamic shared .DLL.
+
+Since Boost.Multiprecision has separate declarations in header files and definitions in sources files,
+at [@../src/ Header files], it is necessary include many [^.cpp] source files as well [^.hpp] files.
+
+The header files needed in the user program are
+
+ #include <boost/multiprecision/mp_float.hpp>
+ #include <boost/multiprecision/mp_float_functions.hpp> // for constants.
+
+The full set of source files is
+
+ backends/float/mp_float.cpp
+ backends/float/mp_float_base.cpp
+ backends/float/efx/mp_float_efx.cpp
+
+ functions/constants/constants.cpp
+ functions/elementary/elementary_complex.cpp
+ functions/elementary/elementary_hyper_g.cpp
+ functions/elementary/elementary_math.cpp
+ functions/elementary/elementary_trans.cpp
+ functions/elementary/elementary_trig.cpp
+ functions/gamma/factorial.cpp
+ functions/gamma/factorial2.cpp
+ functions/gamma/gamma.cpp
+ functions/gamma/pochhammer.cpp
+ functions/integer/bernoulli_b.cpp
+ functions/integer/prime.cpp
+ functions/integer/prime_factor.cpp
+ functions/zeta/zeta.cpp
+ utility/util_digit_scale.cpp
+ utility/util_power_j_pow_x.cpp
+ utility/util_timer.cpp
+
+These need to be added to the MS Project Files.
+
+[endsect] [/section:use_headeronly Using multiprecision ['headeronly]]
+
+
+[section:dragons Here Be Dragons]
+
+[import ../example/dragons_example/dragons_example.cpp]
+
+[dragons_example_1]
+
+The full output from this example is
+
+[dragons_example_output]
+
+The full example source is at [@../../example/dragons_example/dragons_example.cpp dragons_example.cpp].
+
+[endsect] [/section:dragons Here Be Dragons]
+
+
+[section:functions Functions and Constants]
+
+[import ../example/evaluate_examples/evaluate_examples.cpp]
+
+[evaluate_examples]
+
+The full output from this example is
+
+[evaluate_examples_output]
+
+The full example source is at [@../../example/evaluate_examples/evaluate_examples.cpp evaluate_examples.cpp].
+
+[endsect] [/section:functions Functions and constants]
+
+[endsect] [/section:example Examples]
+
+[include conventions.qbk] [/If thought useful?]
+
+[include acknowledgements.qbk] [/ Who deserves credit for what.]
+
+
+[section: references References]
+[/references perhaps in references.qbk] [/ references to academic papers, patents, prior art...]
+
+* __Coplien
+* __MISRA
+
+[endsect] [/section: references References]
+
+[section:rationale Design Rationale]
+
+[ordered_list
+[ [/ 1st item]
+[*Precision - Compile-time versus Run-time.]
+
+After consultation on the Boost list,
+it was decided that the best compromise was to fix precision compile-time,
+rather than allow the choice to be made at run-time.
+
+A major factor was the sheer difficulty of achieving a run-time solution,
+but also the risk of performance penalty, longer compile times,
+risk of errors from complexity, greater difficulty of testing.
+]
+
+[ [/2nd item]
+[*Choice of backend]
+It was considered important to permit a choice of backend.
+Although GMP/MPFR is the ['Gold Standard], the restricted licence terms make it
+useless for any commercial applications, so it was deemed essential to provide
+a Boost license backend, even if its performance was not quite as good.
+]
+] [/end of ordered_list]
+
+# [*Mechanism of choosing backend]
+It was decided that using a macro BOOST_MULTIPRECISION_BACKEND_MP_FLOAT_TYPE_xxx
+was the best way to achieve this, where xxx is a three letter acronym for the backend, for example, EFX.
+
+# [*Default precision of 50] was chosen to be greater than any floating-point hardware,
+but not so big that printing a single value would overflow typical line length.
+(
+
+# [*Upper limit of 300 decimal digits]
+was chosen TODO.
+
+# [*Base-10 radix]
+was chosen over base-2 radix because TODO.
+
+# [*Automatic Conversions and Construction].[br]
+It was initially planned to enforce explicit conversions, for example,
+conversion from integer and floating-point to mp_float.
+However, integer conversions are exact unless they cause overflow,
+a separate issue. Floating-point conversion carries a risk of loss of precision.
+However, in practice, it was found that the burden on the user in providing
+explicit conversion, for example by [^static_cast]ing was too great for the benefit in safety.
+A specific example was that, for conformance with Boost.Math,
+boost::multiprecision::mp_float required automatic conversion to/from any and all built-in types,
+including in association with add, sub, mul, div.
+So it was decided to rely on documentation to warning (loudly and repeatedly)
+and the danger of construction and conversion from built-in `float`, `double` and `long double`.
+
+#[*Separation of definitions from declarations]
+Definitions are all placed in source files of type `.cpp` in a subdirectory `/src`.
+Header files containing declarations are placed as usual in `boost/multiprecision/*.hpp`.
+This makes it possible to use header-only
+(if slightly less convenient, because the .cpp files have to included as well)
+or with building a multiprecision library. Separating source may reduce compile time.
+
+
+
+[endsect] [/section:rationale Design Rationale]
+
+
+[section:tickets Appendix: Tickets]
+[/ This will not work until Trac bug list is actually in use!]
+
+Report and view bugs and features by adding a ticket at [@https://svn.boost.org/trac/boost Boost.Trac].
+
+Existing open tickets for this library alone can be viewed
+[@https://svn.boost.org/trac/boost/query?status=assigned&status=new&status=reopened&component=multiprecision&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority here].
+Existing tickets for this library - including closed ones - can be viewed
+[@https://svn.boost.org/trac/boost/query?status=assigned&status=closed&status=new&status=reopened&component=multiprecision&col=id&col=summary&col=status&col=owner&col=type&col=milestone&order=priority here].
+
+[endsect] [/section:tickets Appendix: Tickets]
+
+[section:version_id Version Info]
+
+Last edit to Quickbook file __FILENAME__ was at __TIME__ on __DATE__.
+
+[tip This version information should appear on the pdf version
+ (but is redundant on html where the last revised date is on the bottom line of the home page).]
+[warning Home page "Last revised" is GMT, not local time. Last edit date is local time.]
+[/See also Adobe Reader pdf File Properties for creation date, and PDF producer, version and page count.]
+
+[caution It does not give the last edit date of other included .qbk files, so may mislead!]
+[/See also Adobe Reader pdf File Properties for creation date, and PDF producer, version and page count.]
+
+[endsect] [/section:version_id Version Info]
+
+[xinclude autodoc.xml] [/ Using Doxygen reference documentation.]
+[/ The position of this command in the Quickbook determines the location of the Doxygen references section.]
+
+[/This (if enabled) creates an Index section that include the class, function ... indexes, and also a full index with <index/>]
+
+[? enable_index
+'''
+ <index type="class_name">
+ <title>Class Index</title>
+ </index>
+
+ <index type="typedef_name">
+ <title>Typedef Index</title>
+ </index>
+
+ <index type="function_name">
+ <title>Function Index</title>
+ </index>
+
+
+ <index type="macro_name">
+ <title>Macro Index</title>
+ </index>
+
+ <index/>
+
+'''
+]
+[/if enable_index]
+
+[/ multiprecision.qbk
+ Copyright 2011 Christopher Kormanyos.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+]


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk