Browse Source

Copied files from Trunk.

[SVN r51415]
John Maddock 17 years ago
parent
commit
a540e1e989
52 changed files with 6154 additions and 0 deletions
  1. 253 0
      doc/test/HTML4_symbols.qbk
  2. 209 0
      doc/test/Jamfile.v2
  3. 64 0
      doc/test/array.xml
  4. 543 0
      doc/test/array1.xml
  5. 82 0
      doc/test/array2.xml
  6. 22 0
      doc/test/array3.xml
  7. 5 0
      doc/test/array4.xml
  8. 50 0
      doc/test/gold/boost/accumulators/extract/weighted_tail_quantile.html
  9. 91 0
      doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id226526.html
  10. 52 0
      doc/test/gold/boost/accumulators/tag/weighted_tail_quantile.html
  11. 641 0
      doc/test/gold/boost/array.html
  12. 69 0
      doc/test/gold/document_to_test_formatting/accumulators.html
  13. 262 0
      doc/test/gold/document_to_test_formatting/array.html
  14. 201 0
      doc/test/gold/document_to_test_formatting/basic_formatting.html
  15. 160 0
      doc/test/gold/document_to_test_formatting/blurbs.html
  16. 428 0
      doc/test/gold/document_to_test_formatting/code_blocks.html
  17. 60 0
      doc/test/gold/document_to_test_formatting/images.html
  18. 455 0
      doc/test/gold/document_to_test_formatting/lists_and_tables.html
  19. 535 0
      doc/test/gold/document_to_test_formatting/remez.html
  20. 73 0
      doc/test/gold/document_to_test_formatting/test.html
  21. BIN
      doc/test/gold/images/accumulators/doxygen.png
  22. BIN
      doc/test/gold/images/accumulators/form_0.png
  23. BIN
      doc/test/gold/images/accumulators/form_1.png
  24. BIN
      doc/test/gold/images/accumulators/form_2.png
  25. BIN
      doc/test/gold/images/accumulators/form_3.png
  26. BIN
      doc/test/gold/images/accumulators/form_4.png
  27. BIN
      doc/test/gold/images/accumulators/form_5.png
  28. BIN
      doc/test/gold/images/accumulators/form_6.png
  29. BIN
      doc/test/gold/images/accumulators/form_7.png
  30. BIN
      doc/test/gold/images/accumulators/form_8.png
  31. BIN
      doc/test/gold/images/beta_dist_kurtosis.png
  32. BIN
      doc/test/gold/images/digamma3.png
  33. BIN
      doc/test/gold/images/doctest.png
  34. 143 0
      doc/test/gold/images/open_clipart_library_logo.svg
  35. BIN
      doc/test/gold/images/remez-2.png
  36. BIN
      doc/test/gold/images/remez-3.png
  37. BIN
      doc/test/gold/images/remez-4.png
  38. BIN
      doc/test/gold/images/remez-5.png
  39. 149 0
      doc/test/gold/index.html
  40. BIN
      doc/test/html/images/beta_dist_kurtosis.png
  41. BIN
      doc/test/html/images/digamma3.png
  42. BIN
      doc/test/html/images/doctest.png
  43. 143 0
      doc/test/html/images/open_clipart_library_logo.svg
  44. BIN
      doc/test/html/images/remez-2.png
  45. BIN
      doc/test/html/images/remez-3.png
  46. BIN
      doc/test/html/images/remez-4.png
  47. BIN
      doc/test/html/images/remez-5.png
  48. 372 0
      doc/test/remez.qbk
  49. 69 0
      doc/test/stub.cpp
  50. 626 0
      doc/test/test.qbk
  51. 253 0
      doc/test/test_HTML4_symbols.qbk
  52. 144 0
      doc/test/weighted_tail_quantile.hpp

+ 253 - 0
doc/test/HTML4_symbols.qbk

@@ -0,0 +1,253 @@
+[/ File Latin1_symbols.qbk
+Copyright 2006-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).
+]
+
+
+[/ Symbols and Greek letters (about 120) from HTML4 ]
+[/ File HTML4_symbols.qbk]
+[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
+[/ All (except 2 angle brackets) show OK on Firefox 2.0]
+
+[/ Also some miscellaneous math charaters added to this list - see the end.]
+
+[/ To use, enclose the template name in square brackets.]
+
+[template fnof[]'''ƒ'''] [/ � Latin small f with hook = function = florin]
+[template Alpha[]'''Α'''] [/ ? Greek capital letter alpha]
+[template Beta[]'''Β'''] [/ ? Greek capital letter beta]
+[template Gamma[]'''Γ'''] [/ G Greek capital letter gamma]
+[template Delta[]'''Δ'''] [/ ? Greek capital letter delta]
+[template Epsilon[]'''Ε'''] [/ ? Greek capital letter epsilon]
+[template Zeta[]'''Ζ'''] [/ ? Greek capital letter zeta]
+[template Eta[]'''Η'''] [/ ? Greek capital letter eta]
+[template Theta[]'''Θ'''] [/ T Greek capital letter theta]
+[template Iota[]'''Ι'''] [/ ? Greek capital letter iota]
+[template Kappa[]'''Κ'''] [/ ? Greek capital letter kappa]
+[template Lambda[]'''Λ'''] [/ ? Greek capital letter lambda]
+[template Mu[]'''Μ'''] [/ ? Greek capital letter mu]
+[template Nu[]'''Ν'''] [/ ? Greek capital letter nu]
+[template Xi[]'''Ξ'''] [/ ? Greek capital letter xi]
+[template Omicron[]'''Ο'''] [/ ? Greek capital letter omicron]
+[template Pi[]'''Π'''] [/ ? Greek capital letter pi]
+[template Rho[]'''Ρ'''] [/ ? Greek capital letter rho]
+[template Sigma[]'''Σ'''] [/ S Greek capital letter sigma]
+[template Tau[]'''Τ'''] [/ ? Greek capital letter tau]
+[template Upsilon[]'''Υ'''] [/ ? Greek capital letter upsilon]
+[template Phi[]'''Φ'''] [/ F Greek capital letter phi]
+[template Chi[]'''Χ'''] [/ ? Greek capital letter chi]
+[template Psi[]'''Ψ'''] [/ ? Greek capital letter psi]
+[template Omega[]'''Ω'''] [/ O Greek capital letter omega]
+[template alpha[]'''α'''] [/ a Greek small letter alpha]
+[template beta[]'''β'''] [/ � Greek small letter beta]
+[template gamma[]'''γ'''] [/ ? Greek small letter gamma]
+[template delta[]'''δ'''] [/ d Greek small letter delta]
+[template epsilon[]'''ε'''] [/ e Greek small letter epsilon]
+[template zeta[]'''ζ'''] [/ ? Greek small letter zeta]
+[template eta[]'''η'''] [/ ? Greek small letter eta]
+[template theta[]'''θ'''] [/ ? Greek small letter theta]
+[template iota[]'''ι'''] [/ ? Greek small letter iota]
+[template kappa[]'''κ'''] [/ ? Greek small letter kappa]
+[template lambda[]'''λ'''] [/ ? Greek small letter lambda]
+[template mu[]'''μ'''] [/ � Greek small letter mu]
+[template nu[]'''ν'''] [/ ? Greek small letter nu]
+[template xi[]'''ξ'''] [/ ? Greek small letter xi]
+[template omicron[]'''ο'''] [/ ? Greek small letter omicron]
+[template pi[]'''π'''] [/ p Greek small letter pi]
+[template rho[]'''ρ'''] [/ ? Greek small letter rho]
+[template sigmaf[]'''ς'''] [/ ? Greek small letter final sigma]
+[template sigma[]'''σ'''] [/ s Greek small letter sigma]
+[template tau[]'''τ'''] [/ t Greek small letter tau]
+[template upsilon[]'''υ'''] [/ ? Greek small letter upsilon]
+[template phi[]'''φ'''] [/ f Greek small letter phi]
+[template chi[]'''χ'''] [/ ? Greek small letter chi]
+[template psi[]'''ψ'''] [/ ? Greek small letter psi]
+[template omega[]'''ω'''] [/ ? Greek small letter omega]
+[template thetasym[]'''ϑ'''] [/ ? Greek small letter theta symbol]
+[template upsih[]'''ϒ'''] [/ ? Greek upsilon with hook symbol]
+[template piv[]'''ϖ'''] [/ ? Greek pi symbol]
+[template bull[]'''•'''] [/  � bullet = black small circle]
+[template hellip[]'''…'''] [/  � horizontal ellipsis = three dot leader]
+[template prime[]'''′'''] [/  ' prime = minutes = feet]
+[template Prime[]'''″'''] [/  ? double prime = seconds = inches]
+[template oline[]'''‾'''] [/  ? overline = spacing overscore]
+[template frasl[]'''⁄'''] [/  / fraction slash]
+[template weierp[]'''℘'''] [/  P script capital P = power set = Weierstrass p]
+[template image[]'''ℑ'''] [/  I blackletter capital I = imaginary part]
+[template real[]'''ℜ'''] [/  R blackletter capital R = real part symbol]
+[template trade[]'''™'''] [/  � trade mark sign]
+[template alefsym[]'''ℵ'''] [/  ? alef symbol = first transfinite cardinal]
+[template larr[]'''←'''] [/  ? leftwards arrow]
+[template uarr[]'''↑'''] [/  ? upwards arrow]
+[template rarr[]'''→'''] [/  ? rightwards arrow]
+[template darr[]'''↓'''] [/  ? downwards arrow]
+[template harr[]'''↔'''] [/  ? left right arrow]
+[template crarr[]'''↵'''] [/  ? downwards arrow with corner leftwards = CR]
+[template lArr[]'''⇐'''] [/  ? leftwards double arrow]
+[template uArr[]'''⇑'''] [/  ? upwards double arrow]
+[template rArr[]'''⇒'''] [/  ? rightwards double arrow]
+[template dArr[]'''⇓'''] [/  ? downwards double arrow]
+[template hArr[]'''⇔'''] [/  ? left right double arrow]
+[template forall[]'''∀'''] [/  ? for all]
+[template part[]'''∂'''] [/  ? partial differential]
+[template exist[]'''∃'''] [/  ? there exists]
+[template empty[]'''∅'''] [/  � empty set = null set = diameter]
+[template nabla[]'''∇'''] [/  ? nabla = backward difference]
+[template isin[]'''∈'''] [/  ? element of]
+[template notin[]'''∉'''] [/  ? not an element of]
+[template ni[]'''∋'''] [/  ? contains as member]
+[template prod[]'''∏'''] [/  ? n-ary product = product sign]
+[template sum[]'''∑'''] [/  ? n-ary sumation]
+[template minus[]'''−'''] [/  - minus sign]
+[template lowast[]'''∗'''] [/  * asterisk operator]
+[template radic[]'''√'''] [/  v square root = radical sign]
+[template prop[]'''∝'''] [/  ? proportional to]
+[template infin[]'''∞'''] [/  8 infinity]
+[template ang[]'''∠'''] [/  ? angle]
+[template and[]'''∧'''] [/  ? logical and = wedge]
+[template or[]'''∨'''] [/  ? logical or = vee]
+[template cap[]'''∩'''] [/  n intersection = cap]
+[template cup[]'''∪'''] [/  ? union = cup]
+[template int[]'''∫'''] [/  ? integral]
+[template there4[]'''∴'''] [/  ? therefore]
+[template sim[]'''∼'''] [/  ~ tilde operator = varies with = similar to]
+[template cong[]'''≅'''] [/  ? approximately equal to]
+[template asymp[]'''≈'''] [/  � almost equal to = asymptotic to]
+[template ne[]'''≠'''] [/  ? not equal to]
+[template equiv[]'''≡'''] [/  = identical to]
+[template le[]'''≤'''] [/  = less-than or equal to]
+[template ge[]'''≥'''] [/  = greater-than or equal to]
+[template subset[]'''⊂'''] [/  ? subset of]
+[template superset[]'''⊃'''] [/  ? superset of]
+[template nsubset[]'''⊄'''] [/  ? not a subset of]
+[template sube[]'''⊆'''] [/  ? subset of or equal to]
+[template supe[]'''⊇'''] [/  ? superset of or equal to]
+[template oplus[]'''⊕'''] [/  ? circled plus = direct sum]
+[template otimes[]'''⊗'''] [/  ? circled times = vector product]
+[template perp[]'''⊥'''] [/  ? up tack = orthogonal to = perpendicular]
+[template sdot[]'''⋅'''] [/  � dot operator]
+[template lceil[]'''⌈'''] [/  ? left ceiling = APL upstile]
+[template rceil[]'''⌉'''] [/  ? right ceiling]
+[template lfloor[]'''⌊'''] [/  ? left floor = APL downstile]
+[template rfloor[]'''⌋'''] [/  ? 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]
+
+
+[/ 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 ]
+
+
+

+ 209 - 0
doc/test/Jamfile.v2

@@ -0,0 +1,209 @@
+# Copyright John Maddock 2008. Use, modification, and distribution are
+# subject to 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)
+
+import os ;
+import common ;
+import doxygen ;
+using quickbook ;
+import modules ;
+
+path-constant images_location : html ;
+
+#
+# Accumulators docs are dependent upon
+# latex dvips and ps being in your PATH.
+# This is true for most Unix installs, but
+# not on Win32, where you will need to install
+# MkTex and Ghostscript and add these tools
+# to your path.
+#
+make latex.check : : @check-latex ;
+actions check-latex
+{
+    latex -version > latex.version
+}
+
+make dvips.check : : @check-dvips ;
+actions check-dvips
+{
+    dvips -version > dvips.version
+}
+
+make gs.check : : @check-gs ;
+
+import os ;
+
+if [ os.name ] = "NT"
+{
+   actions check-gs
+   {
+       gswin32c -version > gs.version
+   }
+}
+else
+{
+   actions check-gs
+   {
+       gs -version > gs.version
+   }
+}
+
+
+# Use Doxygen to emit a tagfile with the definition of depends_on<>. That
+# tagfile will be used by Doxygen below when generating the Statistics Library
+# Reference. This is all so that the Doxygen-generated documentation for the
+# features shows the dependency relationships between them.
+doxygen tagfile
+    :
+        ../../boost/accumulators/framework/depends_on.hpp
+        ../../boost/accumulators/framework/extractor.hpp
+    :
+        <doxygen:param>MACRO_EXPANSION=YES
+        <doxygen:param>EXPAND_ONLY_PREDEF=YES
+        <doxygen:param>GENERATE_TAGFILE=accumulators.tag
+        <doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
+                                   \"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
+                                   \"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
+        <dependency>latex.check
+        <dependency>dvips.check
+        <dependency>gs.check
+    ;
+
+# Generate the HTML form of the stats documentation, as this causes Doxygen to
+# generate .png images for the LaTeX formulas embedded in the doc comments.
+doxygen statsdoc.html
+    :
+        weighted_tail_quantile.hpp
+    :
+        <dependency>latex.check
+        <dependency>dvips.check
+        <dependency>gs.check
+    ;
+
+if [ os.name ] = NT
+{
+    CP = copy /y ;
+    MKDIR = mkdir ;
+    FROM = \\..\\..\\..\\html\\statsdoc\\*.png ;
+    TOHTML = .\\html\\images\\accumulators ;
+    TOPDF = \\images\\accumulators ;
+}
+else
+{
+    CP = cp ;
+    MKDIR = mkdir -p ;
+    FROM = /../../html/statsdoc/*.png ;
+    TOHTML = ./html/images/accumulators ;
+    TOPDF = /images/accumulators ;
+}
+
+actions copy-latex-pngs
+{
+    $(MKDIR) $(TOHTML)
+    $(MKDIR) $(<:D)$(TOPDF)
+    $(CP) $(<:D)$(FROM) $(TOHTML)
+    $(CP) $(<:D)$(FROM) $(<:D)$(TOPDF)
+    echo "Stamped" > "$(<)"
+}
+
+# This causes the png files built above to be copied into the
+# html/images/accumulators directory.
+make statsdoclatex.tag
+    : statsdoc.html
+    : @copy-latex-pngs
+    ;
+
+doxygen statsdoc
+    :
+        weighted_tail_quantile.hpp
+    :
+        <doxygen:param>EXTRACT_ALL=YES
+        <doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
+                                   \"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
+                                   \"BOOST_PP_REPEAT(a,b,c)=\" \\
+                                   \"BOOST_PARAMETER_KEYWORD(a,b)=\\
+                                         namespace a { struct b {}; } \\
+                                         boost::parameter::keyword<a::b> const b;\" \\
+                                   \"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
+        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
+        <doxygen:param>EXTRACT_PRIVATE=NO
+        <doxygen:param>ENABLE_PREPROCESSING=YES
+        <doxygen:param>MACRO_EXPANSION=YES
+        <doxygen:param>EXPAND_ONLY_PREDEF=YES
+        <doxygen:param>SEARCH_INCLUDES=NO
+        <doxygen:param>TAGFILES=accumulators.tag
+        <xsl:param>boost.doxygen.formuladir=images/accumulators/
+        <reftitle>"Statistics Library Reference"
+        <dependency>tagfile
+        <dependency>statsdoclatex.tag
+        <dependency>latex.check
+        <dependency>dvips.check
+        <dependency>gs.check
+    ;
+
+if htmlhelp in [ modules.peek : ARGV ]
+{
+	#
+	# Start with a rule to convert htmlhelp project into
+	# compiled help file:
+	#
+	make htmlhelp/htmlhelp.chm : standalone : @hhc ;
+	actions ignore hhc
+	{
+		hhc htmlhelp/htmlhelp.hhp
+	}
+	#
+	# These install rules copy our images into a subdirectory of the created
+	# htmlhelp project directory: unfortunately hhc.exe will only embed
+	# images in a subdirectory of the project root.
+	#
+	install htmlhelp1 : [ glob html/images/*.png ] : <location>htmlhelp/images ;
+	install htmlhelp1a : [ glob html/images/*.svg ] : <location>htmlhelp/images ;
+	install htmlhelp2 : [ glob html/images/accumulators/*.png ] : <dependency>statsdoc <location>htmlhelp/images/accumulators ;
+	install htmlhelp3 : [ glob ../src/images/*.png ] : <dependency>statsdoc <location>htmlhelp/images ;
+	install htmlhelp4 : [ glob ../src/images/callouts/*.png ] : <dependency>statsdoc <location>htmlhelp/images/callouts ;
+}
+
+xml test : test.qbk ;
+boostbook standalone
+    :
+        test
+    :
+        <dependency>statsdoc
+        <format>htmlhelp:<dependency>htmlhelp1
+        <format>htmlhelp:<dependency>htmlhelp1a
+        <format>htmlhelp:<dependency>htmlhelp2
+        <format>htmlhelp:<dependency>htmlhelp3
+        <format>htmlhelp:<dependency>htmlhelp4
+
+        # HTML options first:
+        #======================================================================
+
+        <xsl:param>toc.max.depth=2
+        <xsl:param>toc.section.depth=2
+        <xsl:param>chunk.section.depth=1
+        <xsl:param>boost.root=../../..
+        <format>html:<xsl:param>callout.graphics.path=../../src/images/callouts/
+        <xsl:param>boost.libraries=../../../libs/libraries.htm
+        <xsl:param>navig.graphics=1
+        <xsl:param>html.stylesheet=../../../doc/html/boostbook.css
+
+
+        # PDF Options:
+        #======================================================================
+        <format>pdf:<xsl:param>img.src.path=$(images_location)/
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/test/html
+
+        # HTML Help Options:
+        #======================================================================
+        #<format>htmlhelp:<xsl:param>img.src.path=../html
+        <format>htmlhelp:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/test/html
+        <format>htmlhelp:<xsl:param>htmlhelp.chm=test.chm
+    ;
+
+
+install pdf-install : standalone : <location>. <install-type>PDF ;
+
+
+

+ 64 - 0
doc/test/array.xml

@@ -0,0 +1,64 @@
+<section id="array.intro">
+    <title>Introduction</title> 
+
+    <using-namespace name="boost"/>
+    <using-class name="array"/>
+
+    <para>The C++ Standard Template Library STL as part of the C++
+    Standard Library provides a framework for processing algorithms on
+    different kind of containers. However, ordinary arrays don't
+    provide the interface of STL containers (although, they provide
+    the iterator interface of STL containers).</para>
+
+    <para>As replacement for ordinary arrays, the STL provides class
+    <code><classname>std::vector</classname></code>.  However,
+    <code><classname>std::vector&lt;&gt;</classname></code> provides
+    the semantics of dynamic arrays. Thus, it manages data to be able
+    to change the number of elements. This results in some overhead in
+    case only arrays with static size are needed.</para>
+
+    <para>In his book, <emphasis>Generic Programming and the
+    STL</emphasis>, Matthew H. Austern introduces a useful wrapper
+    class for ordinary arrays with static size, called
+    <code>block</code>.  It is safer and has no worse performance than
+    ordinary arrays. In <emphasis>The C++ Programming
+    Language</emphasis>, 3rd edition, Bjarne Stroustrup introduces a
+    similar class, called <code>c_array</code>, which I (<ulink
+    url="http://www.josuttis.com">Nicolai Josuttis</ulink>) present
+    slightly modified in my book <emphasis>The C++ Standard Library -
+    A Tutorial and Reference</emphasis>, called
+    <code>carray</code>. This is the essence of these approaches
+    spiced with many feedback from <ulink
+    url="http://www.boost.org">boost</ulink>.</para>
+
+    <para>After considering different names, we decided to name this
+    class simply <code><classname>array</classname></code>.</para>
+
+    <para>Note that this class is suggested to be part of the next
+    Technical Report, which will extend the C++ Standard (see
+    <ulink url="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm">http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm</ulink>).</para>
+
+    <para>Class <code><classname>array</classname></code> fulfills most
+    but not all of the requirements of "reversible containers" (see
+    Section 23.1, [lib.container.requirements] of the C++
+    Standard). The reasons array is not an reversible STL container is
+    because:
+      <itemizedlist spacing="compact">
+        <listitem><simpara>No constructors are provided.</simpara></listitem>
+        <listitem><simpara>Elements may have an undetermined initial value (see <xref linkend="array.rationale"/>).</simpara></listitem>
+        <listitem><simpara><functionname>swap</functionname>() has no constant complexity.</simpara></listitem>
+        <listitem><simpara><methodname>size</methodname>() is always constant, based on the second template argument of the type.</simpara></listitem>
+        <listitem><simpara>The container provides no allocator support.</simpara></listitem>
+      </itemizedlist>
+    </para>
+
+    <para>It doesn't fulfill the requirements of a "sequence" (see Section 23.1.1, [lib.sequence.reqmts] of the C++ Standard), except that:
+      <itemizedlist spacing="compact">
+        <listitem><simpara><methodname>front</methodname>() and <methodname>back</methodname>() are provided.</simpara></listitem>
+        <listitem><simpara><methodname>operator[]</methodname> and <methodname>at</methodname>() are provided.</simpara></listitem>
+      </itemizedlist>
+    </para>
+  </section>
+  
+
+

+ 543 - 0
doc/test/array1.xml

@@ -0,0 +1,543 @@
+<library-reference>
+   <header name="boost/array.hpp">
+      <namespace name="boost">
+         <class name="array">
+            <template>
+               <template-type-parameter name="T"/>
+               <template-nontype-parameter name="N">
+                  <type>std::size_t</type>
+               </template-nontype-parameter>
+            </template>
+
+            <purpose>
+               <para>STL compliant container wrapper for arrays of constant size</para>
+            </purpose>
+            <typedef name="value_type">
+               <type>T</type>
+            </typedef>
+            <typedef name="iterator">
+               <type>T*</type>
+            </typedef>
+            <typedef name="const_iterator">
+               <type>const T*</type>
+            </typedef>
+            <typedef name="reverse_iterator">
+               <type>
+                  <classname>std::reverse_iterator</classname>&lt;iterator&gt;
+               </type>
+            </typedef>
+            <typedef name="const_reverse_iterator">
+               <type>
+                  <classname>std::reverse_iterator</classname>&lt;const_iterator&gt;
+               </type>
+            </typedef>
+            <typedef name="reference">
+               <type>T&amp;</type>
+            </typedef>
+            <typedef name="const_reference">
+               <type>const T&amp;</type>
+            </typedef>
+            <typedef name="size_type">
+               <type>std::size_t</type>
+            </typedef>
+            <typedef name="difference_type">
+               <type>std::ptrdiff_t</type>
+            </typedef>
+
+            <static-constant name="static_size">
+               <type>size_type</type>
+               <default>N</default>
+            </static-constant>
+
+            <copy-assignment>
+               <template>
+                  <template-type-parameter name="U"/>
+               </template>
+               <parameter name="other">
+                  <paramtype>
+                     const <classname>array</classname>&lt;U, N&gt;&amp;
+                  </paramtype>
+               </parameter>
+               <effects>
+                  <simpara>
+                     <code>
+                        std::copy(rhs.<methodname>begin</methodname>(),rhs.<methodname>end</methodname>(), <methodname>begin</methodname>())
+                     </code>
+                  </simpara>
+               </effects>
+            </copy-assignment>
+
+            <method-group name="iterator support">
+               <overloaded-method name="begin">
+                  <signature>
+                     <type>iterator</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_iterator</type>
+                  </signature>
+
+                  <returns>
+                     <simpara>iterator for the first element</simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </overloaded-method>
+
+               <overloaded-method name="end">
+                  <signature>
+                     <type>iterator</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_iterator</type>
+                  </signature>
+
+                  <returns>
+                     <simpara>iterator for position after the last element</simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </overloaded-method>
+            </method-group>
+
+            <method-group name="reverse iterator support">
+               <overloaded-method name="rbegin">
+                  <signature>
+                     <type>reverse_iterator</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_reverse_iterator</type>
+                  </signature>
+
+                  <returns>
+                     <simpara>reverse iterator for the first element of reverse iteration</simpara>
+                  </returns>
+               </overloaded-method>
+
+               <overloaded-method name="rend">
+                  <signature>
+                     <type>reverse_iterator</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_reverse_iterator</type>
+                  </signature>
+
+                  <returns>
+                     <simpara>reverse iterator for position after the last element in reverse iteration</simpara>
+                  </returns>
+               </overloaded-method>
+            </method-group>
+
+            <method-group name="capacity">
+               <method name="size">
+                  <type>size_type</type>
+                  <returns>
+                     <simpara>
+                        <code>N</code>
+                     </simpara>
+                  </returns>
+               </method>
+               <method name="empty">
+                  <type>bool</type>
+                  <returns>
+                     <simpara>
+                        <code>N==0</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </method>
+               <method name="max_size">
+                  <type>size_type</type>
+                  <returns>
+                     <simpara>
+                        <code>N</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </method>
+            </method-group>
+
+            <method-group name="element access">
+               <overloaded-method name="operator[]">
+                  <signature>
+                     <type>reference</type>
+                     <parameter name="i">
+                        <paramtype>size_type</paramtype>
+                     </parameter>
+                  </signature>
+
+                  <signature cv="const">
+                     <type>const_reference</type>
+                     <parameter name="i">
+                        <paramtype>size_type</paramtype>
+                     </parameter>
+                  </signature>
+
+                  <requires>
+                     <simpara>
+                        <code>i &lt; N</code>
+                     </simpara>
+                  </requires>
+                  <returns>
+                     <simpara>
+                        element with index <code>i</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw.</simpara>
+                  </throws>
+               </overloaded-method>
+
+               <overloaded-method name="at">
+                  <signature>
+                     <type>reference</type>
+                     <parameter name="i">
+                        <paramtype>size_type</paramtype>
+                     </parameter>
+                  </signature>
+
+                  <signature cv="const">
+                     <type>const_reference</type>
+                     <parameter name="i">
+                        <paramtype>size_type</paramtype>
+                     </parameter>
+                  </signature>
+
+                  <returns>
+                     <simpara>
+                        element with index <code>i</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>
+                        <code>
+                           <classname>std::range_error</classname>
+                        </code> if <code>i &gt;= N</code>
+                     </simpara>
+                  </throws>
+               </overloaded-method>
+
+               <overloaded-method name="front">
+                  <signature>
+                     <type>reference</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_reference</type>
+                  </signature>
+                  <requires>
+                     <simpara>
+                        <code>N &gt; 0</code>
+                     </simpara>
+                  </requires>
+                  <returns>
+                     <simpara>the first element</simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </overloaded-method>
+
+               <overloaded-method name="back">
+                  <signature>
+                     <type>reference</type>
+                  </signature>
+                  <signature cv="const">
+                     <type>const_reference</type>
+                  </signature>
+                  <requires>
+                     <simpara>
+                        <code>N &gt; 0</code>
+                     </simpara>
+                  </requires>
+                  <returns>
+                     <simpara>the last element</simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </overloaded-method>
+
+               <method name="data" cv="const">
+                  <type>const T*</type>
+                  <returns>
+                     <simpara>
+                        <code>elems</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </method>
+
+               <method name="c_array">
+                  <type>T*</type>
+                  <returns>
+                     <simpara>
+                        <code>elems</code>
+                     </simpara>
+                  </returns>
+                  <throws>
+                     <simpara>will not throw</simpara>
+                  </throws>
+               </method>
+            </method-group>
+
+            <method-group name="modifiers">
+               <method name="swap">
+                  <type>void</type>
+                  <parameter name="other">
+                     <paramtype>
+                        <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <effects>
+                     <simpara>
+                        <code>
+                           std::swap_ranges(<methodname>begin</methodname>(), <methodname>end</methodname>(), other.<methodname>begin</methodname>())
+                        </code>
+                     </simpara>
+                  </effects>
+                  <complexity>
+                     <simpara>
+                        linear in <code>N</code>
+                     </simpara>
+                  </complexity>
+               </method>
+               <method name="assign">
+                  <type>void</type>
+                  <parameter name="value">
+                     <paramtype>const T&amp;</paramtype>
+                  </parameter>
+                  <effects>
+                     <simpara>
+                        <code>
+                           std::fill_n(<methodname>begin</methodname>(), N, value)
+                        </code>
+                     </simpara>
+                  </effects>
+               </method>
+            </method-group>
+
+            <data-member name="elems[N]">
+               <!-- HACK -->
+               <type>T</type>
+            </data-member>
+
+            <free-function-group name="specialized algorithms">
+               <function name="swap">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>void</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <effects>
+                     <simpara>
+                        <code>
+                           x.<methodname>swap</methodname>(y)
+                        </code>
+                     </simpara>
+                  </effects>
+                  <throws>
+                     <simpara>will not throw.</simpara>
+                  </throws>
+               </function>
+            </free-function-group>
+
+            <free-function-group name="comparisons">
+               <function name="operator==">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>
+                           std::equal(x.<methodname>begin</methodname>(), x.<methodname>end</methodname>(), y.<methodname>begin</methodname>())
+                        </code>
+                     </simpara>
+                  </returns>
+               </function>
+
+               <function name="operator!=">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>!(x == y)</code>
+                     </simpara>
+                  </returns>
+               </function>
+
+               <function name="operator&lt;">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>
+                           std::lexicographical_compare(x.<methodname>begin</methodname>(), x.<methodname>end</methodname>(), y.<methodname>begin</methodname>(), y.<methodname>end</methodname>())
+                        </code>
+                     </simpara>
+                  </returns>
+               </function>
+
+               <function name="operator&gt;">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>y &lt; x</code>
+                     </simpara>
+                  </returns>
+               </function>
+
+               <function name="operator&lt;=">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>!(y &lt; x)</code>
+                     </simpara>
+                  </returns>
+               </function>
+
+               <function name="operator&gt;=">
+                  <template>
+                     <template-type-parameter name="T"/>
+                     <template-nontype-parameter name="N">
+                        <type>std::size_t</type>
+                     </template-nontype-parameter>
+                  </template>
+
+                  <type>bool</type>
+
+                  <parameter name="x">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+                  <parameter name="y">
+                     <paramtype>
+                        const <classname>array</classname>&lt;T, N&gt;&amp;
+                     </paramtype>
+                  </parameter>
+
+                  <returns>
+                     <simpara>
+                        <code>!(x &lt; y)</code>
+                     </simpara>
+                  </returns>
+               </function>
+            </free-function-group>
+         </class>
+      </namespace>
+   </header>
+</library-reference>
+

+ 82 - 0
doc/test/array2.xml

@@ -0,0 +1,82 @@
+<section id="array.rationale">
+   <title>Design Rationale</title>
+
+   <para>
+      There was an important design tradeoff regarding the
+      constructors: We could implement array as an "aggregate" (see
+      Section 8.5.1, [dcl.init.aggr], of the C++ Standard). This would
+      mean:
+      <itemizedlist>
+         <listitem>
+            <simpara>
+               An array can be initialized with a
+               brace-enclosing, comma-separated list of initializers for the
+               elements of the container, written in increasing subscript
+               order:
+            </simpara>
+
+            <programlisting>
+               <classname>boost::array</classname>&lt;int,4&gt; a = { { 1, 2, 3 } };
+            </programlisting>
+
+            <simpara>
+               Note that if there are fewer elements in the
+               initializer list, then each remaining element gets
+               default-initialized (thus, it has a defined value).
+            </simpara>
+         </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>
+      However, this approach has its drawbacks: <emphasis
+  role="bold">
+         passing no initializer list means that the elements
+         have an indetermined initial value
+      </emphasis>, because the rule says
+      that aggregates may have:
+      <itemizedlist>
+         <listitem>
+            <simpara>No user-declared constructors.</simpara>
+         </listitem>
+         <listitem>
+            <simpara>No private or protected non-static data members.</simpara>
+         </listitem>
+         <listitem>
+            <simpara>No base classes.</simpara>
+         </listitem>
+         <listitem>
+            <simpara>No virtual functions.</simpara>
+         </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>Nevertheless, The current implementation uses this approach.</para>
+
+   <para>
+      Note that for standard conforming compilers it is possible to
+      use fewer braces (according to 8.5.1 (11) of the Standard). That is,
+      you can initialize an array as follows:
+   </para>
+
+   <programlisting>
+      <classname>boost::array</classname>&lt;int,4&gt; a = { 1, 2, 3 };
+   </programlisting>
+
+   <para>
+      I'd appreciate any constructive feedback. <emphasis
+  role="bold">
+         Please note: I don't have time to read all boost
+         mails. Thus, to make sure that feedback arrives to me, please send
+         me a copy of each mail regarding this class.
+      </emphasis>
+   </para>
+
+   <para>
+      The code is provided "as is" without expressed or implied
+      warranty.
+   </para>
+
+</section>
+
+

+ 22 - 0
doc/test/array3.xml

@@ -0,0 +1,22 @@
+<section id="array.more.info">
+   <title>For more information...</title>
+   <para>
+      To find more details about using ordinary arrays in C++ and
+      the framework of the STL, see e.g.
+
+      <literallayout>
+         The C++ Standard Library - A Tutorial and Reference
+         by Nicolai M. Josuttis
+         Addison Wesley Longman, 1999
+         ISBN 0-201-37926-0
+      </literallayout>
+   </para>
+
+   <para>
+      <ulink url="http://www.josuttis.com/">
+         Home Page of Nicolai
+         Josuttis
+      </ulink>
+   </para>
+</section>
+

+ 5 - 0
doc/test/array4.xml

@@ -0,0 +1,5 @@
+<section id="array.ack">
+   <title>Acknowledgements</title>
+
+   <para>Doug Gregor ported the documentation to the BoostBook format.</para>
+</section>

+ 50 - 0
doc/test/gold/boost/accumulators/extract/weighted_tail_quantile.html

@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Global weighted_tail_quantile</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../../../index.html" title="Document To Test Formatting">
+<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">
+<link rel="prev" href="../../../document_to_test_formatting/accumulators.html" title="Accumulators Example Doxygen Documentation">
+<link rel="next" href="../impl/weighted_tail_quantile__id226526.html" title="Struct template weighted_tail_quantile_impl">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../document_to_test_formatting/accumulators.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../impl/weighted_tail_quantile__id226526.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.accumulators.extract.weighted_tail_quantile"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Global weighted_tail_quantile</span></h2>
+<p>boost::accumulators::extract::weighted_tail_quantile</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="emphasis"><em>// In header: &lt;<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">boost/trunk/doc/test/weighted_tail_quantile.hpp</a>&gt;
+
+</em></span>extractor&lt; tag::quantile &gt; const weighted_tail_quantile;</pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../document_to_test_formatting/accumulators.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../impl/weighted_tail_quantile__id226526.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 91 - 0
doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id226526.html

@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template weighted_tail_quantile_impl</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../../../index.html" title="Document To Test Formatting">
+<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">
+<link rel="prev" href="../extract/weighted_tail_quantile.html" title="Global weighted_tail_quantile">
+<link rel="next" href="../tag/weighted_tail_quantile.html" title="Struct template weighted_tail_quantile">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../extract/weighted_tail_quantile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../tag/weighted_tail_quantile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.accumulators.impl.weighted_tail_quantile__id226526"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template weighted_tail_quantile_impl</span></h2>
+<p>boost::accumulators::impl::weighted_tail_quantile_impl &#8212; Tail quantile estimation based on order statistics of weighted samples (for both left and right tails). </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="emphasis"><em>// In header: &lt;<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">boost/trunk/doc/test/weighted_tail_quantile.hpp</a>&gt;
+
+</em></span><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Sample, <span class="bold"><strong>typename</strong></span> Weight, <span class="bold"><strong>typename</strong></span> LeftRight&gt; 
+<span class="bold"><strong>struct</strong></span> <a class="link" href="weighted_tail_quantile__id226526.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a> {
+  <span class="emphasis"><em>// types</em></span>
+  <span class="bold"><strong>typedef</strong></span> numeric::functional::average&lt; Weight, std::size_t &gt;::result_type <a name="boost.accumulators.impl.weighted_tail_quantile__id226526.float_type"></a>float_type; 
+  <span class="bold"><strong>typedef</strong></span> Sample                                                           <a name="boost.accumulators.impl.weighted_tail_quantile__id226526.result_type"></a>result_type;
+
+  <span class="emphasis"><em>// <a class="link" href="weighted_tail_quantile__id226526.html#boost.accumulators.impl.weighted_tail_quantile__id226526construct-copy-destruct">construct/copy/destruct</a></em></span>
+  <a class="link" href="weighted_tail_quantile__id226526.html#id226362-bb">weighted_tail_quantile_impl</a>(dont_care);
+
+  <span class="emphasis"><em>// <a class="link" href="weighted_tail_quantile__id226526.html#id226739-bb">public member functions</a></em></span>
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Args&gt; <span class="type">result_type</span> <a class="link" href="weighted_tail_quantile__id226526.html#id226647-bb">result</a>(Args <span class="bold"><strong>const</strong></span> &amp;) <span class="bold"><strong>const</strong></span>;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id545120"></a><h2>Description</h2>
+<p>An estimator <span class="inlinemediaobject"><img src="../../../images/accumulators/form_0.png"></span> of tail quantiles with level <span class="inlinemediaobject"><img src="../../../images/accumulators/form_1.png"></span> based on order statistics <span class="inlinemediaobject"><img src="../../../images/accumulators/form_2.png"></span> of weighted samples are given by <span class="inlinemediaobject"><img src="../../../images/accumulators/form_3.png"></span> (left tail) and <span class="inlinemediaobject"><img src="../../../images/accumulators/form_4.png"></span> (right tail), where</p>
+<div class="equation">
+<a name="id545243"></a><p class="title"><b>Equation 1. </b></p>
+<div class="equation-contents"><div class="mediaobject" align="center"><img src="../../../images/accumulators/form_5.png" align="middle"></div></div>
+</div>
+<p><br class="equation-break"></p>
+<p>and</p>
+<div class="equation">
+<a name="id545273"></a><p class="title"><b>Equation 2. </b></p>
+<div class="equation-contents"><div class="mediaobject" align="center"><img src="../../../images/accumulators/form_6.png" align="middle"></div></div>
+</div>
+<p><br class="equation-break"></p>
+<p><span class="inlinemediaobject"><img src="../../../images/accumulators/form_7.png"></span> being the number of samples and <span class="inlinemediaobject"><img src="../../../images/accumulators/form_8.png"></span> the sum of all weights.</p>
+<p>
+</p>
+<div class="refsect2" lang="en">
+<a name="id545349"></a><h3>
+<a name="boost.accumulators.impl.weighted_tail_quantile__id226526construct-copy-destruct"></a><code class="computeroutput">weighted_tail_quantile_impl</code> 
+        public
+       construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id226362-bb"></a>weighted_tail_quantile_impl(dont_care);</pre></li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id545388"></a><h3>
+<a name="id226739-bb"></a><code class="computeroutput">weighted_tail_quantile_impl</code> public member functions</h3>
+<div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Args&gt; <span class="type">result_type</span> <a name="id226647-bb"></a>result(Args <span class="bold"><strong>const</strong></span> &amp; args) <span class="bold"><strong>const</strong></span>;</pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../extract/weighted_tail_quantile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../tag/weighted_tail_quantile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 52 - 0
doc/test/gold/boost/accumulators/tag/weighted_tail_quantile.html

@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struct template weighted_tail_quantile</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../../../index.html" title="Document To Test Formatting">
+<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">
+<link rel="prev" href="../impl/weighted_tail_quantile__id226526.html" title="Struct template weighted_tail_quantile_impl">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../impl/weighted_tail_quantile__id226526.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.accumulators.tag.weighted_tail_quantile"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template weighted_tail_quantile</span></h2>
+<p>boost::accumulators::tag::weighted_tail_quantile</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="emphasis"><em>// In header: &lt;<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp" title="Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;">boost/trunk/doc/test/weighted_tail_quantile.hpp</a>&gt;
+
+</em></span><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> LeftRight&gt; 
+<span class="bold"><strong>struct</strong></span> <a class="link" href="weighted_tail_quantile.html" title="Struct template weighted_tail_quantile">weighted_tail_quantile</a> : <span class="bold"><strong>public</strong></span> boost::accumulators::depends_on&lt; sum_of_weights, tail_weights&lt; LeftRight &gt; &gt;
+{
+};</pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../impl/weighted_tail_quantile__id226526.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

+ 641 - 0
doc/test/gold/boost/array.html

@@ -0,0 +1,641 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Class template array</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../document_to_test_formatting/array.html#header.boost.array_hpp" title="Header &lt;boost/array.hpp&gt;">
+<link rel="prev" href="../document_to_test_formatting/array.html" title="Array Example Boostbook XML Documentation">
+<link rel="next" href="../document_to_test_formatting/accumulators.html" title="Accumulators Example Doxygen Documentation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../document_to_test_formatting/array.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../document_to_test_formatting/array.html#header.boost.array_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../document_to_test_formatting/accumulators.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.array"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class template array</span></h2>
+<p>boost::array &#8212; STL compliant container wrapper for arrays of constant size</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="emphasis"><em>// In header: &lt;<a class="link" href="../document_to_test_formatting/array.html#header.boost.array_hpp" title="Header &lt;boost/array.hpp&gt;">boost/array.hpp</a>&gt;
+
+</em></span><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+<span class="bold"><strong>class</strong></span> <a class="link" href="array.html" title="Class template array">array</a> {
+<span class="bold"><strong>public</strong></span>:
+  <span class="emphasis"><em>// types</em></span>
+  <span class="bold"><strong>typedef</strong></span> T                                                                        <a name="boost.array.value_type"></a>value_type;            
+  <span class="bold"><strong>typedef</strong></span> T*                                                                       <a name="boost.array.iterator"></a>iterator;              
+  <span class="bold"><strong>typedef</strong></span> <span class="bold"><strong>const</strong></span> T*                                                                 <a name="boost.array.const_iterator"></a>const_iterator;        
+  <span class="bold"><strong>typedef</strong></span> 
+                  std::reverse_iterator&lt;iterator&gt;
+                      <a name="boost.array.reverse_iterator"></a>reverse_iterator;      
+  <span class="bold"><strong>typedef</strong></span> 
+                  std::reverse_iterator&lt;const_iterator&gt;
+                <a name="boost.array.const_reverse_iterator"></a>const_reverse_iterator;
+  <span class="bold"><strong>typedef</strong></span> T&amp;                                                                       <a name="boost.array.reference"></a>reference;             
+  <span class="bold"><strong>typedef</strong></span> <span class="bold"><strong>const</strong></span> T&amp;                                                                 <a name="boost.array.const_reference"></a>const_reference;       
+  <span class="bold"><strong>typedef</strong></span> std::size_t                                                              <a name="boost.array.size_type"></a>size_type;             
+  <span class="bold"><strong>typedef</strong></span> std::ptrdiff_t                                                           <a name="boost.array.difference_type"></a>difference_type;       
+
+  <span class="emphasis"><em>// static constants</em></span>
+  <span class="bold"><strong>static</strong></span> <span class="bold"><strong>const</strong></span> <span class="type">size_type</span> static_size = N;
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#boost.arrayconstruct-copy-destruct">construct/copy/destruct</a></em></span>
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> U&gt; 
+    array&amp; <a class="link" href="array.html#id225116-bb"><span class="bold"><strong>operator</strong></span>=</a>(
+                     <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;U, N&gt;&amp;
+                  );
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#id225163-bb">iterator support</a></em></span>
+  <span class="type">iterator</span> <a class="link" href="array.html#id225172-bb">begin</a>();
+  <span class="type">const_iterator</span> <a class="link" href="array.html#id225179-bb">begin</a>() <span class="bold"><strong>const</strong></span>;
+  <span class="type">iterator</span> <a class="link" href="array.html#id225209-bb">end</a>();
+  <span class="type">const_iterator</span> <a class="link" href="array.html#id185009-bb">end</a>() <span class="bold"><strong>const</strong></span>;
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#id185036-bb">reverse iterator support</a></em></span>
+  <span class="type">reverse_iterator</span> <a class="link" href="array.html#id185046-bb">rbegin</a>();
+  <span class="type">const_reverse_iterator</span> <a class="link" href="array.html#id185053-bb">rbegin</a>() <span class="bold"><strong>const</strong></span>;
+  <span class="type">reverse_iterator</span> <a class="link" href="array.html#id185076-bb">rend</a>();
+  <span class="type">const_reverse_iterator</span> <a class="link" href="array.html#id185084-bb">rend</a>() <span class="bold"><strong>const</strong></span>;
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#id185103-bb">capacity</a></em></span>
+  <span class="type">size_type</span> <a class="link" href="array.html#id185107-bb">size</a>();
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#id185128-bb">empty</a>();
+  <span class="type">size_type</span> <a class="link" href="array.html#id185156-bb">max_size</a>();
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#id155125-bb">element access</a></em></span>
+  <span class="type">reference</span> <a class="link" href="array.html#id155134-bb"><span class="bold"><strong>operator</strong></span>[]</a>(size_type);
+  <span class="type">const_reference</span> <a class="link" href="array.html#id155151-bb"><span class="bold"><strong>operator</strong></span>[]</a>(size_type) <span class="bold"><strong>const</strong></span>;
+  <span class="type">reference</span> <a class="link" href="array.html#id155207-bb">at</a>(size_type);
+  <span class="type">const_reference</span> <a class="link" href="array.html#id155224-bb">at</a>(size_type) <span class="bold"><strong>const</strong></span>;
+  <span class="type">reference</span> <a class="link" href="array.html#id155281-bb">front</a>();
+  <span class="type">const_reference</span> <a class="link" href="array.html#id155288-bb">front</a>() <span class="bold"><strong>const</strong></span>;
+  <span class="type">reference</span> <a class="link" href="array.html#id155329-bb">back</a>();
+  <span class="type">const_reference</span> <a class="link" href="array.html#id155336-bb">back</a>() <span class="bold"><strong>const</strong></span>;
+  <span class="type"><span class="bold"><strong>const</strong></span> T*</span> <a class="link" href="array.html#id155372-bb">data</a>() <span class="bold"><strong>const</strong></span>;
+  <span class="type">T*</span> <a class="link" href="array.html#id227218-bb">c_array</a>();
+
+  <span class="emphasis"><em>// <a class="link" href="array.html#id227247-bb">modifiers</a></em></span>
+  <span class="type"><span class="bold"><strong>void</strong></span></span> <a class="link" href="array.html#id227252-bb">swap</a>(
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="type"><span class="bold"><strong>void</strong></span></span> <a class="link" href="array.html#id227310-bb">assign</a>(<span class="bold"><strong>const</strong></span> T&amp;);
+  <span class="type">T</span> elems[N];
+};
+
+<span class="emphasis"><em>// <a class="link" href="array.html#id227358-bb">specialized algorithms</a></em></span>
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>void</strong></span></span> <a class="link" href="array.html#boost.swap">swap</a>(
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+            
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+
+<span class="emphasis"><em>// <a class="link" href="array.html#id227444-bb">comparisons</a></em></span>
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator=="><span class="bold"><strong>operator</strong></span>==</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator!="><span class="bold"><strong>operator</strong></span>!=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator_id227596"><span class="bold"><strong>operator</strong></span>&lt;</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                 
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator_id227679"><span class="bold"><strong>operator</strong></span>&gt;</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                 
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator_=_id227747"><span class="bold"><strong>operator</strong></span>&lt;=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+<span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="array.html#boost.operator_=_id227814"><span class="bold"><strong>operator</strong></span>&gt;=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );</pre></div>
+<div class="refsect1" lang="en">
+<a name="id542541"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id542545"></a><h3>
+<a name="boost.arrayconstruct-copy-destruct"></a><code class="computeroutput">array</code> 
+        public
+       construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> U&gt; 
+  array&amp; <a name="id225116-bb"></a><span class="bold"><strong>operator</strong></span>=(
+                     <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;U, N&gt;&amp;
+                   other);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>
+                     <code class="computeroutput">
+                        std::copy(rhs.<a class="link" href="array.html#id225167-bb">begin</a>(),rhs.<a class="link" href="array.html#id225205-bb">end</a>(), <a class="link" href="array.html#id225167-bb">begin</a>())
+                     </code>
+                  </td>
+</tr></tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id542665"></a><h3>
+<a name="id225163-bb"></a><code class="computeroutput">array</code> iterator support</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><a name="id225167-bb"></a><span class="type">iterator</span> <a name="id225172-bb"></a>begin();
+<span class="type">const_iterator</span> <a name="id225179-bb"></a>begin() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>iterator for the first element</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id225205-bb"></a><span class="type">iterator</span> <a name="id225209-bb"></a>end();
+<span class="type">const_iterator</span> <a name="id185009-bb"></a>end() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>iterator for position after the last element</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id542810"></a><h3>
+<a name="id185036-bb"></a><code class="computeroutput">array</code> reverse iterator support</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><a name="id185041-bb"></a><span class="type">reverse_iterator</span> <a name="id185046-bb"></a>rbegin();
+<span class="type">const_reverse_iterator</span> <a name="id185053-bb"></a>rbegin() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>reverse iterator for the first element of reverse iteration</td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id185072-bb"></a><span class="type">reverse_iterator</span> <a name="id185076-bb"></a>rend();
+<span class="type">const_reverse_iterator</span> <a name="id185084-bb"></a>rend() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>reverse iterator for position after the last element in reverse iteration</td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id542942"></a><h3>
+<a name="id185103-bb"></a><code class="computeroutput">array</code> capacity</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><span class="type">size_type</span> <a name="id185107-bb"></a>size();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">N</code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="id185128-bb"></a>empty();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">N==0</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type">size_type</span> <a name="id185156-bb"></a>max_size();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">N</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id543096"></a><h3>
+<a name="id155125-bb"></a><code class="computeroutput">array</code> element access</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><a name="id155129-bb"></a><span class="type">reference</span> <a name="id155134-bb"></a><span class="bold"><strong>operator</strong></span>[](size_type i);
+<span class="type">const_reference</span> <a name="id155151-bb"></a><span class="bold"><strong>operator</strong></span>[](size_type i) <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td>
+                        <code class="computeroutput">i &lt; N</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        element with index <code class="computeroutput">i</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw.</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id155202-bb"></a><span class="type">reference</span> <a name="id155207-bb"></a>at(size_type i);
+<span class="type">const_reference</span> <a name="id155224-bb"></a>at(size_type i) <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        element with index <code class="computeroutput">i</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           std::range_error
+                        </code> if <code class="computeroutput">i &gt;= N</code>
+                     </td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id155276-bb"></a><span class="type">reference</span> <a name="id155281-bb"></a>front();
+<span class="type">const_reference</span> <a name="id155288-bb"></a>front() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td>
+                        <code class="computeroutput">N &gt; 0</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>the first element</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><a name="id155324-bb"></a><span class="type">reference</span> <a name="id155329-bb"></a>back();
+<span class="type">const_reference</span> <a name="id155336-bb"></a>back() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Requires:</span></p></td>
+<td>
+                        <code class="computeroutput">N &gt; 0</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>the last element</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>const</strong></span> T*</span> <a name="id155372-bb"></a>data() <span class="bold"><strong>const</strong></span>;</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">elems</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type">T*</span> <a name="id227218-bb"></a>c_array();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">elems</code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw</td>
+</tr>
+</tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id543547"></a><h3>
+<a name="id227247-bb"></a><code class="computeroutput">array</code> modifiers</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id227252-bb"></a>swap(
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      other);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           std::swap_ranges(<a class="link" href="array.html#id225167-bb">begin</a>(), <a class="link" href="array.html#id225205-bb">end</a>(), other.<a class="link" href="array.html#id225167-bb">begin</a>())
+                        </code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Complexity:</span></p></td>
+<td>
+                        linear in <code class="computeroutput">N</code>
+                     </td>
+</tr>
+</tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id227310-bb"></a>assign(<span class="bold"><strong>const</strong></span> T&amp; value);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           std::fill_n(<a class="link" href="array.html#id225167-bb">begin</a>(), N, value)
+                        </code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id543718"></a><h3>
+<a name="id227358-bb"></a><code class="computeroutput">array</code> specialized algorithms</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="boost.swap"></a>swap(
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+            
+                        <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           x.<a class="link" href="array.html#id227252-bb">swap</a>(y)
+                        </code>
+                     </td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>will not throw.</td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id543830"></a><h3>
+<a name="id227444-bb"></a><code class="computeroutput">array</code> comparisons</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator=="></a><span class="bold"><strong>operator</strong></span>==(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           std::equal(x.<a class="link" href="array.html#id225167-bb">begin</a>(), x.<a class="link" href="array.html#id225205-bb">end</a>(), y.<a class="link" href="array.html#id225167-bb">begin</a>())
+                        </code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator!="></a><span class="bold"><strong>operator</strong></span>!=(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">!(x == y)</code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator_id227596"></a><span class="bold"><strong>operator</strong></span>&lt;(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                 
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">
+                           std::lexicographical_compare(x.<a class="link" href="array.html#id225167-bb">begin</a>(), x.<a class="link" href="array.html#id225205-bb">end</a>(), y.<a class="link" href="array.html#id225167-bb">begin</a>(), y.<a class="link" href="array.html#id225205-bb">end</a>())
+                        </code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator_id227679"></a><span class="bold"><strong>operator</strong></span>&gt;(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                 
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">y &lt; x</code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator_=_id227747"></a><span class="bold"><strong>operator</strong></span>&lt;=(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">!(y &lt; x)</code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+<li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+  <span class="type"><span class="bold"><strong>bool</strong></span></span> <a name="boost.operator_=_id227814"></a><span class="bold"><strong>operator</strong></span>&gt;=(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      x, 
+                  
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                      y);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>
+                        <code class="computeroutput">!(x &lt; y)</code>
+                     </td>
+</tr></tbody>
+</table></div>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../document_to_test_formatting/array.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../document_to_test_formatting/array.html#header.boost.array_hpp"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../document_to_test_formatting/accumulators.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 69 - 0
doc/test/gold/document_to_test_formatting/accumulators.html

@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Accumulators Example Doxygen Documentation</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="../boost/array.html" title="Class template array">
+<link rel="next" href="../boost/accumulators/extract/weighted_tail_quantile.html" title="Global weighted_tail_quantile">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/array.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/accumulators/extract/weighted_tail_quantile.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.accumulators"></a><a class="link" href="accumulators.html" title="Accumulators Example Doxygen Documentation"> Accumulators
+    Example Doxygen Documentation</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="accumulators.html#statistics_library_reference">Statistics Library Reference</a></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="statistics_library_reference"></a>Statistics Library Reference</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="accumulators.html#header.boost.trunk.doc.test.weighted_tail_quantile_hpp">Header &lt;boost/trunk/doc/test/weighted_tail_quantile.hpp&gt;</a></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.trunk.doc.test.weighted_tail_quantile_hpp"></a>Header &lt;<a href="../../../../boost/trunk/doc/test/weighted_tail_quantile.hpp" target="_top">boost/trunk/doc/test/weighted_tail_quantile.hpp</a>&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+  <span class="bold"><strong>namespace</strong></span> accumulators {
+    <span class="bold"><strong>namespace</strong></span> extract {
+      extractor&lt; tag::quantile &gt; const <a class="link" href="../boost/accumulators/extract/weighted_tail_quantile.html" title="Global weighted_tail_quantile">weighted_tail_quantile</a>;
+    }
+    <span class="bold"><strong>namespace</strong></span> impl {
+      <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Sample, <span class="bold"><strong>typename</strong></span> Weight, <span class="bold"><strong>typename</strong></span> LeftRight&gt; 
+        <span class="bold"><strong>struct</strong></span> <a class="link" href="../boost/accumulators/impl/weighted_tail_quantile__id226526.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a>;
+    }
+    <span class="bold"><strong>namespace</strong></span> tag {
+      <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> LeftRight&gt; <span class="bold"><strong>struct</strong></span> <a class="link" href="../boost/accumulators/tag/weighted_tail_quantile.html" title="Struct template weighted_tail_quantile">weighted_tail_quantile</a>;
+    }
+  }
+}</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/array.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/accumulators/extract/weighted_tail_quantile.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 262 - 0
doc/test/gold/document_to_test_formatting/array.html

@@ -0,0 +1,262 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Array Example Boostbook XML Documentation</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="remez.html" title="Sample Article (The Remez Method)">
+<link rel="next" href="../boost/array.html" title="Class template array">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remez.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/array.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.array"></a><a class="link" href="array.html" title="Array Example Boostbook XML Documentation"> Array Example Boostbook
+    XML Documentation</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="array.html#array.intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="array.html#id540764">Reference</a></span></dt>
+<dt><span class="section"><a href="array.html#array.rationale">Design Rationale</a></span></dt>
+<dt><span class="section"><a href="array.html#array.more.info">For more information...</a></span></dt>
+<dt><span class="section"><a href="array.html#array.ack">Acknowledgements</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="array.intro"></a>Introduction</h3></div></div></div>
+<p>The C++ Standard Template Library STL as part of the C++
+    Standard Library provides a framework for processing algorithms on
+    different kind of containers. However, ordinary arrays don't
+    provide the interface of STL containers (although, they provide
+    the iterator interface of STL containers).</p>
+<p>As replacement for ordinary arrays, the STL provides class
+    <code class="computeroutput">std::vector</code>.  However,
+    <code class="computeroutput">std::vector&lt;&gt;</code> provides
+    the semantics of dynamic arrays. Thus, it manages data to be able
+    to change the number of elements. This results in some overhead in
+    case only arrays with static size are needed.</p>
+<p>In his book, <span class="emphasis"><em>Generic Programming and the
+    STL</em></span>, Matthew H. Austern introduces a useful wrapper
+    class for ordinary arrays with static size, called
+    <code class="computeroutput">block</code>.  It is safer and has no worse performance than
+    ordinary arrays. In <span class="emphasis"><em>The C++ Programming
+    Language</em></span>, 3rd edition, Bjarne Stroustrup introduces a
+    similar class, called <code class="computeroutput">c_array</code>, which I (<a href="http://www.josuttis.com" target="_top">Nicolai Josuttis</a>) present
+    slightly modified in my book <span class="emphasis"><em>The C++ Standard Library -
+    A Tutorial and Reference</em></span>, called
+    <code class="computeroutput">carray</code>. This is the essence of these approaches
+    spiced with many feedback from <a href="http://www.boost.org" target="_top">boost</a>.</p>
+<p>After considering different names, we decided to name this
+    class simply <code class="computeroutput"><a class="link" href="../boost/array.html" title="Class template array">array</a></code>.</p>
+<p>Note that this class is suggested to be part of the next
+    Technical Report, which will extend the C++ Standard (see
+    <a href="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm" target="_top">http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm</a>).</p>
+<p>Class <code class="computeroutput"><a class="link" href="../boost/array.html" title="Class template array">array</a></code> fulfills most
+    but not all of the requirements of "reversible containers" (see
+    Section 23.1, [lib.container.requirements] of the C++
+    Standard). The reasons array is not an reversible STL container is
+    because:
+      </p>
+<div class="itemizedlist"><ul type="disc" compact>
+<li>No constructors are provided.</li>
+<li>Elements may have an undetermined initial value (see <a class="xref" href="array.html#array.rationale" title="Design Rationale">the section called &#8220;Design Rationale&#8221;</a>).</li>
+<li>
+<code class="computeroutput"><a class="link" href="../boost/array.html#boost.swap">swap</a></code>() has no constant complexity.</li>
+<li>
+<code class="computeroutput"><a class="link" href="../boost/array.html#id185107-bb">size</a></code>() is always constant, based on the second template argument of the type.</li>
+<li>The container provides no allocator support.</li>
+</ul></div>
+<p>
+    </p>
+<p>It doesn't fulfill the requirements of a "sequence" (see Section 23.1.1, [lib.sequence.reqmts] of the C++ Standard), except that:
+      </p>
+<div class="itemizedlist"><ul type="disc" compact>
+<li>
+<code class="computeroutput"><a class="link" href="../boost/array.html#id155276-bb">front</a></code>() and <code class="computeroutput"><a class="link" href="../boost/array.html#id155324-bb">back</a></code>() are provided.</li>
+<li>
+<code class="computeroutput"><a class="link" href="../boost/array.html#id155129-bb">operator[]</a></code> and <code class="computeroutput"><a class="link" href="../boost/array.html#id155202-bb">at</a></code>() are provided.</li>
+</ul></div>
+<p>
+    </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="id540764"></a>Reference</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="array.html#header.boost.array_hpp">Header &lt;boost/array.hpp&gt;</a></span></dt></dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.array_hpp"></a>Header &lt;<a href="../../../../boost/array.hpp" target="_top">boost/array.hpp</a>&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; <span class="bold"><strong>class</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>;
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>void</strong></span></span> <a class="link" href="../boost/array.html#boost.swap">swap</a>(
+                        <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+              
+                        <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator=="><span class="bold"><strong>operator</strong></span>==</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                    
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator!="><span class="bold"><strong>operator</strong></span>!=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                    
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator_id227596"><span class="bold"><strong>operator</strong></span>&lt;</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                   
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator_id227679"><span class="bold"><strong>operator</strong></span>&gt;</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                   
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator_=_id227747"><span class="bold"><strong>operator</strong></span>&lt;=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                    
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+  <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> T, std::size_t N&gt; 
+    <span class="type"><span class="bold"><strong>bool</strong></span></span> <a class="link" href="../boost/array.html#boost.operator_=_id227814"><span class="bold"><strong>operator</strong></span>&gt;=</a>(
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     , 
+                    
+                        <span class="bold"><strong>const</strong></span> <a class="link" href="../boost/array.html" title="Class template array">array</a>&lt;T, N&gt;&amp;
+                     );
+}</pre>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="array.rationale"></a>Design Rationale</h3></div></div></div>
+<p>
+      There was an important design tradeoff regarding the
+      constructors: We could implement array as an "aggregate" (see
+      Section 8.5.1, [dcl.init.aggr], of the C++ Standard). This would
+      mean:
+      </p>
+<div class="itemizedlist"><ul type="disc"><li>
+<p>
+               An array can be initialized with a
+               brace-enclosing, comma-separated list of initializers for the
+               elements of the container, written in increasing subscript
+               order:
+            </p>
+<pre class="programlisting">
+               <code class="computeroutput"><a class="link" href="../boost/array.html" title="Class template array">boost::array</a></code>&lt;int,4&gt; a = { { 1, 2, 3 } };
+            </pre>
+<p>
+               Note that if there are fewer elements in the
+               initializer list, then each remaining element gets
+               default-initialized (thus, it has a defined value).
+            </p>
+</li></ul></div>
+<p>
+   </p>
+<p>
+      However, this approach has its drawbacks: <span class="bold"><strong>
+         passing no initializer list means that the elements
+         have an indetermined initial value
+      </strong></span>, because the rule says
+      that aggregates may have:
+      </p>
+<div class="itemizedlist"><ul type="disc">
+<li>No user-declared constructors.</li>
+<li>No private or protected non-static data members.</li>
+<li>No base classes.</li>
+<li>No virtual functions.</li>
+</ul></div>
+<p>
+   </p>
+<p>Nevertheless, The current implementation uses this approach.</p>
+<p>
+      Note that for standard conforming compilers it is possible to
+      use fewer braces (according to 8.5.1 (11) of the Standard). That is,
+      you can initialize an array as follows:
+   </p>
+<pre class="programlisting">
+      <code class="computeroutput"><a class="link" href="../boost/array.html" title="Class template array">boost::array</a></code>&lt;int,4&gt; a = { 1, 2, 3 };
+   </pre>
+<p>
+      I'd appreciate any constructive feedback. <span class="bold"><strong>
+         Please note: I don't have time to read all boost
+         mails. Thus, to make sure that feedback arrives to me, please send
+         me a copy of each mail regarding this class.
+      </strong></span>
+   </p>
+<p>
+      The code is provided "as is" without expressed or implied
+      warranty.
+   </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="array.more.info"></a>For more information...</h3></div></div></div>
+<p>
+      To find more details about using ordinary arrays in C++ and
+      the framework of the STL, see e.g.
+
+      </p>
+<div class="literallayout"><p><br>
+         The C++ Standard Library - A Tutorial and Reference<br>
+         by Nicolai M. Josuttis<br>
+         Addison Wesley Longman, 1999<br>
+         ISBN 0-201-37926-0<br>
+      </p></div>
+<p>
+   </p>
+<p>
+      <a href="http://www.josuttis.com/" target="_top">
+         Home Page of Nicolai
+         Josuttis
+      </a>
+   </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="array.ack"></a>Acknowledgements</h3></div></div></div>
+<p>Doug Gregor ported the documentation to the BoostBook format.</p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remez.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/array.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 201 - 0
doc/test/gold/document_to_test_formatting/basic_formatting.html

@@ -0,0 +1,201 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basic Formatting</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="code_blocks.html" title="Code Blocks">
+<link rel="next" href="blurbs.html" title="Blurbs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="code_blocks.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="blurbs.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.basic_formatting"></a><a class="link" href="basic_formatting.html" title="Basic Formatting">Basic Formatting</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.font_styles">Font
+      Styles</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.replaceable_text">Replaceable
+      Text</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.quotations">Quotations</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.inline_code">Inline
+      Code</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.links">Links</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.footnotes">Footnotes</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.blockquote">Blockquote</a></span></dt>
+<dt><span class="section"><a href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings">Headings</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.font_styles"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.font_styles" title="Font Styles">Font
+      Styles</a>
+</h3></div></div></div>
+<p>
+        Here we go with some inline formatting: <span class="emphasis"><em>italic</em></span>, <span class="bold"><strong>bold</strong></span>, <span class="underline">underline</span>,
+        <code class="literal">teletype</code>, <span class="strikethrough">strikethrough</span>,
+        we can combine styles as well: <span class="emphasis"><em><span class="bold"><strong>bold italic</strong></span></em></span>,
+        <span class="underline"><code class="literal">teletype with underline</code></span>.
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.replaceable_text"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.replaceable_text" title="Replaceable Text">Replaceable
+      Text</a>
+</h3></div></div></div>
+<p>
+        Text that is intended to be user-replaceable is
+        <em class="replaceable"><code>
+          rendered like this
+        </code></em>
+        .
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.quotations"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.quotations" title="Quotations">Quotations</a>
+</h3></div></div></div>
+<p>
+        Here we go: &#8220;<span class="quote">A question that sometimes drives me hazy: am I or are
+        the others crazy?</span>&#8221;--Einstein
+      </p>
+<p>
+        Note the proper left and right quote marks. Also, while you can simply use
+        ordinary quote marks like "quoted", our quotation, above, will
+        generate correct DocBook quotations (e.g. &lt;quote&gt;quoted&lt;/quote&gt;).
+      </p>
+<p>
+        Like all phrase elements, quotations may be nested. Example:
+      </p>
+<p>
+        &#8220;<span class="quote">Here's the rule for bargains: &#8216;<span class="quote">Do other men, for they would
+        do you.</span>&#8217; That's the true business precept.</span>&#8221;
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.inline_code"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.inline_code" title="Inline Code">Inline
+      Code</a>
+</h3></div></div></div>
+<p>
+        This text has inlined code <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span></code>
+        in it. The code should be syntax highlighted.
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.links"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.links" title="Links">Links</a>
+</h3></div></div></div>
+<p>
+        Try this: <a href="http://www.boost.org" target="_top">this is <span class="bold"><strong>boost's</strong></span>
+        website....</a> it should be visible as a link.
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.footnotes"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.footnotes" title="Footnotes">Footnotes</a>
+</h3></div></div></div>
+<p>
+        Here's one
+        <sup>[<a name="id537164" href="#ftn.id537164" class="footnote">1</a>]</sup>
+        .
+      </p>
+<p>
+        And here's another
+        <sup>[<a name="id537177" href="#ftn.id537177" class="footnote">2</a>]</sup>
+        .
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.blockquote"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.blockquote" title="Blockquote">Blockquote</a>
+</h3></div></div></div>
+<p>
+        Lets indent the next paragraph:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            Here we go!!!
+          </p>
+<p>
+        </p>
+</blockquote></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.basic_formatting.headings"></a><a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings" title="Headings">Headings</a>
+</h3></div></div></div>
+<p>
+        Now try rendering some heading styles:
+      </p>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_1"></a><h2>
+<a name="id537256"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_1">Heading
+        1</a>
+      </h2>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_2"></a><h3>
+<a name="id537280"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_2">Heading
+        2</a>
+      </h3>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_3"></a><h4>
+<a name="id537304"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_3">Heading
+        3</a>
+      </h4>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_4"></a><h5>
+<a name="id537330"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_4">Heading
+        4</a>
+      </h5>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_5"></a><h6>
+<a name="id537354"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_5">Heading
+        5</a>
+      </h6>
+<a name="document_to_test_formatting.basic_formatting.headings.heading_6"></a><h4>
+<a name="id537378"></a>
+        <a class="link" href="basic_formatting.html#document_to_test_formatting.basic_formatting.headings.heading_6">Heading
+        6</a>
+      </h4>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id537164" href="#id537164" class="para">1</a>] </sup>
+            A sample footnote
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id537177" href="#id537177" class="para">2</a>] </sup>
+            Another sample footnote
+          </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="code_blocks.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="blurbs.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 160 - 0
doc/test/gold/document_to_test_formatting/blurbs.html

@@ -0,0 +1,160 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Blurbs</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="basic_formatting.html" title="Basic Formatting">
+<link rel="next" href="lists_and_tables.html" title="Lists and Tables">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basic_formatting.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lists_and_tables.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.blurbs"></a><a class="link" href="blurbs.html" title="Blurbs">Blurbs</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="blurbs.html#document_to_test_formatting.blurbs.preformatted_text">Preformatted
+      text</a></span></dt>
+<dt><span class="section"><a href="blurbs.html#document_to_test_formatting.blurbs.admonishments">Admonishments</a></span></dt>
+<dt><span class="section"><a href="blurbs.html#document_to_test_formatting.blurbs.blurbs">Blurbs</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.blurbs.preformatted_text"></a><a class="link" href="blurbs.html#document_to_test_formatting.blurbs.preformatted_text" title="Preformatted text">Preformatted
+      text</a>
+</h3></div></div></div>
+<p>
+        Here's some sample program output:
+      </p>
+<pre class="programlisting">F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  65.549
+
+Sample 2:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  61.854
+
+Test Statistic                                         =  1.123
+
+CDF of test statistic:                                 =  8.148e-001
+Upper Critical Value at alpha:                         =  1.238e+000
+Upper Critical Value at alpha/2:                       =  1.289e+000
+Lower Critical Value at alpha:                         =  8.080e-001
+Lower Critical Value at alpha/2:                       =  7.756e-001
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis                                    Conclusion
+Standard deviations are unequal (two sided test)          REJECTED
+Standard deviation 1 is less than standard deviation 2    REJECTED
+Standard deviation 1 is greater than standard deviation 2 REJECTED
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.blurbs.admonishments"></a><a class="link" href="blurbs.html#document_to_test_formatting.blurbs.admonishments" title="Admonishments">Admonishments</a>
+</h3></div></div></div>
+<p>
+        There are four admonishments supported by Docbook XML:
+      </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This is a note
+        </p></td></tr>
+</table></div>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../doc/html/images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This is a tip
+        </p></td></tr>
+</table></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This is important
+        </p></td></tr>
+</table></div>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../doc/html/images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This is a caution
+        </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+          This is a warning
+        </p>
+<p>
+          They can contain more than one paragraph.
+        </p>
+</td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.blurbs.blurbs"></a><a class="link" href="blurbs.html#document_to_test_formatting.blurbs.blurbs" title="Blurbs">Blurbs</a>
+</h3></div></div></div>
+<div class="sidebar">
+<p class="title"><b></b></p>
+<p>
+        <span class="bold"><strong>An eye catching advertisement or note...</strong></span>
+      </p>
+<p>
+        These should be rendered in a manner similar to admonishments.
+      </p>
+<p>
+        They can contain more than one paragraph.
+      </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basic_formatting.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lists_and_tables.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 428 - 0
doc/test/gold/document_to_test_formatting/code_blocks.html

@@ -0,0 +1,428 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Code Blocks</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="../index.html" title="Document To Test Formatting">
+<link rel="next" href="basic_formatting.html" title="Basic Formatting">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_formatting.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.code_blocks"></a><a class="link" href="code_blocks.html" title="Code Blocks">Code Blocks</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="code_blocks.html#document_to_test_formatting.code_blocks.embedded_code">Embedded
+      code</a></span></dt>
+<dt><span class="section"><a href="code_blocks.html#document_to_test_formatting.code_blocks.imported_code_and_callouts">Imported
+      code and callouts</a></span></dt>
+<dt><span class="section"><a href="code_blocks.html#document_to_test_formatting.code_blocks.larger_example">Larger
+      example</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.code_blocks.embedded_code"></a><a class="link" href="code_blocks.html#document_to_test_formatting.code_blocks.embedded_code" title="Embedded code">Embedded
+      code</a>
+</h3></div></div></div>
+<p>
+        These should be syntax highlighted:
+      </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="comment">// Sample code
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello, World\n"</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.code_blocks.imported_code_and_callouts"></a><a class="link" href="code_blocks.html#document_to_test_formatting.code_blocks.imported_code_and_callouts" title="Imported code and callouts">Imported
+      code and callouts</a>
+</h3></div></div></div>
+<p>
+        Here's some code with left-placed callouts:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">x</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+    <span class="line_callout_bug"><a class="co" name="document_to_test_formatting2co" href="code_blocks.html#document_to_test_formatting2"><img src="../../../src/images/callouts/1.png" alt="1" border="0"></a></span><span class="identifier">x</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">n</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+    <span class="special">{</span>
+    <span class="special">}</span>
+
+    <span class="line_callout_bug"><a class="co" name="document_to_test_formatting3co" href="code_blocks.html#document_to_test_formatting3"><img src="../../../src/images/callouts/2.png" alt="2" border="0"></a></span><span class="special">~</span><span class="identifier">x</span><span class="special">()</span>
+    <span class="special">{</span>
+    <span class="special">}</span>
+
+    <span class="line_callout_bug"><a class="co" name="document_to_test_formatting4co" href="code_blocks.html#document_to_test_formatting4"><img src="../../../src/images/callouts/3.png" alt="3" border="0"></a></span><span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span>
+    <span class="special">{</span>
+        <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span> 
+    <span class="special">}</span>
+
+    <span class="line_callout_bug"><a class="co" name="document_to_test_formatting5co" href="code_blocks.html#document_to_test_formatting5"><img src="../../../src/images/callouts/4.png" alt="4" border="0"></a></span><span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n_</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="identifier">n</span> <span class="special">=</span> <span class="identifier">n_</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting2"></a><a href="#document_to_test_formatting2co"><img src="../../../src/images/callouts/1.png" alt="1" border="0"></a> </p></td>
+<td valign="top" align="left"><p> Constructor </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting3"></a><a href="#document_to_test_formatting3co"><img src="../../../src/images/callouts/2.png" alt="2" border="0"></a> </p></td>
+<td valign="top" align="left"><p> Destructor </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting4"></a><a href="#document_to_test_formatting4co"><img src="../../../src/images/callouts/3.png" alt="3" border="0"></a> </p></td>
+<td valign="top" align="left"><p> Get the <code class="computeroutput"><span class="identifier">n</span></code>
+          member variable </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting5"></a><a href="#document_to_test_formatting5co"><img src="../../../src/images/callouts/4.png" alt="4" border="0"></a> </p></td>
+<td valign="top" align="left"><p> Set the <code class="computeroutput"><span class="identifier">n</span></code>
+          member variable </p></td>
+</tr>
+</table></div>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        And again with callouts placed exactly where we put them:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo_bar</span><span class="special">()</span> <span class="callout_bug"><a class="co" name="document_to_test_formatting0co" href="code_blocks.html#document_to_test_formatting0"><img src="../../../src/images/callouts/1.png" alt="1" border="0"></a></span>
+<span class="special">{</span>
+    <span class="keyword">return</span> <span class="string">"foo-bar"</span><span class="special">;</span> <span class="callout_bug"><a class="co" name="document_to_test_formatting1co" href="code_blocks.html#document_to_test_formatting1"><img src="../../../src/images/callouts/2.png" alt="2" border="0"></a></span>
+<span class="special">}</span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting0"></a><a href="#document_to_test_formatting0co"><img src="../../../src/images/callouts/1.png" alt="1" border="0"></a> </p></td>
+<td valign="top" align="left"><p> The <span class="emphasis"><em>Mythical</em></span> FooBar. See <a href="http://en.wikipedia.org/wiki/Foobar" target="_top">Foobar
+          for details</a> </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="document_to_test_formatting1"></a><a href="#document_to_test_formatting1co"><img src="../../../src/images/callouts/2.png" alt="2" border="0"></a> </p></td>
+<td valign="top" align="left"><p> return 'em, foo-bar man! </p></td>
+</tr>
+</table></div>
+<p>
+        </p>
+<p>
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.code_blocks.larger_example"></a><a class="link" href="code_blocks.html#document_to_test_formatting.code_blocks.larger_example" title="Larger example">Larger
+      example</a>
+</h3></div></div></div>
+<p>
+        Now let's include a larger example, this may span several pages and should
+        not be chopped off half way through... some FO processors get this wrong!
+      </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">sub_match</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*&gt;</span>                    <span class="identifier">csub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*&gt;</span>                 <span class="identifier">wcsub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">&gt;</span>    <span class="identifier">ssub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">&gt;</span>   <span class="identifier">wssub_match</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">sub_match</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+   <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+   <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span>   <span class="identifier">difference_type</span><span class="special">;</span>
+   <span class="keyword">typedef</span>          <span class="identifier">BidirectionalIterator</span>                                    <span class="identifier">iterator</span><span class="special">;</span>
+
+   <span class="keyword">bool</span>  <span class="identifier">matched</span><span class="special">;</span>
+
+   <span class="identifier">difference_type</span> <span class="identifier">length</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">operator</span> <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;()</span><span class="keyword">const</span><span class="special">;</span>
+   <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span> <span class="identifier">str</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+   <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+   <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">*</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_REGEX_MATCH_EXTRA</span>
+   <span class="keyword">typedef</span> <span class="identifier">implementation</span><span class="special">-</span><span class="keyword">private</span> <span class="identifier">capture_sequence_type</span><span class="special">;</span>
+   <span class="keyword">const</span> <span class="identifier">capture_sequence_type</span><span class="special">&amp;</span> <span class="identifier">captures</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+<span class="comment">//
+</span><span class="comment">// comparisons to another sub_match:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a basic_string:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                       <span class="identifier">traits</span><span class="special">,</span> 
+                                       <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                       <span class="identifier">traits</span><span class="special">,</span> 
+                                       <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                       <span class="identifier">traits</span><span class="special">,</span> 
+                                       <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                          <span class="identifier">traits</span><span class="special">,</span> 
+                                          <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a pointer to a character array:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span> 
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a single character:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+                  <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span> 
+<span class="comment">// 
+</span><span class="comment">// addition operators: 
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+                                       <span class="identifier">traits</span><span class="special">,</span> 
+                                       <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">,</span> 
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> 
+                                       <span class="identifier">traits</span><span class="special">,</span> 
+                                       <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+               <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span> 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span> 
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span> 
+   <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m1</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m2</span><span class="special">);</span>
+
+<span class="comment">//
+</span><span class="comment">// stream inserter:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">&gt;&amp;</span>
+   <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
+               <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basic_formatting.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 60 - 0
doc/test/gold/document_to_test_formatting/images.html

@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Images</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="lists_and_tables.html" title="Lists and Tables">
+<link rel="next" href="test.html" title="test HTML4 symbols">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lists_and_tables.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.images"></a><a class="link" href="images.html" title="Images">Images</a>
+</h2></div></div></div>
+<p>
+      These are tricky enough that they warrent their own section.
+    </p>
+<p>
+      Let's start with a PNG file that's set to 120dpi, it should render at a sensible
+      size in both html and PDF forms. It should print OK too!
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/digamma3.png" alt="digamma3"></span>
+    </p>
+<p>
+      Now try again with a sample SVG image:
+    </p>
+<p>
+      <span class="inlinemediaobject"><object type="image/svg+xml" data="../images/open_clipart_library_logo.svg" width="745.60706" height="513.2569"></object></span>
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lists_and_tables.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 455 - 0
doc/test/gold/document_to_test_formatting/lists_and_tables.html

@@ -0,0 +1,455 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lists and Tables</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="blurbs.html" title="Blurbs">
+<link rel="next" href="images.html" title="Images">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="blurbs.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="images.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.lists_and_tables"></a><a class="link" href="lists_and_tables.html" title="Lists and Tables">Lists and
+    Tables</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.lists">Lists</a></span></dt>
+<dt><span class="section"><a href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.variable_lists">Variable
+      Lists</a></span></dt>
+<dt><span class="section"><a href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.tables">Tables</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.lists_and_tables.lists"></a><a class="link" href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.lists" title="Lists">Lists</a>
+</h3></div></div></div>
+<p>
+        A numbered list:
+      </p>
+<div class="orderedlist"><ol type="1">
+<li>
+          One
+        </li>
+<li>
+          Two
+        </li>
+<li>
+          Three
+          <div class="orderedlist"><ol type="a">
+<li>
+              Three.a
+            </li>
+<li>
+              Three.b
+            </li>
+<li>
+              Three.c
+            </li>
+</ol></div>
+</li>
+<li>
+          Four
+          <div class="orderedlist"><ol type="a"><li>
+              Four.a
+              <div class="orderedlist"><ol type="i">
+<li>
+                  Four.a.i
+                </li>
+<li>
+                  Four.a.ii
+                </li>
+</ol></div>
+</li></ol></div>
+</li>
+<li>
+          Five
+        </li>
+</ol></div>
+<p>
+        An unordered list:
+      </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+          First
+        </li>
+<li>
+          Second
+        </li>
+<li>
+          Third
+        </li>
+</ul></div>
+<p>
+        A mixture of the two:
+      </p>
+<div class="orderedlist"><ol type="1">
+<li>
+          1
+          <div class="itemizedlist"><ul type="disc">
+<li>
+              1.a
+              <div class="orderedlist"><ol type="a">
+<li>
+                  1.a.1
+                </li>
+<li>
+                  1.a.2
+                </li>
+</ol></div>
+</li>
+<li>
+              1.b
+            </li>
+</ul></div>
+</li>
+<li>
+          2
+          <div class="itemizedlist"><ul type="disc">
+<li>
+              2.a
+            </li>
+<li>
+              2.b
+              <div class="orderedlist"><ol type="a">
+<li>
+                  2.b.1
+                </li>
+<li>
+                  2.b.2
+                  <div class="itemizedlist"><ul type="circle">
+<li>
+                      2.b.2.a
+                    </li>
+<li>
+                      2.b.2.b
+                    </li>
+</ul></div>
+</li>
+</ol></div>
+</li>
+</ul></div>
+</li>
+</ol></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.lists_and_tables.variable_lists"></a><a class="link" href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.variable_lists" title="Variable Lists">Variable
+      Lists</a>
+</h3></div></div></div>
+<div class="variablelist">
+<p class="title"><b>A Variable List</b></p>
+<dl>
+<dt><span class="term">term 1</span></dt>
+<dd><p>
+            The definition of term 1
+          </p></dd>
+<dt><span class="term">term 2</span></dt>
+<dd><p>
+            The definition of term 2
+          </p></dd>
+<dt><span class="term">term 3</span></dt>
+<dd><p>
+            The definition of term 3
+          </p></dd>
+</dl>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.lists_and_tables.tables"></a><a class="link" href="lists_and_tables.html#document_to_test_formatting.lists_and_tables.tables" title="Tables">Tables</a>
+</h3></div></div></div>
+<p>
+        Here's a big table with code and other tricky things:
+      </p>
+<div class="table">
+<a name="id537940"></a><p class="title"><b>Table 1. Notes on the Implementation of the Beta Distribution</b></p>
+<div class="table-contents"><table class="table" summary="Notes on the Implementation of the Beta Distribution">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+            <p>
+              Function
+            </p>
+            </th>
+<th>
+            <p>
+              Implementation Notes
+            </p>
+            </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+            <p>
+              pdf
+            </p>
+            </td>
+<td>
+            <p>
+              f(x;&#945;,&#946;) = x<sup>&#945; - 1</sup> (1 - x)<sup>&#946; -1</sup> / B(&#945;, &#946;)
+            </p>
+            <p>
+              Implemented using ibeta_derivative(a, b, x).
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              cdf
+            </p>
+            </td>
+<td>
+            <p>
+              Using the incomplete beta function ibeta(a, b, x)
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              cdf complement
+            </p>
+            </td>
+<td>
+            <p>
+              ibetac(a, b, x)
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              quantile
+            </p>
+            </td>
+<td>
+            <p>
+              Using the inverse incomplete beta function ibeta_inv(a, b, p)
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              quantile from the complement
+            </p>
+            </td>
+<td>
+            <p>
+              ibetac_inv(a, b, q)
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              mean
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">a</span><span class="special">/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              variance
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">a</span> <span class="special">*</span>
+              <span class="identifier">b</span> <span class="special">/</span>
+              <span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)^</span><span class="number">2</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              mode
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="special">(</span><span class="identifier">a</span><span class="special">-</span><span class="number">1</span><span class="special">)</span>
+              <span class="special">/</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span> <span class="special">+</span> <span class="number">2</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              skewness
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="number">2</span> <span class="special">(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">1</span><span class="special">)/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">2</span><span class="special">)</span> <span class="special">*</span>
+              <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span> <span class="special">*</span> <span class="identifier">b</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              kurtosis excess
+            </p>
+            </td>
+<td>
+            <p>
+              <span class="inlinemediaobject"><img src="../images/beta_dist_kurtosis.png" alt="beta_dist_kurtosis"></span>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              kurtosis
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">kurtosis</span> <span class="special">+</span>
+              <span class="number">3</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              parameter estimation
+            </p>
+            </td>
+<td>
+            <p>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              alpha
+            </p>
+            <p>
+              from mean and variance
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">mean</span> <span class="special">*</span>
+              <span class="special">((</span> <span class="special">(</span><span class="identifier">mean</span> <span class="special">*</span>
+              <span class="special">(</span><span class="number">1</span>
+              <span class="special">-</span> <span class="identifier">mean</span><span class="special">))</span> <span class="special">/</span> <span class="identifier">variance</span><span class="special">)-</span>
+              <span class="number">1</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              beta
+            </p>
+            <p>
+              from mean and variance
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="special">(</span><span class="number">1</span>
+              <span class="special">-</span> <span class="identifier">mean</span><span class="special">)</span> <span class="special">*</span> <span class="special">(((</span><span class="identifier">mean</span>
+              <span class="special">*</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span> <span class="identifier">mean</span><span class="special">))</span>
+              <span class="special">/</span><span class="identifier">variance</span><span class="special">)-</span><span class="number">1</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              The member functions <code class="computeroutput"><span class="identifier">estimate_alpha</span></code>
+              and <code class="computeroutput"><span class="identifier">estimate_beta</span></code>
+            </p>
+            <p>
+              from cdf and probability x
+            </p>
+            <p>
+              and <span class="bold"><strong>either</strong></span> <code class="computeroutput"><span class="identifier">alpha</span></code>
+              or <code class="computeroutput"><span class="identifier">beta</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              Implemented in terms of the inverse incomplete beta functions
+            </p>
+            <p>
+              ibeta_inva, and ibeta_invb respectively.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">estimate_alpha</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">beta</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">probability</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">estimate_beta</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">,</span>
+              <span class="identifier">x</span><span class="special">,</span>
+              <span class="identifier">probability</span><span class="special">)</span></code>
+            </p>
+            </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="blurbs.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="images.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 535 - 0
doc/test/gold/document_to_test_formatting/remez.html

@@ -0,0 +1,535 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Sample Article (The Remez Method)</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="test.html" title="test HTML4 symbols">
+<link rel="next" href="array.html" title="Array Example Boostbook XML Documentation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="array.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.remez"></a><a class="link" href="remez.html" title="Sample Article (The Remez Method)"> Sample Article (The
+    Remez Method)</a>
+</h2></div></div></div>
+<p>
+      The <a href="http://en.wikipedia.org/wiki/Remez_algorithm" target="_top">Remez algorithm</a>
+      is a methodology for locating the minimax rational approximation to a function.
+      This short article gives a brief overview of the method, but it should not
+      be regarded as a thorough theoretical treatment, for that you should consult
+      your favorite textbook.
+    </p>
+<p>
+      Imagine that you want to approximate some function f(x) by way of a rational
+      function R(x), where R(x) may be either a polynomial P(x) or a ratio of two
+      polynomials P(x)/Q(x) (a rational function). Initially we'll concentrate on
+      the polynomial case, as it's by far the easier to deal with, later we'll extend
+      to the full rational function case.
+    </p>
+<p>
+      We want to find the "best" rational approximation, where "best"
+      is defined to be the approximation that has the least deviation from f(x).
+      We can measure the deviation by way of an error function:
+    </p>
+<p>
+      E<sub>abs</sub>(x) = f(x) - R(x)
+    </p>
+<p>
+      which is expressed in terms of absolute error, but we can equally use relative
+      error:
+    </p>
+<p>
+      E<sub>rel</sub>(x) = (f(x) - R(x)) / |f(x)|
+    </p>
+<p>
+      And indeed in general we can scale the error function in any way we want, it
+      makes no difference to the maths, although the two forms above cover almost
+      every practical case that you're likely to encounter.
+    </p>
+<p>
+      The minimax rational function R(x) is then defined to be the function that
+      yields the smallest maximal value of the error function. Chebyshev showed that
+      there is a unique minimax solution for R(x) that has the following properties:
+    </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+        If R(x) is a polynomial of degree N, then there are N+2 unknowns: the N+1
+        coefficients of the polynomial, and maximal value of the error function.
+      </li>
+<li>
+        The error function has N+1 roots, and N+2 extrema (minima and maxima).
+      </li>
+<li>
+        The extrema alternate in sign, and all have the same magnitude.
+      </li>
+</ul></div>
+<p>
+      That means that if we know the location of the extrema of the error function
+      then we can write N+2 simultaneous equations:
+    </p>
+<p>
+      R(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+    </p>
+<p>
+      where E is the maximal error term, and x<sub>i</sub> are the abscissa values of the N+2
+      extrema of the error function. It is then trivial to solve the simultaneous
+      equations to obtain the polynomial coefficients and the error term.
+    </p>
+<p>
+      <span class="emphasis"><em>Unfortunately we don't know where the extrema of the error function
+      are located!</em></span>
+    </p>
+<a name="document_to_test_formatting.remez.the_remez_method"></a><h5>
+<a name="id539430"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.the_remez_method">The Remez
+      Method</a>
+    </h5>
+<p>
+      The Remez method is an iterative technique which, given a broad range of assumptions,
+      will converge on the extrema of the error function, and therefore the minimax
+      solution.
+    </p>
+<p>
+      In the following discussion we'll use a concrete example to illustrate the
+      Remez method: an approximation to the function e<sup>x</sup> over the range [-1, 1].
+    </p>
+<p>
+      Before we can begin the Remez method, we must obtain an initial value for the
+      location of the extrema of the error function. We could "guess" these,
+      but a much closer first approximation can be obtained by first constructing
+      an interpolated polynomial approximation to f(x).
+    </p>
+<p>
+      In order to obtain the N+1 coefficients of the interpolated polynomial we need
+      N+1 points (x<sub>0</sub>...x<sub>N</sub>): with our interpolated form passing through each of those
+      points that yields N+1 simultaneous equations:
+    </p>
+<p>
+      f(x<sub>i</sub>) = P(x<sub>i</sub>) = c<sub>0</sub> + c<sub>1</sub>x<sub>i</sub> ... + c<sub>N</sub>x<sub>i</sub><sup>N</sup>
+    </p>
+<p>
+      Which can be solved for the coefficients c<sub>0</sub>...c<sub>N</sub> in P(x).
+    </p>
+<p>
+      Obviously this is not a minimax solution, indeed our only guarantee is that
+      f(x) and P(x) touch at N+1 locations, away from those points the error may
+      be arbitrarily large. However, we would clearly like this initial approximation
+      to be as close to f(x) as possible, and it turns out that using the zeros of
+      an orthogonal polynomial as the initial interpolation points is a good choice.
+      In our example we'll use the zeros of a Chebyshev polynomial as these are particularly
+      easy to calculate, interpolating for a polynomial of degree 4, and measuring
+      <span class="emphasis"><em>relative error</em></span> we get the following error function:
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/remez-2.png" alt="remez-2"></span>
+    </p>
+<p>
+      Which has a peak relative error of 1.2x10<sup>-3</sup>.
+    </p>
+<p>
+      While this is a pretty good approximation already, judging by the shape of
+      the error function we can clearly do better. Before starting on the Remez method
+      propper, we have one more step to perform: locate all the extrema of the error
+      function, and store these locations as our initial <span class="emphasis"><em>Chebyshev control
+      points</em></span>.
+    </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+        In the simple case of a polynomial approximation, by interpolating through
+        the roots of a Chebyshev polynomial we have in fact created a <span class="emphasis"><em>Chebyshev
+        approximation</em></span> to the function: in terms of <span class="emphasis"><em>absolute
+        error</em></span> this is the best a priori choice for the interpolated form
+        we can achieve, and typically is very close to the minimax solution.
+      </p>
+<p>
+        However, if we want to optimise for <span class="emphasis"><em>relative error</em></span>,
+        or if the approximation is a rational function, then the initial Chebyshev
+        solution can be quite far from the ideal minimax solution.
+      </p>
+<p>
+        A more technical discussion of the theory involved can be found in this
+        <a href="http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html" target="_top">online
+        course</a>.
+      </p>
+</td></tr>
+</table></div>
+<a name="document_to_test_formatting.remez.remez_step_1"></a><h5>
+<a name="id539638"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.remez_step_1">Remez Step 1</a>
+    </h5>
+<p>
+      The first step in the Remez method, given our current set of N+2 Chebyshev
+      control points x<sub>i</sub>, is to solve the N+2 simultaneous equations:
+    </p>
+<p>
+      P(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+    </p>
+<p>
+      To obtain the error term E, and the coefficients of the polynomial P(x).
+    </p>
+<p>
+      This gives us a new approximation to f(x) that has the same error <span class="emphasis"><em>E</em></span>
+      at each of the control points, and whose error function <span class="emphasis"><em>alternates
+      in sign</em></span> at the control points. This is still not necessarily the
+      minimax solution though: since the control points may not be at the extrema
+      of the error function. After this first step here's what our approximation's
+      error function looks like:
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/remez-3.png" alt="remez-3"></span>
+    </p>
+<p>
+      Clearly this is still not the minimax solution since the control points are
+      not located at the extrema, but the maximum relative error has now dropped
+      to 5.6x10<sup>-4</sup>.
+    </p>
+<a name="document_to_test_formatting.remez.remez_step_2"></a><h5>
+<a name="id539738"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.remez_step_2">Remez Step 2</a>
+    </h5>
+<p>
+      The second step is to locate the extrema of the new approximation, which we
+      do in two stages: first, since the error function changes sign at each control
+      point, we must have N+1 roots of the error function located between each pair
+      of N+2 control points. Once these roots are found by standard root finding
+      techniques, we know that N extrema are bracketed between each pair of roots,
+      plus two more between the endpoints of the range and the first and last roots.
+      The N+2 extrema can then be found using standard function minimisation techniques.
+    </p>
+<p>
+      We now have a choice: multi-point exchange, or single point exchange.
+    </p>
+<p>
+      In single point exchange, we move the control point nearest to the largest
+      extrema to the absissa value of the extrema.
+    </p>
+<p>
+      In multi-point exchange we swap all the current control points, for the locations
+      of the extrema.
+    </p>
+<p>
+      In our example we perform multi-point exchange.
+    </p>
+<a name="document_to_test_formatting.remez.iteration"></a><h5>
+<a name="id539786"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.iteration">Iteration</a>
+    </h5>
+<p>
+      The Remez method then performs steps 1 and 2 above iteratively until the control
+      points are located at the extrema of the error function: this is then the minimax
+      solution.
+    </p>
+<p>
+      For our current example, two more iterations converges on a minimax solution
+      with a peak relative error of 5x10<sup>-4</sup> and an error function that looks like:
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/remez-4.png" alt="remez-4"></span>
+    </p>
+<a name="document_to_test_formatting.remez.rational_approximations"></a><h5>
+<a name="id539846"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.rational_approximations">Rational
+      Approximations</a>
+    </h5>
+<p>
+      If we wish to extend the Remez method to a rational approximation of the form
+    </p>
+<p>
+      f(x) = R(x) = P(x) / Q(x)
+    </p>
+<p>
+      where P(x) and Q(x) are polynomials, then we proceed as before, except that
+      now we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M. This
+      assumes that Q(x) is normalised so that it's leading coefficient is 1, giving
+      N+M+1 polynomial coefficients in total, plus the error term E.
+    </p>
+<p>
+      The simultaneous equations to be solved are now:
+    </p>
+<p>
+      P(x<sub>i</sub>) / Q(x<sub>i</sub>) + (-1)<sup>i</sup>E = f(x<sub>i</sub>)
+    </p>
+<p>
+      Evaluated at the N+M+2 control points x<sub>i</sub>.
+    </p>
+<p>
+      Unfortunately these equations are non-linear in the error term E: we can only
+      solve them if we know E, and yet E is one of the unknowns!
+    </p>
+<p>
+      The method usually adopted to solve these equations is an iterative one: we
+      guess the value of E, solve the equations to obtain a new value for E (as well
+      as the polynomial coefficients), then use the new value of E as the next guess.
+      The method is repeated until E converges on a stable value.
+    </p>
+<p>
+      These complications extend the running time required for the development of
+      rational approximations quite considerably. It is often desirable to obtain
+      a rational rather than polynomial approximation none the less: rational approximations
+      will often match more difficult to approximate functions, to greater accuracy,
+      and with greater efficiency, than their polynomial alternatives. For example,
+      if we takes our previous example of an approximation to e<sup>x</sup>, we obtained 5x10<sup>-4</sup> accuracy
+      with an order 4 polynomial. If we move two of the unknowns into the denominator
+      to give a pair of order 2 polynomials, and re-minimise, then the peak relative
+      error drops to 8.7x10<sup>-5</sup>. That's a 5 fold increase in accuracy, for the same
+      number of terms overall.
+    </p>
+<a name="document_to_test_formatting.remez.practical_considerations"></a><h5>
+<a name="id539957"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.practical_considerations">Practical
+      Considerations</a>
+    </h5>
+<p>
+      Most treatises on approximation theory stop at this point. However, from a
+      practical point of view, most of the work involves finding the right approximating
+      form, and then persuading the Remez method to converge on a solution.
+    </p>
+<p>
+      So far we have used a direct approximation:
+    </p>
+<p>
+      f(x) = R(x)
+    </p>
+<p>
+      But this will converge to a useful approximation only if f(x) is smooth. In
+      addition round-off errors when evaluating the rational form mean that this
+      will never get closer than within a few epsilon of machine precision. Therefore
+      this form of direct approximation is often reserved for situations where we
+      want efficiency, rather than accuracy.
+    </p>
+<p>
+      The first step in improving the situation is generally to split f(x) into a
+      dominant part that we can compute accurately by another method, and a slowly
+      changing remainder which can be approximated by a rational approximation. We
+      might be tempted to write:
+    </p>
+<p>
+      f(x) = g(x) + R(x)
+    </p>
+<p>
+      where g(x) is the dominant part of f(x), but if f(x)/g(x) is approximately
+      constant over the interval of interest then:
+    </p>
+<p>
+      f(x) = g(x)(c + R(x))
+    </p>
+<p>
+      Will yield a much better solution: here <span class="emphasis"><em>c</em></span> is a constant
+      that is the approximate value of f(x)/g(x) and R(x) is typically tiny compared
+      to <span class="emphasis"><em>c</em></span>. In this situation if R(x) is optimised for absolute
+      error, then as long as its error is small compared to the constant <span class="emphasis"><em>c</em></span>,
+      that error will effectively get wiped out when R(x) is added to <span class="emphasis"><em>c</em></span>.
+    </p>
+<p>
+      The difficult part is obviously finding the right g(x) to extract from your
+      function: often the asymptotic behaviour of the function will give a clue,
+      so for example the function __erfc becomes proportional to e<sup>-x<sup>2</sup></sup>/x as x becomes
+      large. Therefore using:
+    </p>
+<p>
+      erfc(z) = (C + R(x)) e<sup>-x<sup>2</sup></sup>/x
+    </p>
+<p>
+      as the approximating form seems like an obvious thing to try, and does indeed
+      yield a useful approximation.
+    </p>
+<p>
+      However, the difficulty then becomes one of converging the minimax solution.
+      Unfortunately, it is known that for some functions the Remez method can lead
+      to divergent behaviour, even when the initial starting approximation is quite
+      good. Furthermore, it is not uncommon for the solution obtained in the first
+      Remez step above to be a bad one: the equations to be solved are generally
+      "stiff", often very close to being singular, and assuming a solution
+      is found at all, round-off errors and a rapidly changing error function, can
+      lead to a situation where the error function does not in fact change sign at
+      each control point as required. If this occurs, it is fatal to the Remez method.
+      It is also possible to obtain solutions that are perfectly valid mathematically,
+      but which are quite useless computationally: either because there is an unavoidable
+      amount of roundoff error in the computation of the rational function, or because
+      the denominator has one or more roots over the interval of the approximation.
+      In the latter case while the approximation may have the correct limiting value
+      at the roots, the approximation is nonetheless useless.
+    </p>
+<p>
+      Assuming that the approximation does not have any fatal errors, and that the
+      only issue is converging adequately on the minimax solution, the aim is to
+      get as close as possible to the minimax solution before beginning the Remez
+      method. Using the zeros of a Chebyshev polynomial for the initial interpolation
+      is a good start, but may not be ideal when dealing with relative errors and/or
+      rational (rather than polynomial) approximations. One approach is to skew the
+      initial interpolation points to one end: for example if we raise the roots
+      of the Chebyshev polynomial to a positive power greater than 1 then the roots
+      will be skewed towards the middle of the [-1,1] interval, while a positive
+      power less than one will skew them towards either end. More usefully, if we
+      initially rescale the points over [0,1] and then raise to a positive power,
+      we can skew them to the left or right. Returning to our example of e<sup>x</sup> over [-1,1],
+      the initial interpolated form was some way from the minimax solution:
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/remez-2.png" alt="remez-2"></span>
+    </p>
+<p>
+      However, if we first skew the interpolation points to the left (rescale them
+      to [0, 1], raise to the power 1.3, and then rescale back to [-1,1]) we reduce
+      the error from 1.3x10<sup>-3</sup>to 6x10<sup>-4</sup>:
+    </p>
+<p>
+      <span class="inlinemediaobject"><img src="../images/remez-5.png" alt="remez-5"></span>
+    </p>
+<p>
+      It's clearly still not ideal, but it is only a few percent away from our desired
+      minimax solution (5x10<sup>-4</sup>).
+    </p>
+<a name="document_to_test_formatting.remez.remez_method_checklist"></a><h5>
+<a name="id540203"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.remez_method_checklist">Remez
+      Method Checklist</a>
+    </h5>
+<p>
+      The following lists some of the things to check if the Remez method goes wrong,
+      it is by no means an exhaustive list, but is provided in the hopes that it
+      will prove useful.
+    </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+        Is the function smooth enough? Can it be better separated into a rapidly
+        changing part, and an asymptotic part?
+      </li>
+<li>
+        Does the function being approximated have any "blips" in it? Check
+        for problems as the function changes computation method, or if a root, or
+        an infinity has been divided out. The telltale sign is if there is a narrow
+        region where the Remez method will not converge.
+      </li>
+<li>
+        Check you have enough accuracy in your calculations: remember that the Remez
+        method works on the difference between the approximation and the function
+        being approximated: so you must have more digits of precision available than
+        the precision of the approximation being constructed. So for example at double
+        precision, you shouldn't expect to be able to get better than a float precision
+        approximation.
+      </li>
+<li>
+        Try skewing the initial interpolated approximation to minimise the error
+        before you begin the Remez steps.
+      </li>
+<li>
+        If the approximation won't converge or is ill-conditioned from one starting
+        location, try starting from a different location.
+      </li>
+<li>
+        If a rational function won't converge, one can minimise a polynomial (which
+        presents no problems), then rotate one term from the numerator to the denominator
+        and minimise again. In theory one can continue moving terms one at a time
+        from numerator to denominator, and then re-minimising, retaining the last
+        set of control points at each stage.
+      </li>
+<li>
+        Try using a smaller interval. It may also be possible to optimise over one
+        (small) interval, rescale the control points over a larger interval, and
+        then re-minimise.
+      </li>
+<li>
+        Keep absissa values small: use a change of variable to keep the abscissa
+        over, say [0, b], for some smallish value <span class="emphasis"><em>b</em></span>.
+      </li>
+</ul></div>
+<a name="document_to_test_formatting.remez.references"></a><h5>
+<a name="id540285"></a>
+      <a class="link" href="remez.html#document_to_test_formatting.remez.references">References</a>
+    </h5>
+<p>
+      The original references for the Remez Method and it's extension to rational
+      functions are unfortunately in Russian:
+    </p>
+<p>
+      Remez, E.Ya., <span class="emphasis"><em>Fundamentals of numerical methods for Chebyshev approximations</em></span>,
+      "Naukova Dumka", Kiev, 1969.
+    </p>
+<p>
+      Remez, E.Ya., Gavrilyuk, V.T., <span class="emphasis"><em>Computer development of certain approaches
+      to the approximate construction of solutions of Chebyshev problems nonlinearly
+      depending on parameters</em></span>, Ukr. Mat. Zh. 12 (1960), 324-338.
+    </p>
+<p>
+      Gavrilyuk, V.T., <span class="emphasis"><em>Generalization of the first polynomial algorithm
+      of E.Ya.Remez for the problem of constructing rational-fractional Chebyshev
+      approximations</em></span>, Ukr. Mat. Zh. 16 (1961), 575-585.
+    </p>
+<p>
+      Some English language sources include:
+    </p>
+<p>
+      Fraser, W., Hart, J.F., <span class="emphasis"><em>On the computation of rational approximations
+      to continuous functions</em></span>, Comm. of the ACM 5 (1962), 401-403, 414.
+    </p>
+<p>
+      Ralston, A., <span class="emphasis"><em>Rational Chebyshev approximation by Remes' algorithms</em></span>,
+      Numer.Math. 7 (1965), no. 4, 322-330.
+    </p>
+<p>
+      A. Ralston, <span class="emphasis"><em>Rational Chebyshev approximation, Mathematical Methods
+      for Digital Computers v. 2</em></span> (Ralston A., Wilf H., eds.), Wiley, New
+      York, 1967, pp. 264-284.
+    </p>
+<p>
+      Hart, J.F. e.a., <span class="emphasis"><em>Computer approximations</em></span>, Wiley, New York
+      a.o., 1968.
+    </p>
+<p>
+      Cody, W.J., Fraser, W., Hart, J.F., <span class="emphasis"><em>Rational Chebyshev approximation
+      using linear equations</em></span>, Numer.Math. 12 (1968), 242-251.
+    </p>
+<p>
+      Cody, W.J., <span class="emphasis"><em>A survey of practical rational and polynomial approximation
+      of functions</em></span>, SIAM Review 12 (1970), no. 3, 400-423.
+    </p>
+<p>
+      Barrar, R.B., Loeb, H.J., <span class="emphasis"><em>On the Remez algorithm for non-linear families</em></span>,
+      Numer.Math. 15 (1970), 382-391.
+    </p>
+<p>
+      Dunham, Ch.B., <span class="emphasis"><em>Convergence of the Fraser-Hart algorithm for rational
+      Chebyshev approximation</em></span>, Math. Comp. 29 (1975), no. 132, 1078-1082.
+    </p>
+<p>
+      G. L. Litvinov, <span class="emphasis"><em>Approximate construction of rational approximations
+      and the effect of error autocorrection</em></span>, Russian Journal of Mathematical
+      Physics, vol.1, No. 3, 1994.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="array.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

+ 73 - 0
doc/test/gold/document_to_test_formatting/test.html

@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>test HTML4 symbols</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="../index.html" title="Document To Test Formatting">
+<link rel="up" href="../index.html" title="Document To Test Formatting">
+<link rel="prev" href="images.html" title="Images">
+<link rel="next" href="remez.html" title="Sample Article (The Remez Method)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="images.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.test"></a><a class="link" href="test.html" title="test HTML4 symbols"> test HTML4 symbols</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="test.html#document_to_test_formatting.test.test_greek_and_math_symbols">test
+      Greek and Math symbols</a></span></dt>
+<dt><span class="section"><a href="test.html#document_to_test_formatting.test.test_latin1_symbols">test
+      Latin1 symbols</a></span></dt>
+</dl></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.test.test_greek_and_math_symbols"></a><a class="link" href="test.html#document_to_test_formatting.test.test_greek_and_math_symbols" title="test Greek and Math symbols">test
+      Greek and Math symbols</a>
+</h3></div></div></div>
+<p>
+        &#402;, &#913;, &#914;, &#915;, &#916;, &#917;, &#918;, &#919;, &#920;, &#921;, &#922;, &#923;, &#924;, &#925;, &#926;, &#927;, &#928;, &#929;, &#931;, &#932;, &#933;, &#934;, &#935;, &#936;, &#937;, &#945;, &#946;, &#947;, &#948;, &#949;, &#950;, &#951;, &#952;, &#953;, &#954;, &#955;, &#956;,
+        &#957;, &#958;, &#959;, &#960;, &#961;, &#962;, &#963;, &#964;, &#965;, &#966;, &#967;, &#968;, &#969;, &#977;, &#978;, &#982;, &#8226;, &#8230;, &#8242;, &#8243;, &#8254;, &#8260;, &#8472;, &#8465;, &#8476;, &#8482;, &#8501;, &#8592;, &#8593;, &#8594;, &#8595;, &#8596;, &#8629;, &#8656;, &#8657;, &#8658;, &#8659;,
+        &#8660;, &#8704;, &#8706;, &#8707;, &#8709;, &#8711;, &#8712;, &#8713;, &#8715;, &#8719;, &#8721;, &#8722;, &#8727;, &#8730;, &#8733;, &#8734;, &#8736;, &#8743;, &#8744;, &#8745;, &#8746;, &#8747;, &#8756;, &#8764;, &#8773;, &#8776;, &#8800;, &#8801;, &#8804;, &#8805;, &#8834;, &#8835;, &#8836;, &#8838;, &#8839;, &#8853;, &#8855;,
+        &#8869;, &#8901;, &#8968;, &#8969;, &#8970;, &#8971;, &#9001;, &#9002;, &#9674;, &#9824;, &#9827;, &#9829;, &#9830;
+      </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="document_to_test_formatting.test.test_latin1_symbols"></a><a class="link" href="test.html#document_to_test_formatting.test.test_latin1_symbols" title="test Latin1 symbols">test
+      Latin1 symbols</a>
+</h3></div></div></div>
+<p>
+         , ¡, ¢, £, ¤, ¥, ¦, §, ¨, ©, ª, «, ¬, ­, ®, ¯, °, ±, ², ³, ´, µ, ¶, ·, ¸, ¹, º, », ¼, ½, ¾, ¿, À, Á, Â, Ã, Ä,
+        Å, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ð, Ñ, Ò, Ó, Ô, Õ, Ö, ×, Ø, Ù, Ú, Û, Ü, Ý, Þ, ß, à, á, â, ã, ä, å, æ, ç, è, é,
+        ê, ë, ì, í, î, ï, ð, ñ, ò, ó, ô, õ, ö, ÷, ø, ù, ú, û, ü, ý, þ, ÿ,
+      </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="images.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

BIN
doc/test/gold/images/accumulators/doxygen.png


BIN
doc/test/gold/images/accumulators/form_0.png


BIN
doc/test/gold/images/accumulators/form_1.png


BIN
doc/test/gold/images/accumulators/form_2.png


BIN
doc/test/gold/images/accumulators/form_3.png


BIN
doc/test/gold/images/accumulators/form_4.png


BIN
doc/test/gold/images/accumulators/form_5.png


BIN
doc/test/gold/images/accumulators/form_6.png


BIN
doc/test/gold/images/accumulators/form_7.png


BIN
doc/test/gold/images/accumulators/form_8.png


BIN
doc/test/gold/images/beta_dist_kurtosis.png


BIN
doc/test/gold/images/digamma3.png


BIN
doc/test/gold/images/doctest.png


+ 143 - 0
doc/test/gold/images/open_clipart_library_logo.svg

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   x="0.00000000"
+   y="0.00000000"
+   id="svg6221"
+   width="745.60706"
+   height="513.25690"
+   sodipodi:version="0.32"
+   inkscape:version="0.42"
+   sodipodi:docname="Open_Clipart_Library_logo.svg">
+  <sodipodi:namedview
+     inkscape:cy="893.36713"
+     inkscape:cx="305.25953"
+     inkscape:zoom="0.86831670"
+     inkscape:window-height="913"
+     inkscape:window-width="1272"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:window-x="0"
+     inkscape:window-y="30"
+     inkscape:current-layer="svg6221" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Open Clip Art Logo</dc:title>
+        <dc:date>10-01-2004</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Jon Phillips, Tobias Jakobs</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+        <dc:description>This is one version of the official Open Clip Art Library logo.</dc:description>
+        <dc:subject>logo, open clip art library logo, logotype</dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <path
+     d="M 405.82430,48.494855 C 396.10958,45.870336 386.13966,51.583653 383.51514,61.298370 L 298.15838,376.92441 C 295.53385,386.63914 301.24717,396.41506 310.96188,399.03957 L 626.58791,484.39635 C 636.30255,487.02086 646.27253,481.30755 648.89705,471.59283 L 734.25375,155.96679 C 735.49097,151.38725 734.71475,146.85751 732.70181,142.96928 L 732.70181,142.77528 L 732.50782,142.38730 L 732.50782,142.19331 C 732.46276,142.11490 732.36008,142.07704 732.31383,141.99931 L 717.76438,111.93045 L 651.80695,114.84034 L 405.82430,48.494855 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789947;stroke-miterlimit:4.0000000;stroke-opacity:0.20000000"
+     id="rect6080" />
+  <rect
+     width="363.28452"
+     height="363.28452"
+     rx="2.9260478"
+     ry="2.9260478"
+     x="363.42282"
+     y="-78.837021"
+     transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597070;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect911" />
+  <rect
+     width="288.49521"
+     height="288.49521"
+     rx="2.3236644"
+     ry="2.3236644"
+     x="398.72931"
+     y="-39.355053"
+     transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
+     style="fill:#f3e533;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect912" />
+  <path
+     d="M 552.48969,32.227283 L 486.13725,53.566475 L 486.71922,53.760468 L 235.30476,53.760468 C 225.24184,53.760468 217.26344,61.738811 217.26344,71.801785 L 217.26344,398.87339 C 217.26344,408.93643 225.24178,416.91471 235.30476,416.91471 L 562.37636,416.91471 C 572.43940,416.91471 580.41768,408.93637 580.41768,398.87339 L 580.41768,71.801785 C 580.41768,66.612962 578.25806,62.108236 574.79189,58.804276 L 552.48969,32.227283 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789950;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect6079" />
+  <rect
+     width="363.28418"
+     height="363.28418"
+     rx="2.9260466"
+     ry="2.9260466"
+     x="192.47523"
+     y="30.531385"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597060;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect913" />
+  <rect
+     width="288.49512"
+     height="288.49512"
+     rx="2.3236635"
+     ry="2.3236635"
+     x="227.78207"
+     y="70.013809"
+     style="fill:#ff7f00;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect914" />
+  <path
+     d="M 348.20848,28.541423 L 291.17463,66.563983 L 305.14211,68.115925 L 55.667554,157.15854 C 46.188236,160.53570 41.232826,170.76437 44.609974,180.24367 L 138.89040,445.04365 L 132.29465,444.84966 L 128.02682,485.39411 L 163.52746,498.58561 L 163.91546,498.58561 C 168.05181,500.44490 172.88654,501.00342 177.49494,499.36159 L 485.55528,389.56176 C 495.03452,386.18460 499.79600,375.76200 496.41886,366.28264 L 386.81301,58.416291 C 385.25785,54.051177 382.02384,50.975478 378.27734,48.910652 L 348.20848,28.541423 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.2500002;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect6078" />
+  <rect
+     width="363.28326"
+     height="363.28326"
+     rx="2.9260383"
+     ry="2.9260383"
+     x="-41.716114"
+     y="142.20343"
+     transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7596951;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect915" />
+  <rect
+     width="288.49469"
+     height="288.49469"
+     rx="2.3236592"
+     ry="2.3236592"
+     x="-6.4090877"
+     y="181.68738"
+     transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
+     style="fill:#bf0000;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect916" />
+</svg>

BIN
doc/test/gold/images/remez-2.png


BIN
doc/test/gold/images/remez-3.png


BIN
doc/test/gold/images/remez-4.png


BIN
doc/test/gold/images/remez-5.png


+ 149 - 0
doc/test/gold/index.html

@@ -0,0 +1,149 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Document To Test Formatting</title>
+<link rel="stylesheet" href="../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8125">
+<link rel="home" href="index.html" title="Document To Test Formatting">
+<link rel="next" href="document_to_test_formatting/code_blocks.html" title="Code Blocks">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
+<td align="center"><a href="../../../index.html">Home</a></td>
+<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="document_to_test_formatting/code_blocks.html"><img src="../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="article" lang="en">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="document_to_test_formatting"></a>Document To Test Formatting</h2></div>
+<div><div class="authorgroup">
+<div class="author"><h3 class="author">
+<span class="firstname">John</span> <span class="surname">Maddock</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Joel</span> <span class="surname">de Guzman</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Eric</span> <span class="surname">Niebler</span>
+</h3></div>
+<div class="author"><h3 class="author">
+<span class="firstname">Matias</span> <span class="surname">Capeletto</span>
+</h3></div>
+</div></div>
+<div><p class="copyright">Copyright © 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias
+      Capeletto</p></div>
+<div><div class="legalnotice">
+<a name="id473217"></a><p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="index.html#document_to_test_formatting.introduction">Introduction</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/code_blocks.html">Code Blocks</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/code_blocks.html#document_to_test_formatting.code_blocks.embedded_code">Embedded
+      code</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/code_blocks.html#document_to_test_formatting.code_blocks.imported_code_and_callouts">Imported
+      code and callouts</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/code_blocks.html#document_to_test_formatting.code_blocks.larger_example">Larger
+      example</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html">Basic Formatting</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.font_styles">Font
+      Styles</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.replaceable_text">Replaceable
+      Text</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.quotations">Quotations</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.inline_code">Inline
+      Code</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.links">Links</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.footnotes">Footnotes</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.blockquote">Blockquote</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/basic_formatting.html#document_to_test_formatting.basic_formatting.headings">Headings</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/blurbs.html">Blurbs</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/blurbs.html#document_to_test_formatting.blurbs.preformatted_text">Preformatted
+      text</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/blurbs.html#document_to_test_formatting.blurbs.admonishments">Admonishments</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/blurbs.html#document_to_test_formatting.blurbs.blurbs">Blurbs</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/lists_and_tables.html">Lists and
+    Tables</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/lists_and_tables.html#document_to_test_formatting.lists_and_tables.lists">Lists</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/lists_and_tables.html#document_to_test_formatting.lists_and_tables.variable_lists">Variable
+      Lists</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/lists_and_tables.html#document_to_test_formatting.lists_and_tables.tables">Tables</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/images.html">Images</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/test.html"> test HTML4 symbols</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/test.html#document_to_test_formatting.test.test_greek_and_math_symbols">test
+      Greek and Math symbols</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/test.html#document_to_test_formatting.test.test_latin1_symbols">test
+      Latin1 symbols</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/remez.html"> Sample Article (The
+    Remez Method)</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/array.html"> Array Example Boostbook
+    XML Documentation</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="document_to_test_formatting/array.html#array.intro">Introduction</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/array.html#id540764">Reference</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/array.html#array.rationale">Design Rationale</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/array.html#array.more.info">For more information...</a></span></dt>
+<dt><span class="section"><a href="document_to_test_formatting/array.html#array.ack">Acknowledgements</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="document_to_test_formatting/accumulators.html"> Accumulators
+    Example Doxygen Documentation</a></span></dt>
+<dd><dl><dt><span class="section"><a href="document_to_test_formatting/accumulators.html#statistics_library_reference">Statistics Library Reference</a></span></dt></dl></dd>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="document_to_test_formatting.introduction"></a><a class="link" href="index.html#document_to_test_formatting.introduction" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+      This document is purely a test case to test out HTML and PDF generation and
+      style.
+    </p>
+<p>
+      This is some body text.
+    </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">2.345</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">d</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+      We can count in Greek too: &#945;, &#946;, &#947;.
+    </p>
+<p>
+      Try some superscrips and subscripts: x<sup>2</sup>, x<sub>i</sub><sup>3</sup>, &#945;<sup>2</sup>, &#946;<sup>&#945;</sup>, &#8970;x&#8971;, &#8970;&#945;&#8971;, &#8968;a&#8969;.
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 09, 2008 at 12:07:46 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="document_to_test_formatting/code_blocks.html"><img src="../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

BIN
doc/test/html/images/beta_dist_kurtosis.png


BIN
doc/test/html/images/digamma3.png


BIN
doc/test/html/images/doctest.png


+ 143 - 0
doc/test/html/images/open_clipart_library_logo.svg

@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   x="0.00000000"
+   y="0.00000000"
+   id="svg6221"
+   width="745.60706"
+   height="513.25690"
+   sodipodi:version="0.32"
+   inkscape:version="0.42"
+   sodipodi:docname="Open_Clipart_Library_logo.svg">
+  <sodipodi:namedview
+     inkscape:cy="893.36713"
+     inkscape:cx="305.25953"
+     inkscape:zoom="0.86831670"
+     inkscape:window-height="913"
+     inkscape:window-width="1272"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:window-x="0"
+     inkscape:window-y="30"
+     inkscape:current-layer="svg6221" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Open Clip Art Logo</dc:title>
+        <dc:date>10-01-2004</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Jon Phillips, Tobias Jakobs</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+        <dc:description>This is one version of the official Open Clip Art Library logo.</dc:description>
+        <dc:subject>logo, open clip art library logo, logotype</dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <path
+     d="M 405.82430,48.494855 C 396.10958,45.870336 386.13966,51.583653 383.51514,61.298370 L 298.15838,376.92441 C 295.53385,386.63914 301.24717,396.41506 310.96188,399.03957 L 626.58791,484.39635 C 636.30255,487.02086 646.27253,481.30755 648.89705,471.59283 L 734.25375,155.96679 C 735.49097,151.38725 734.71475,146.85751 732.70181,142.96928 L 732.70181,142.77528 L 732.50782,142.38730 L 732.50782,142.19331 C 732.46276,142.11490 732.36008,142.07704 732.31383,141.99931 L 717.76438,111.93045 L 651.80695,114.84034 L 405.82430,48.494855 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789947;stroke-miterlimit:4.0000000;stroke-opacity:0.20000000"
+     id="rect6080" />
+  <rect
+     width="363.28452"
+     height="363.28452"
+     rx="2.9260478"
+     ry="2.9260478"
+     x="363.42282"
+     y="-78.837021"
+     transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597070;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect911" />
+  <rect
+     width="288.49521"
+     height="288.49521"
+     rx="2.3236644"
+     ry="2.3236644"
+     x="398.72931"
+     y="-39.355053"
+     transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)"
+     style="fill:#f3e533;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect912" />
+  <path
+     d="M 552.48969,32.227283 L 486.13725,53.566475 L 486.71922,53.760468 L 235.30476,53.760468 C 225.24184,53.760468 217.26344,61.738811 217.26344,71.801785 L 217.26344,398.87339 C 217.26344,408.93643 225.24178,416.91471 235.30476,416.91471 L 562.37636,416.91471 C 572.43940,416.91471 580.41768,408.93637 580.41768,398.87339 L 580.41768,71.801785 C 580.41768,66.612962 578.25806,62.108236 574.79189,58.804276 L 552.48969,32.227283 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.6789950;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect6079" />
+  <rect
+     width="363.28418"
+     height="363.28418"
+     rx="2.9260466"
+     ry="2.9260466"
+     x="192.47523"
+     y="30.531385"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7597060;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect913" />
+  <rect
+     width="288.49512"
+     height="288.49512"
+     rx="2.3236635"
+     ry="2.3236635"
+     x="227.78207"
+     y="70.013809"
+     style="fill:#ff7f00;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect914" />
+  <path
+     d="M 348.20848,28.541423 L 291.17463,66.563983 L 305.14211,68.115925 L 55.667554,157.15854 C 46.188236,160.53570 41.232826,170.76437 44.609974,180.24367 L 138.89040,445.04365 L 132.29465,444.84966 L 128.02682,485.39411 L 163.52746,498.58561 L 163.91546,498.58561 C 168.05181,500.44490 172.88654,501.00342 177.49494,499.36159 L 485.55528,389.56176 C 495.03452,386.18460 499.79600,375.76200 496.41886,366.28264 L 386.81301,58.416291 C 385.25785,54.051177 382.02384,50.975478 378.27734,48.910652 L 348.20848,28.541423 z "
+     style="fill:#000000;fill-opacity:0.20000000;fill-rule:evenodd;stroke:none;stroke-width:1.2500002;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect6078" />
+  <rect
+     width="363.28326"
+     height="363.28326"
+     rx="2.9260383"
+     ry="2.9260383"
+     x="-41.716114"
+     y="142.20343"
+     transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
+     style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.7596951;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="rect915" />
+  <rect
+     width="288.49469"
+     height="288.49469"
+     rx="2.3236592"
+     ry="2.3236592"
+     x="-6.4090877"
+     y="181.68738"
+     transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)"
+     style="fill:#bf0000;fill-rule:evenodd;stroke-width:0.79413080pt"
+     id="rect916" />
+</svg>

BIN
doc/test/html/images/remez-2.png


BIN
doc/test/html/images/remez-3.png


BIN
doc/test/html/images/remez-4.png


BIN
doc/test/html/images/remez-5.png


+ 372 - 0
doc/test/remez.qbk

@@ -0,0 +1,372 @@
+[section:remez Sample Article (The Remez Method)]
+
+The [@http://en.wikipedia.org/wiki/Remez_algorithm Remez algorithm]
+is a methodology for locating the minimax rational approximation
+to a function.  This short article gives a brief overview of the method, but
+it should not be regarded as a thorough theoretical treatment, for that you
+should consult your favorite textbook.
+
+Imagine that you want to approximate some function f(x) by way of a rational
+function R(x), where R(x) may be either a polynomial P(x) or a ratio of two
+polynomials P(x)/Q(x) (a rational function).  Initially we'll concentrate on the 
+polynomial case, as it's by far the easier to deal with, later we'll extend 
+to the full rational function case.  
+
+We want to find the "best" rational approximation, where
+"best" is defined to be the approximation that has the least deviation
+from f(x).  We can measure the deviation by way of an error function:
+
+E[sub abs](x) = f(x) - R(x)
+
+which is expressed in terms of absolute error, but we can equally use
+relative error:
+
+E[sub rel](x) = (f(x) - R(x)) / |f(x)|
+
+And indeed in general we can scale the error function in any way we want, it
+makes no difference to the maths, although the two forms above cover almost
+every practical case that you're likely to encounter.
+
+The minimax rational function R(x) is then defined to be the function that
+yields the smallest maximal value of the error function.  Chebyshev showed
+that there is a unique minimax solution for R(x) that has the following
+properties:
+
+* If R(x) is a polynomial of degree N, then there are N+2 unknowns:
+the N+1 coefficients of the polynomial, and maximal value of the error
+function.
+* The error function has N+1 roots, and N+2 extrema (minima and maxima).
+* The extrema alternate in sign, and all have the same magnitude.
+
+That means that if we know the location of the extrema of the error function
+then we can write N+2 simultaneous equations:
+
+R(x[sub i]) + (-1)[super i]E = f(x[sub i])
+
+where E is the maximal error term, and x[sub i] are the abscissa values of the
+N+2 extrema of the error function.  It is then trivial to solve the simultaneous
+equations to obtain the polynomial coefficients and the error term.
+
+['Unfortunately we don't know where the extrema of the error function are located!]
+
+[h4 The Remez Method]
+
+The Remez method is an iterative technique which, given a broad range of
+assumptions, will converge on the extrema of the error function, and therefore
+the minimax solution.
+
+In the following discussion we'll use a concrete example to illustrate
+the Remez method: an approximation to the function e[super x][space] over
+the range \[-1, 1\].
+
+Before we can begin the Remez method, we must obtain an initial value
+for the location of the extrema of the error function.  We could "guess"
+these, but a much closer first approximation can be obtained by first  
+constructing an interpolated polynomial approximation to f(x).
+
+In order to obtain the N+1 coefficients of the interpolated polynomial
+we need N+1 points (x[sub 0]...x[sub N]): with our interpolated form 
+passing through each of those points
+that yields N+1 simultaneous equations:
+
+f(x[sub i]) = P(x[sub i]) = c[sub 0] + c[sub 1]x[sub i] ... + c[sub N]x[sub i][super N]
+
+Which can be solved for the coefficients c[sub 0]...c[sub N] in P(x).
+
+Obviously this is not a minimax solution, indeed our only guarantee is that f(x) and 
+P(x) touch at N+1 locations, away from those points the error may be arbitrarily
+large.  However, we would clearly like this initial approximation to be as close to
+f(x) as possible, and it turns out that using the zeros of an orthogonal polynomial
+as the initial interpolation points is a good choice.  In our example we'll use the 
+zeros of a Chebyshev polynomial as these are particularly easy to calculate, 
+interpolating for a polynomial of degree 4, and measuring /relative error/
+we get the following error function:
+
+[$images/remez-2.png]
+
+Which has a peak relative error of 1.2x10[super -3].
+
+While this is a pretty good approximation already, judging by the 
+shape of the error function we can clearly do better.  Before starting
+on the Remez method propper, we have one more step to perform: locate
+all the extrema of the error function, and store
+these locations as our initial ['Chebyshev control points].
+
+[note
+In the simple case of a polynomial approximation, by interpolating through
+the roots of a Chebyshev polynomial we have in fact created a ['Chebyshev
+approximation] to the function: in terms of /absolute error/
+this is the best a priori choice for the interpolated form we can
+achieve, and typically is very close to the minimax solution.
+
+However, if we want to optimise for /relative error/, or if the approximation
+is a rational function, then the initial Chebyshev solution can be quite far
+from the ideal minimax solution.  
+
+A more technical discussion of the theory involved can be found in this
+[@http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html online course].]
+
+[h4 Remez Step 1]
+
+The first step in the Remez method, given our current set of
+N+2 Chebyshev control points x[sub i], is to solve the N+2 simultaneous
+equations:
+
+P(x[sub i]) + (-1)[super i]E = f(x[sub i])
+
+To obtain the error term E, and the coefficients of the polynomial P(x).
+
+This gives us a new approximation to f(x) that has the same error /E/ at
+each of the control points, and whose error function ['alternates in sign]
+at the control points.  This is still not necessarily the minimax 
+solution though: since the control points may not be at the extrema of the error
+function.  After this first step here's what our approximation's error
+function looks like:
+
+[$images/remez-3.png]
+
+Clearly this is still not the minimax solution since the control points
+are not located at the extrema, but the maximum relative error has now
+dropped to 5.6x10[super -4].
+
+[h4 Remez Step 2]
+
+The second step is to locate the extrema of the new approximation, which we do 
+in two stages:  first, since the error function changes sign at each
+control point, we must have N+1 roots of the error function located between
+each pair of N+2 control points.  Once these roots are found by standard root finding 
+techniques, we know that N extrema are bracketed between each pair of
+roots, plus two more between the endpoints of the range and the first and last roots.
+The N+2 extrema can then be found using standard function minimisation techniques.
+
+We now have a choice: multi-point exchange, or single point exchange.
+
+In single point exchange, we move the control point nearest to the largest extrema to
+the absissa value of the extrema.
+
+In multi-point exchange we swap all the current control points, for the locations
+of the extrema.
+
+In our example we perform multi-point exchange.
+
+[h4 Iteration]
+
+The Remez method then performs steps 1 and 2 above iteratively until the control
+points are located at the extrema of the error function: this is then
+the minimax solution.
+
+For our current example, two more iterations converges on a minimax
+solution with a peak relative error of
+5x10[super -4] and an error function that looks like:
+
+[$images/remez-4.png]
+
+[h4 Rational Approximations]
+
+If we wish to extend the Remez method to a rational approximation of the form
+
+f(x) = R(x) = P(x) / Q(x)
+
+where P(x) and Q(x) are polynomials, then we proceed as before, except that now
+we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M.  This assumes
+that Q(x) is normalised so that it's leading coefficient is 1, giving
+N+M+1 polynomial coefficients in total, plus the error term E.
+
+The simultaneous equations to be solved are now:
+
+P(x[sub i]) / Q(x[sub i]) + (-1)[super i]E = f(x[sub i])
+
+Evaluated at the N+M+2 control points x[sub i].
+
+Unfortunately these equations are non-linear in the error term E: we can only
+solve them if we know E, and yet E is one of the unknowns!
+
+The method usually adopted to solve these equations is an iterative one: we guess the
+value of E, solve the equations to obtain a new value for E (as well as the polynomial
+coefficients), then use the new value of E as the next guess.  The method is
+repeated until E converges on a stable value.
+
+These complications extend the running time required for the development
+of rational approximations quite considerably. It is often desirable
+to obtain a rational rather than polynomial approximation none the less:
+rational approximations will often match more difficult to approximate
+functions, to greater accuracy, and with greater efficiency, than their
+polynomial alternatives.  For example, if we takes our previous example
+of an approximation to e[super x], we obtained 5x10[super -4] accuracy
+with an order 4 polynomial.  If we move two of the unknowns into the denominator
+to give a pair of order 2 polynomials, and re-minimise, then the peak relative error drops
+to 8.7x10[super -5].  That's a 5 fold increase in accuracy, for the same number 
+of terms overall.
+
+[h4 Practical Considerations]
+
+Most treatises on approximation theory stop at this point.  However, from
+a practical point of view, most of the work involves finding the right
+approximating form, and then persuading the Remez method to converge
+on a solution.
+
+So far we have used a direct approximation:
+
+f(x) = R(x)
+
+But this will converge to a useful approximation only if f(x) is smooth.  In
+addition round-off errors when evaluating the rational form mean that this
+will never get closer than within a few epsilon of machine precision.  
+Therefore this form of direct approximation is often reserved for situations
+where we want efficiency, rather than accuracy.
+
+The first step in improving the situation is generally to split f(x) into
+a dominant part that we can compute accurately by another method, and a 
+slowly changing remainder which can be approximated by a rational approximation.
+We might be tempted to write:
+
+f(x) = g(x) + R(x)
+
+where g(x) is the dominant part of f(x), but if f(x)\/g(x) is approximately
+constant over the interval of interest then:
+
+f(x) = g(x)(c + R(x))
+
+Will yield a much better solution: here /c/ is a constant that is the approximate
+value of f(x)\/g(x) and R(x) is typically tiny compared to /c/.  In this situation
+if R(x) is optimised for absolute error, then as long as its error is small compared
+to the constant /c/, that error will effectively get wiped out when R(x) is added to
+/c/.
+
+The difficult part is obviously finding the right g(x) to extract from your
+function: often the asymptotic behaviour of the function will give a clue, so
+for example the function __erfc becomes proportional to 
+e[super -x[super 2]]\/x as x becomes large.  Therefore using:
+
+erfc(z) = (C + R(x)) e[super -x[super 2]]/x
+
+as the approximating form seems like an obvious thing to try, and does indeed
+yield a useful approximation.
+
+However, the difficulty then becomes one of converging the minimax solution.
+Unfortunately, it is known that for some functions the Remez method can lead
+to divergent behaviour, even when the initial starting approximation is quite good.
+Furthermore, it is not uncommon for the solution obtained in the first Remez step
+above to be a bad one: the equations to be solved are generally "stiff", often
+very close to being singular, and assuming a solution is found at all, round-off
+errors and a rapidly changing error function, can lead to a situation where the
+error function does not in fact change sign at each control point as required.
+If this occurs, it is fatal to the Remez method.  It is also possible to
+obtain solutions that are perfectly valid mathematically, but which are
+quite useless computationally: either because there is an unavoidable amount
+of roundoff error in the computation of the rational function, or because
+the denominator has one or more roots over the interval of the approximation.
+In the latter case while the approximation may have the correct limiting value at
+the roots, the approximation is nonetheless useless.
+
+Assuming that the approximation does not have any fatal errors, and that the only
+issue is converging adequately on the minimax solution, the aim is to
+get as close as possible to the minimax solution before beginning the Remez method.
+Using the zeros of a Chebyshev polynomial for the initial interpolation is a 
+good start, but may not be ideal when dealing with relative errors and\/or
+rational (rather than polynomial) approximations.  One approach is to skew
+the initial interpolation points to one end: for example if we raise the
+roots of the Chebyshev polynomial to a positive power greater than 1 
+then the roots will be skewed towards the middle of the \[-1,1\] interval, 
+while a positive power less than one
+will skew them towards either end.  More usefully, if we initially rescale the
+points over \[0,1\] and then raise to a positive power, we can skew them to the left 
+or right.  Returning to our example of e[super x][space] over \[-1,1\], the initial
+interpolated form was some way from the minimax solution:
+
+[$images/remez-2.png]
+
+However, if we first skew the interpolation points to the left (rescale them
+to \[0, 1\], raise to the power 1.3, and then rescale back to \[-1,1\]) we
+reduce the error from 1.3x10[super -3][space]to 6x10[super -4]:
+
+[$images/remez-5.png]
+
+It's clearly still not ideal, but it is only a few percent away from
+our desired minimax solution (5x10[super -4]).
+
+[h4 Remez Method Checklist]
+
+The following lists some of the things to check if the Remez method goes wrong, 
+it is by no means an exhaustive list, but is provided in the hopes that it will
+prove useful.
+
+* Is the function smooth enough?  Can it be better separated into
+a rapidly changing part, and an asymptotic part?
+* Does the function being approximated have any "blips" in it?  Check
+for problems as the function changes computation method, or
+if a root, or an infinity has been divided out.  The telltale
+sign is if there is a narrow region where the Remez method will
+not converge.
+* Check you have enough accuracy in your calculations: remember that
+the Remez method works on the difference between the approximation
+and the function being approximated: so you must have more digits of
+precision available than the precision of the approximation
+being constructed.  So for example at double precision, you
+shouldn't expect to be able to get better than a float precision
+approximation.
+* Try skewing the initial interpolated approximation to minimise the
+error before you begin the Remez steps.
+* If the approximation won't converge or is ill-conditioned from one starting
+location, try starting from a different location.
+* If a rational function won't converge, one can minimise a polynomial
+(which presents no problems), then rotate one term from the numerator to
+the denominator and minimise again.  In theory one can continue moving
+terms one at a time from numerator to denominator, and then re-minimising, 
+retaining the last set of control points at each stage.
+* Try using a smaller interval.  It may also be possible to optimise over
+one (small) interval, rescale the control points over a larger interval,
+and then re-minimise.
+* Keep absissa values small: use a change of variable to keep the abscissa
+over, say \[0, b\], for some smallish value /b/.
+
+[h4 References]
+
+The original references for the Remez Method and it's extension
+to rational functions are unfortunately in Russian:
+
+Remez, E.Ya., ['Fundamentals of numerical methods for Chebyshev approximations], 
+"Naukova Dumka", Kiev, 1969.
+
+Remez, E.Ya., Gavrilyuk, V.T., ['Computer development of certain approaches 
+to the approximate construction of solutions of Chebyshev problems 
+nonlinearly depending on parameters], Ukr. Mat. Zh. 12 (1960), 324-338.
+
+Gavrilyuk, V.T., ['Generalization of the first polynomial algorithm of 
+E.Ya.Remez for the problem of constructing rational-fractional 
+Chebyshev approximations], Ukr. Mat. Zh. 16 (1961), 575-585.
+
+Some English language sources include:
+
+Fraser, W., Hart, J.F., ['On the computation of rational approximations 
+to continuous functions], Comm. of the ACM 5 (1962), 401-403, 414.
+
+Ralston, A., ['Rational Chebyshev approximation by Remes' algorithms], 
+Numer.Math. 7 (1965), no. 4, 322-330.
+
+A. Ralston, ['Rational Chebyshev approximation, Mathematical 
+Methods for Digital Computers v. 2] (Ralston A., Wilf H., eds.), 
+Wiley, New York, 1967, pp. 264-284.
+
+Hart, J.F. e.a., ['Computer approximations], Wiley, New York a.o., 1968.
+
+Cody, W.J., Fraser, W., Hart, J.F., ['Rational Chebyshev approximation 
+using linear equations], Numer.Math. 12 (1968), 242-251.
+
+Cody, W.J., ['A survey of practical rational and polynomial 
+approximation of functions], SIAM Review 12 (1970), no. 3, 400-423.
+
+Barrar, R.B., Loeb, H.J., ['On the Remez algorithm for non-linear 
+families], Numer.Math. 15 (1970), 382-391.
+
+Dunham, Ch.B., ['Convergence of the Fraser-Hart algorithm for rational 
+Chebyshev approximation], Math. Comp. 29 (1975), no. 132, 1078-1082.
+
+G. L. Litvinov, ['Approximate construction of rational
+approximations and the effect of error autocorrection],
+Russian Journal of Mathematical Physics, vol.1, No. 3, 1994.
+
+[endsect][/section:remez The Remez Method]
+
+
+

+ 69 - 0
doc/test/stub.cpp

@@ -0,0 +1,69 @@
+/*=============================================================================
+    Copyright (c) 2006 Joel de Guzman
+    http://spirit.sourceforge.net/
+
+    Use, modification and distribution is subject to 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)
+=============================================================================*/
+#include <string>
+
+//[ bar
+//` This is the [*/bar/] function
+std::string bar()
+{
+    // return 'em, bar man!
+    return "bar";
+}
+//]
+
+//[ foo
+/*` This is the [*['foo]] function. */
+std::string foo()
+{
+    // return 'em, foo man!
+    return "foo";
+}
+//]
+
+//[ foo_bar
+std::string foo_bar() /*< The /Mythical/ FooBar.
+                      See [@http://en.wikipedia.org/wiki/Foobar Foobar for details] >*/
+{
+    return "foo-bar"; /*< return 'em, foo-bar man! >*/
+}
+//]
+
+//[ class_
+class x
+{
+public:
+
+    /*<< Constructor >>*/
+    x() : n(0)
+    {
+    }
+
+    /*<< Destructor >>*/
+    ~x()
+    {
+    }
+
+    /*<< Get the `n` member variable >>*/
+    int get() const
+    {
+        return n; /*<- this will be ignored by quickbook ->*/
+    }
+
+    /*<< Set the `n` member variable >>*/
+    void set(int n_)
+    {
+        n = n_;
+    }
+//<- this will be ignored by quickbook
+private:
+
+    int n;
+//->
+};
+//]

+ 626 - 0
doc/test/test.qbk

@@ -0,0 +1,626 @@
+[article Document To Test Formatting
+    [quickbook 1.4]
+    [copyright 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias Capeletto]
+    [purpose Test Formatting Document]
+    [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 [Maddock, John], [de Guzman, Joel], [Niebler, Eric], [Capeletto, Matias] ]
+    [category math]
+    [/last-revision $Date: 2007-05-07 10:21:52 +0100 (Mon, 07 May 2007) $]
+]
+
+[include HTML4_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;''']
+
+[section Introduction]
+
+This document is purely a test case to test out HTML and PDF generation and style.
+
+This is some body text.
+
+    int main()
+    {
+        double d = 2.345;
+        return d;
+    }
+
+We can count in Greek too: [alpha], [beta], [gamma].
+
+Try some superscrips and subscripts: x[super 2], x[sub i][super 3], [alpha][super 2], 
+[beta][super [alpha]], [floor x], [floor [alpha]], [ceil a].
+
+[endsect]
+
+[section Code Blocks]
+
+[section Embedded code]
+
+These should be syntax highlighted:
+
+   #include <iostream>
+
+   int main()
+   {
+       // Sample code
+       std::cout << "Hello, World\n";
+       return 0;
+   }
+
+[endsect]
+
+[section Code With a Very Long Line]
+
+	template <class RealType> RealType inline foo(const RealType& a, const RealType& b, const RealType& c, const RealType& d, const RealType& e, const RealType& f, const RealType& g, const RealType& h){ return 0; }
+
+[endsect]
+
+[section Imported code and callouts]
+
+[import stub.cpp]
+
+Here's some code with left-placed callouts:
+
+[class_]
+
+And again with callouts placed exactly where we put them:
+
+[foo_bar]
+
+[endsect]
+
+[section Larger example]
+
+Now let's include a larger example, this may span several pages
+and should not be chopped off half way through... some FO processors
+get this wrong!
+
+   namespace boost{
+
+   template <class BidirectionalIterator>
+   class sub_match;
+
+   typedef sub_match<const char*>                    csub_match;
+   typedef sub_match<const wchar_t*>                 wcsub_match;
+   typedef sub_match<std::string::const_iterator>    ssub_match;
+   typedef sub_match<std::wstring::const_iterator>   wssub_match;
+
+   template <class BidirectionalIterator>
+   class sub_match : public std::pair<BidirectionalIterator, BidirectionalIterator>
+   {
+   public:
+      typedef typename iterator_traits<BidirectionalIterator>::value_type value_type;
+      typedef typename iterator_traits<BidirectionalIterator>::difference_type   difference_type;
+      typedef          BidirectionalIterator                                    iterator;
+
+      bool  matched;
+
+      difference_type length()const;
+      operator basic_string<value_type>()const;
+      basic_string<value_type> str()const;
+
+      int compare(const sub_match& s)const;
+      int compare(const basic_string<value_type>& s)const;
+      int compare(const value_type* s)const;
+   #ifdef BOOST_REGEX_MATCH_EXTRA
+      typedef implementation-private capture_sequence_type;
+      const capture_sequence_type& captures()const;
+   #endif
+   };
+   //
+   // comparisons to another sub_match:
+   //
+   template <class BidirectionalIterator>
+   bool operator == (const sub_match<BidirectionalIterator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator>
+   bool operator != (const sub_match<BidirectionalIterator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator>
+   bool operator < (const sub_match<BidirectionalIterator>& lhs,
+                  const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator>
+   bool operator <= (const sub_match<BidirectionalIterator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator>
+   bool operator >= (const sub_match<BidirectionalIterator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator>
+   bool operator > (const sub_match<BidirectionalIterator>& lhs,
+                  const sub_match<BidirectionalIterator>& rhs);
+
+
+   //
+   // comparisons to a basic_string:
+   //
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator == (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator != (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator < (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator > (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator >= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator <= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+                                             traits, 
+                                             Allocator>& lhs,
+                     const sub_match<BidirectionalIterator>& rhs);
+
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator == (const sub_match<BidirectionalIterator>& lhs,
+                     const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                             traits, 
+                                             Allocator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator != (const sub_match<BidirectionalIterator>& lhs,
+                     const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                             traits, 
+                                             Allocator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator < (const sub_match<BidirectionalIterator>& lhs,
+                  const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                          traits, 
+                                          Allocator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator > (const sub_match<BidirectionalIterator>& lhs,
+                  const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                          traits, 
+                                          Allocator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator >= (const sub_match<BidirectionalIterator>& lhs,
+                     const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                          traits, 
+                                          Allocator>& rhs);
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   bool operator <= (const sub_match<BidirectionalIterator>& lhs,
+                     const std::basic_string<iterator_traits<BidirectionalIterator>::value_type, 
+                                             traits, 
+                                             Allocator>& rhs);
+
+   //
+   // comparisons to a pointer to a character array:
+   //
+   template <class BidirectionalIterator> 
+   bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                  const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                  const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+
+   template <class BidirectionalIterator> 
+   bool operator == (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+   template <class BidirectionalIterator> 
+   bool operator != (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+   template <class BidirectionalIterator> 
+   bool operator < (const sub_match<BidirectionalIterator>& lhs,
+                  typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+   template <class BidirectionalIterator> 
+   bool operator > (const sub_match<BidirectionalIterator>& lhs,
+                  typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+   template <class BidirectionalIterator> 
+   bool operator >= (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+   template <class BidirectionalIterator> 
+   bool operator <= (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const* rhs); 
+
+   //
+   // comparisons to a single character:
+   //
+   template <class BidirectionalIterator> 
+   bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                  const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                  const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+                     const sub_match<BidirectionalIterator>& rhs); 
+
+   template <class BidirectionalIterator> 
+   bool operator == (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator != (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator < (const sub_match<BidirectionalIterator>& lhs,
+                  typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator > (const sub_match<BidirectionalIterator>& lhs,
+                  typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator >= (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   template <class BidirectionalIterator> 
+   bool operator <= (const sub_match<BidirectionalIterator>& lhs,
+                     typename iterator_traits<BidirectionalIterator>::value_type const& rhs); 
+   // 
+   // addition operators: 
+   //
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator> 
+      operator + (const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
+                                          traits, 
+                                          Allocator>& s, 
+                  const sub_match<BidirectionalIterator>& m); 
+   template <class BidirectionalIterator, class traits, class Allocator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
+      operator + (const sub_match<BidirectionalIterator>& m,
+                  const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, 
+                                          traits, 
+                                          Allocator>& s); 
+   template <class BidirectionalIterator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type> 
+      operator + (typename iterator_traits<BidirectionalIterator>::value_type const* s,
+                  const sub_match<BidirectionalIterator>& m); 
+   template <class BidirectionalIterator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type> 
+      operator + (const sub_match<BidirectionalIterator>& m,
+                  typename iterator_traits<BidirectionalIterator>::value_type const * s);
+   template <class BidirectionalIterator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type> 
+      operator + (typename iterator_traits<BidirectionalIterator>::value_type const& s,
+                  const sub_match<BidirectionalIterator>& m); 
+   template <class BidirectionalIterator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type> 
+      operator + (const sub_match<BidirectionalIterator>& m,
+                  typename iterator_traits<BidirectionalIterator>::value_type const& s); 
+   template <class BidirectionalIterator> 
+   std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type> 
+      operator + (const sub_match<BidirectionalIterator>& m1,
+                  const sub_match<BidirectionalIterator>& m2);
+
+   //
+   // stream inserter:
+   //
+   template <class charT, class traits, class BidirectionalIterator>
+   basic_ostream<charT, traits>&
+      operator << (basic_ostream<charT, traits>& os,
+                  const sub_match<BidirectionalIterator>& m);
+
+   } // namespace boost
+
+[endsect]
+
+[endsect]
+
+[section Basic Formatting]
+
+[section Font Styles]
+
+Here we go with some inline formatting: 
+['italic], [*bold], [_underline], [^teletype], [-strikethrough],
+we can combine styles as well: ['[*bold italic]], [_[^teletype with underline]].
+
+[endsect]
+
+[section Replaceable Text]
+
+Text that is intended to be user-replaceable is [~rendered like this].
+
+[endsect]
+
+[section Quotations]
+
+Here we go: ["A question that sometimes drives me hazy: am I or are the others crazy?]--Einstein
+
+Note the proper left and right quote marks. Also, while you can simply use ordinary quote marks like "quoted", our quotation, above, will generate correct DocBook quotations (e.g. <quote>quoted</quote>).
+
+Like all phrase elements, quotations may be nested. Example:
+
+["Here's the rule for bargains: ["Do other men, for they would do you.] That's
+the true business precept.]
+
+[endsect]
+
+[section Inline Code]
+
+This text has inlined code `int main() { return 0; }`  in it. 
+The code should be syntax highlighted.
+
+[endsect]
+
+[section Links]
+
+Try this: [@http://www.boost.org this is [*boost's] website....] it should
+be visible as a link.
+
+This is [@../../../boost/math/distributions.hpp a link to a header file (boost/math/distributions.hpp)],
+it should be rewritable and point to the website when built as a PDF.
+
+This is [@boost:libs/regex/index.html a link to another library's documentation (Boost.Regex)], using the boost: protocol,
+it should be rewritten to point to the website when building a PDF.
+
+This is [@boost:/libs/regex/index.html a link to another library's documentation (Boost.Regex)], using the boost:/ protocol,
+it should be rewritten to point to the website when building a PDF.
+
+This is [@../weighted_tail_quantile.hpp a relative link to a header file within the test source],
+it should be rewritten to point to the website when building a PDF.
+Although it might be on the website yet.
+
+[endsect]
+
+[section Footnotes]
+
+Here's one [footnote A sample footnote].
+
+And here's another [footnote Another sample footnote].
+
+[endsect]
+
+[section Blockquote]
+
+Lets indent the next paragraph:
+
+[:Here we go!!!]
+
+[endsect]
+
+[section Headings]
+
+Now try rendering some heading styles:
+
+[h1 Heading 1]
+
+[h2 Heading 2]
+
+[h3 Heading 3]
+
+[h4 Heading 4]
+
+[h5 Heading 5]
+
+[h6 Heading 6]
+
+[endsect]
+
+[endsect]
+
+[section Blurbs]
+
+[section Preformatted text]
+
+Here's some sample program output:
+
+[pre
+'''F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  65.549
+
+Sample 2:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  61.854
+
+Test Statistic                                         =  1.123
+
+CDF of test statistic:                                 =  8.148e-001
+Upper Critical Value at alpha:                         =  1.238e+000
+Upper Critical Value at alpha/2:                       =  1.289e+000
+Lower Critical Value at alpha:                         =  8.080e-001
+Lower Critical Value at alpha/2:                       =  7.756e-001
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis                                    Conclusion
+Standard deviations are unequal (two sided test)          REJECTED
+Standard deviation 1 is less than standard deviation 2    REJECTED
+Standard deviation 1 is greater than standard deviation 2 REJECTED'''
+]
+
+[endsect]
+
+[section Admonishments]
+
+There are four admonishments supported by Docbook XML:
+
+[note This is a note]
+
+[tip This is a tip]
+
+[important This is important]
+
+[caution This is a caution]
+
+[warning This is a warning
+
+They can contain more than one paragraph.
+]
+
+[endsect]
+
+[section Blurbs]
+
+[blurb [*An eye catching advertisement or note...]
+
+These should be rendered in a manner similar to admonishments.
+
+They can contain more than one paragraph.
+]
+
+[endsect]
+
+[endsect]
+
+[section Lists and Tables]
+
+[section Lists]
+
+A numbered list:
+
+# One
+# Two
+# Three
+    # Three.a
+    # Three.b
+    # Three.c
+# Four
+    # Four.a
+        # Four.a.i
+        # Four.a.ii
+# Five
+
+An unordered list:
+
+* First
+* Second
+* Third
+
+A mixture of the two:
+
+# 1
+    * 1.a
+        # 1.a.1
+        # 1.a.2
+    * 1.b
+# 2
+    * 2.a
+    * 2.b
+        # 2.b.1
+        # 2.b.2
+            * 2.b.2.a
+            * 2.b.2.b
+
+
+[endsect]
+
+[section Variable Lists]
+
+[variablelist A Variable List
+    [[term 1] [The definition of term 1]]
+    [[term 2] [The definition of term 2]]
+    [[term 3] [The definition of term 3]]
+]
+
+[endsect]
+
+[section Tables]
+
+Here's a big table with code and other tricky things:
+
+[table Notes on the Implementation of the Beta Distribution
+[[Function][Implementation Notes]]
+[[pdf]
+   [f(x;[alpha],[beta]) = x[super[alpha] - 1] (1 - x)[super[beta] -1] / B([alpha], [beta])
+
+    Implemented using ibeta_derivative(a, b, x).]]
+
+[[cdf][Using the incomplete beta function ibeta(a, b, x)]]
+[[cdf complement][ibetac(a, b, x)]]
+[[quantile][Using the inverse incomplete beta function ibeta_inv(a, b, p)]]
+[[quantile from the complement][ibetac_inv(a, b, q)]]
+[[mean][`a/(a+b)`]]
+[[variance][`a * b / (a+b)^2 * (a + b + 1)`]]
+[[mode][`(a-1) / (a + b + 2)`]]
+[[skewness][`2 (b-a) sqrt(a+b+1)/(a+b+2) * sqrt(a * b)`]]
+[[kurtosis excess][ [$images/beta_dist_kurtosis.png]  ]]
+[[kurtosis][`kurtosis + 3`]]
+[[parameter estimation][ ]]
+[[alpha
+
+   from mean and variance][`mean * (( (mean * (1 - mean)) / variance)- 1)`]]
+[[beta
+
+  from mean and variance][`(1 - mean) * (((mean * (1 - mean)) /variance)-1)`]]
+[[The member functions `estimate_alpha` and `estimate_beta`
+
+  from cdf and probability x
+  
+  and *either* `alpha` or `beta`]
+      [Implemented in terms of the inverse incomplete beta functions
+      
+ibeta_inva, and ibeta_invb respectively.]]
+[[`estimate_alpha`][`ibeta_inva(beta, x, probability)`]]
+[[`estimate_beta`][`ibeta_invb(alpha, x, probability)`]]
+]
+
+[endsect]
+
+[endsect]
+
+[section Images]
+
+These are tricky enough that they warrent their own section.
+
+Let's start with a PNG file that's set to 120dpi, it should render at 
+a sensible size in both html and PDF forms.  It should print OK too!
+
+[$images/digamma3.png]
+
+Now try again with a sample SVG image:
+
+[$images/open_clipart_library_logo.svg]
+
+
+[endsect]
+
+[include test_HTML4_symbols.qbk]
+
+[include remez.qbk]
+
+[section:array Array Example Boostbook XML Documentation]
+[xinclude array.xml]
+[xinclude array1.xml]
+[xinclude array2.xml]
+[xinclude array3.xml]
+[xinclude array4.xml]
+[endsect]
+
+[section:accumulators Accumulators Example Doxygen Documentation]
+[xinclude statsdoc.xml]
+[endsect]
+
+
+

+ 253 - 0
doc/test/test_HTML4_symbols.qbk

@@ -0,0 +1,253 @@
+[section:test test HTML4 symbols]
+[/ Examples of using all the Greek and Math symbols defined in HTML4_symbols.qbk]
+[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
+
+[/ Also some miscellaneous math charaters added to this list - see the end.]
+
+[/ To use, enclose the template name in square brackets.]
+
+[section test Greek and Math symbols]
+
+[fnof],
+[Alpha],
+[Beta],
+[Gamma],
+[Delta],
+[Epsilon],
+[Zeta],
+[Eta],
+[Theta],
+[Iota],
+[Kappa],
+[Lambda],
+[Mu],
+[Nu],
+[Xi],
+[Omicron],
+[Pi],
+[Rho],
+[Sigma],
+[Tau],
+[Upsilon],
+[Phi],
+[Chi],
+[Psi],
+[Omega],
+[alpha],
+[beta],
+[gamma],
+[delta],
+[epsilon],
+[zeta],
+[eta],
+[theta],
+[iota],
+[kappa],
+[lambda],
+[mu],
+[nu],
+[xi],
+[omicron],
+[pi],
+[rho],
+[sigmaf],
+[sigma],
+[tau],
+[upsilon],
+[phi],
+[chi],
+[psi],
+[omega],
+[thetasym],
+[upsih],
+[piv],
+[bull],
+[hellip],
+[prime],
+[Prime],
+[oline],
+[frasl],
+[weierp],
+[image],
+[real],
+[trade],
+[alefsym],
+[larr],
+[uarr],
+[rarr],
+[darr],
+[harr],
+[crarr],
+[lArr],
+[uArr],
+[rArr],
+[dArr],
+[hArr],
+[forall],
+[part],
+[exist],
+[empty],
+[nabla],
+[isin],
+[notin],
+[ni],
+[prod],
+[sum],
+[minus],
+[lowast],
+[radic],
+[prop],
+[infin],
+[ang],
+[and],
+[or],
+[cap],
+[cup],
+[int],
+[there4],
+[sim],
+[cong],
+[asymp],
+[ne],
+[equiv],
+[le],
+[ge],
+[subset],
+[superset],
+[nsubset],
+[sube],
+[supe],
+[oplus],
+[otimes],
+[perp],
+[sdot],
+[lceil],
+[rceil],
+[lfloor],
+[rfloor],
+[lang],
+[rang],
+[loz],
+[spades],
+[clubs],
+[hearts],
+[diams]
+
+[endsect]
+
+[section test Latin1 symbols]
+[/ Examples of using all the symbols defined in Latin1_symbols.qbk]
+[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
+
+[/ To use, enclose the template name in square brackets.]
+
+[nbsp],
+[iexcl],
+[cent],
+[pound],
+[curren],
+[yen],
+[brvbar],
+[sectsign],
+[uml],
+[copy],
+[ordf],
+[laquo],
+[not],
+[shy],
+[reg],
+[macron],
+[deg],
+[plusmn],
+[sup2],
+[cubed],
+[acute],
+[micro],
+[para],
+[middot],
+[cedil],
+[sup1],
+[ordm],
+[raquo],
+[frac14],
+[frac12],
+[frac34],
+[iquest],
+[Agrave],
+[Aacute],
+[Acirc],
+[Atilde],
+[Auml],
+[Aring],
+[AElig],
+[Ccedil],
+[Egrave],
+[Eacute],
+[Ecirc],
+[Euml],
+[Igrave],
+[Iacute],
+[Icirc],
+[Iuml],
+[ETH],
+[Ntilde],
+[Ograve],
+[Oacute],
+[Ocirc],
+[Otilde],
+[Ouml],
+[times],
+[Oslash],
+[Ugrave],
+[Uacute],
+[Ucirc],
+[Uuml],
+[Yacute],
+[THORN],
+[szlig],
+[agrave],
+[aacute],
+[acirc],
+[atilde],
+[auml],
+[aring],
+[aelig],
+[ccedil],
+[egrave],
+[eacute],
+[ecirc],
+[euml],
+[igrave],
+[iacute],
+[icirc],
+[iuml],
+[eth],
+[ntilde],
+[ograve],
+[oacute],
+[ocirc],
+[otilde],
+[ouml],
+[divide],
+[oslash],
+[ugrave],
+[uacute],
+[ucirc],
+[uuml],
+[yacute],
+[thorn],
+[yuml],
+
+[endsect]
+
+
+[endsect]
+
+[/ testsymbols.qbk
+  Copyright 2006 John Maddock and 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).
+]
+
+

+ 144 - 0
doc/test/weighted_tail_quantile.hpp

@@ -0,0 +1,144 @@
+///////////////////////////////////////////////////////////////////////////////
+// weighted_tail_quantile.hpp
+//
+//  Copyright 2006 Daniel Egloff, Olivier Gygi. 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)
+
+#ifndef BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_QUANTILE_HPP_DE_01_01_2006
+#define BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_QUANTILE_HPP_DE_01_01_2006
+
+#include <vector>
+#include <limits>
+#include <functional>
+#include <sstream>
+#include <stdexcept>
+#include <boost/throw_exception.hpp>
+#include <boost/parameter/keyword.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/accumulators/numeric/functional.hpp>
+#include <boost/accumulators/framework/depends_on.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
+#include <boost/accumulators/framework/extractor.hpp>
+#include <boost/accumulators/framework/parameters/sample.hpp>
+#include <boost/accumulators/statistics_fwd.hpp>
+#include <boost/accumulators/statistics/tail.hpp>
+#include <boost/accumulators/statistics/tail_quantile.hpp>
+#include <boost/accumulators/statistics/parameters/quantile_probability.hpp>
+
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable: 4127) // conditional expression is constant
+#endif
+
+namespace boost { namespace accumulators
+{
+
+namespace impl
+{
+    ///////////////////////////////////////////////////////////////////////////////
+    // weighted_tail_quantile_impl
+    //  Tail quantile estimation based on order statistics of weighted samples
+    /**
+        @brief Tail quantile estimation based on order statistics of weighted samples (for both left and right tails)
+
+        An estimator \f$\hat{q}\f$ of tail quantiles with level \f$\alpha\f$ based on order statistics
+        \f$X_{1:n} \leq X_{2:n} \leq\dots\leq X_{n:n}\f$ of weighted samples are given by \f$X_{\lambda:n}\f$ (left tail)
+        and \f$X_{\rho:n}\f$ (right tail), where
+
+            \f[
+                \lambda = \inf\left\{ l \left| \frac{1}{\bar{w}_n}\sum_{i=1}^{l} w_i \geq \alpha \right. \right\}
+            \f]
+
+        and
+
+            \f[
+                \rho = \sup\left\{ r \left| \frac{1}{\bar{w}_n}\sum_{i=r}^{n} w_i \geq (1 - \alpha) \right. \right\},
+            \f]
+
+        \f$n\f$ being the number of samples and \f$\bar{w}_n\f$ the sum of all weights.
+
+        @param quantile_probability
+    */
+    template<typename Sample, typename Weight, typename LeftRight>
+    struct weighted_tail_quantile_impl
+      : accumulator_base
+    {
+        typedef typename numeric::functional::average<Weight, std::size_t>::result_type float_type;
+        // for boost::result_of
+        typedef Sample result_type;
+
+        weighted_tail_quantile_impl(dont_care) {}
+
+        template<typename Args>
+        result_type result(Args const &args) const
+        {
+            float_type threshold = sum_of_weights(args)
+                             * ( ( is_same<LeftRight, left>::value ) ? args[quantile_probability] : 1. - args[quantile_probability] );
+
+            std::size_t n = 0;
+            Weight sum = Weight(0);
+
+            while (sum < threshold)
+            {
+                if (n < static_cast<std::size_t>(tail_weights(args).size()))
+                {
+                    sum += *(tail_weights(args).begin() + n);
+                    n++;
+                }
+                else
+                {
+                    if (std::numeric_limits<result_type>::has_quiet_NaN)
+                    {
+                        return std::numeric_limits<result_type>::quiet_NaN();
+                    }
+                    else
+                    {
+                        std::ostringstream msg;
+                        msg << "index n = " << n << " is not in valid range [0, " << tail(args).size() << ")";
+                        boost::throw_exception(std::runtime_error(msg.str()));
+                        return Sample(0);
+                    }
+                }
+            }
+
+            // Note that the cached samples of the left are sorted in ascending order,
+            // whereas the samples of the right tail are sorted in descending order
+            return *(boost::begin(tail(args)) + n - 1);
+        }
+    };
+} // namespace impl
+
+///////////////////////////////////////////////////////////////////////////////
+// tag::weighted_tail_quantile<>
+//
+namespace tag
+{
+    template<typename LeftRight>
+    struct weighted_tail_quantile
+      : depends_on<sum_of_weights, tail_weights<LeftRight> >
+    {
+        /// INTERNAL ONLY
+        typedef accumulators::impl::weighted_tail_quantile_impl<mpl::_1, mpl::_2, LeftRight> impl;
+    };
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// extract::weighted_tail_quantile
+//
+namespace extract
+{
+    extractor<tag::quantile> const weighted_tail_quantile = {};
+}
+
+using extract::weighted_tail_quantile;
+
+}} // namespace boost::accumulators
+
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif
+
+#endif

粤ICP备19079148号