diff options
author | Marshall Clow <marshall@idio.com> | 2013-02-04 18:11:49 +0000 |
---|---|---|
committer | Marshall Clow <marshall@idio.com> | 2013-02-04 18:11:49 +0000 |
commit | c0c0b8b5662dd74e4142142ecebc934e0b7e063a (patch) | |
tree | bfbb9655acf44c1afcb69d8cadc123cf41a1f6b1 /doc/test | |
parent | ce5e16b6ae28e66369cdcfc6c416db64fd0298ba (diff) | |
parent | 155b6aef1c172236d7b4f3f2c48ba29253ee55e7 (diff) | |
download | boost-c0c0b8b5662dd74e4142142ecebc934e0b7e063a.tar.gz |
Release 1.53.0
[SVN r82734]
Diffstat (limited to 'doc/test')
52 files changed, 6013 insertions, 0 deletions
diff --git a/doc/test/HTML4_symbols.qbk b/doc/test/HTML4_symbols.qbk new file mode 100644 index 0000000000..2af7241ff2 --- /dev/null +++ b/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[]'''〈'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)] +[template rang[]'''〉'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)] +[template loz[]'''◊'''] [/ ? lozenge] +[template spades[]'''♠'''] [/ ? black spade suit] +[template clubs[]'''♣'''] [/ ? black club suit = shamrock] +[template hearts[]'''♥'''] [/ ? black heart suit = valentine] +[template diams[]'''♦'''] [/ ? black diamond suit] + +[/ Other symbols, not in the HTML4 list:] +[template space[]''' '''] +[template plusminus[]'''±'''] [/ ? 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[]''' '''] [/ no-break space = non-breaking space] +[template iexcl[]'''¡'''] [/ inverted exclamation mark ] +[template cent[]'''¢'''] [/ cent sign ] +[template pound[]'''£'''] [/ pound sign ] +[template curren[]'''¤'''] [/ currency sign ] +[template yen[]'''¥'''] [/ yen sign = yuan sign ] +[template brvbar[]'''¦'''] [/ broken vertical bar ] +[template sectsign[]'''§'''] [/ section sign ] +[template uml[]'''¨'''] [/ diaeresis ] +[template copy[]'''©'''] [/ copyright ] +[template ordf[]'''ª'''] [/ feminine ordinal indicator ] +[template laquo[]'''«'''] [/ left-pointing double angle quotation mark = left pointing guillemet ] +[template not[]'''¬'''] [/ not sign ] +[template shy[]'''­'''] [/ soft hyphen = discretionary hyphen ] +[template reg[]'''®'''] [/ registered sign = registered trade mark sign ] +[template macron[]'''¯'''] [/ macron = spacing macron = overline = APL overbar ] +[template deg[]'''°'''] [/ degree sign ] +[template plusmn[]'''±'''] [/ plus-minus sign = plus-or-minus sign ] +[template sup2[]'''²'''] [/ superscript two = superscript digit two = squared ] +[template cubed[]'''³'''] [/ superscript three = superscript digit three = cubed ] +[template acute[]'''´'''] [/ acute accent = spacing acute ] +[template micro[]'''µ'''] [/ micro sign ] +[template para[]'''¶'''] [/ pilcrow sign = paragraph sign ] +[template middot[]'''·'''] [/ middle dot = Georgian comma = Greek middle dot ] +[template cedil[]'''¸'''] [/ cedilla = spacing cedilla ] +[template sup1[]'''¹'''] [/ superscript one = superscript digit one ] +[template ordm[]'''º'''] [/ masculine ordinal indicator ] +[template raquo[]'''»'''] [/ right-pointing double angle quotation mark = right pointing guillemet ] +[template frac14[]'''¼'''] [/ vulgar fraction one quarter = fraction one quarter ] +[template frac12[]'''½'''] [/ vulgar fraction one half = fraction one half ] +[template frac34[]'''¾'''] [/vulgar fraction three quarters = fraction three quarters ] +[template iquest[]'''¿'''] [/ inverted question mark = turned question mark ] +[template Agrave[]'''À'''] [/ Latin capital letter A with grave = Latin capital letter A grave ] +[template Aacute[]'''Á'''] [/ Latin capital letter A with acute = Latin capital letter A acute ] +[template Acirc[]'''Â'''] [/ Latin capital letter A with circumflex ] +[template Atilde[]'''Ã'''] [/Latin capital letter A with tilde ] +[template Auml[]'''Ä'''] [/ Latin capital letter A with diaeresis ] +[template Aring[]'''Å'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ] +[template AElig[]'''Æ'''] [/ Latin capital letter AE = Latin capital ligature AE ] +[template Ccedil[]'''Ç'''] [/ Latin capital letter C with cedilla ] +[template Egrave[]'''È'''] [/ Latin capital letter E with grave ] +[template Eacute[]'''É'''] [/ Latin capital letter E with acute ] +[template Ecirc[]'''Ê'''] [/ Latin capital letter E with circumflex ] +[template Euml[]'''Ë'''] [/ Latin capital letter E with diaeresis ] +[template Igrave[]'''Ì'''] [/ Latin capital letter I with grave ] +[template Iacute[]'''Í'''] [/ Latin capital letter I with acute ] +[template Icirc[]'''Î'''] [/ Latin capital letter I with circumflex ] +[template Iuml[]'''Ï'''] [/ Latin capital letter I with diaeresis ] +[template ETH[]'''Ð'''] [/ Latin capital letter ETH ] +[template Ntilde[]'''Ñ'''] [/ Latin capital letter N with tilde ] +[template Ograve[]'''Ò'''] [/ Latin capital letter O with grave] +[template Oacute[]'''Ó'''] [/ Latin capital letter O with acute ] +[template Ocirc[]'''Ô'''] [/ Latin capital letter O with circumflex ] +[template Otilde[]'''Õ'''] [/ Latin capital letter O with tilde ] +[template Ouml[]'''Ö'''] [/ Latin capital letter O with diaeresis ] +[template times[]'''×'''] [/ multiplication sign ] +[template Oslash[]'''Ø'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ] +[template Ugrave[]'''Ù'''] [/ Latin capital letter U with grave ] +[template Uacute[]'''Ú'''] [/ Latin capital letter U with acute ] +[template Ucirc[]'''Û'''] [/ Latin capital letter U with circumflex ] +[template Uuml[]'''Ü'''] [/ Latin capital letter U with diaeresis ] +[template Yacute[]'''Ý'''] [/ Latin capital letter Y with acute ] +[template THORN[]'''Þ'''] [/ Latin capital letter THORN ] +[template szlig[]'''ß'''] [/ Latin small letter sharp s = ess-zed ] +[template agrave[]'''à'''] [/ Latin small letter a with grave = Latin small letter a grave ] +[template aacute[]'''á'''] [/ Latin small letter a with acute ] +[template acirc[]'''â'''] [/ Latin small letter a with circumflex ] +[template atilde[]'''ã'''] [/ Latin small letter a with tilde ] +[template auml[]'''ä'''] [/ Latin small letter a with diaeresis ] +[template aring[]'''å'''] [/ Latin small letter a with ring above = Latin small letter a ring ] +[template aelig[]'''æ'''] [/ Latin small letter ae = Latin small ligature ae ] +[template ccedil[]'''ç'''] [/ Latin small letter c with cedilla ] +[template egrave[]'''è'''] [/ Latin small letter e with grave ] +[template eacute[]'''é'''] [/ Latin small letter e with acute ] +[template ecirc[]'''ê'''] [/ Latin small letter e with circumflex ] +[template euml[]'''ë'''] [/ Latin small letter e with diaeresis ] +[template igrave[]'''ì'''] [/ Latin small letter i with grave ] +[template iacute[]'''í'''] [/ Latin small letter i with acute ] +[template icirc[]'''î'''] [/ Latin small letter i with circumflex ] +[template iuml[]'''ï'''] [/ Latin small letter i with diaeresis ] +[template eth[]'''ð'''] [/ Latin small letter eth ] +[template ntilde[]'''ñ'''] [/ Latin small letter n with tilde ] +[template ograve[]'''ò'''] [/Latin small letter o with grave ] +[template oacute[]'''ó'''] [/ Latin small letter o with acute ] +[template ocirc[]'''ô'''] [/ Latin small letter o with circumflex ] +[template otilde[]'''õ'''] [/ Latin small letter o with tilde ] +[template ouml[]'''ö'''] [/ Latin small letter o with diaeresis ] +[template divide[]'''÷'''] [/ division sign ] +[template oslash[]'''ø'''] [/ Latin small letter o with stroke = Latin small letter o slash ] +[template ugrave[]'''ù'''] [/ Latin small letter u with grave ] +[template uacute[]'''ú'''] [/ Latin small letter u with acute ] +[template ucirc[]'''û'''] [/ Latin small letter u with circumflex ] +[template uuml[]'''ü'''] [/ Latin small letter u with diaeresis ] +[template yacute[]'''ý'''] [/ Latin small letter y with acute ] +[template thorn[]'''þ'''] [/ Latin small letter thorn ] +[template yuml[]'''ÿ'''] [/ Latin small letter y with diaeresis ] + + + diff --git a/doc/test/Jamfile.v2 b/doc/test/Jamfile.v2 new file mode 100644 index 0000000000..5ccd5ef916 --- /dev/null +++ b/doc/test/Jamfile.v2 @@ -0,0 +1,207 @@ +# 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.header.prefix=doc + <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=../../.. + <xsl:param>navig.graphics=1 + <xsl:param>boost.mathjax=1 + <xsl:path>$(images_location)/.. + + + # 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 pdfinstall : standalone/<format>pdf : <location>. <install-type>PDF ; +explicit pdfinstall ; diff --git a/doc/test/array.xml b/doc/test/array.xml new file mode 100644 index 0000000000..ce3f57e029 --- /dev/null +++ b/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<></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> + + + diff --git a/doc/test/array1.xml b/doc/test/array1.xml new file mode 100644 index 0000000000..253938bcff --- /dev/null +++ b/doc/test/array1.xml @@ -0,0 +1,511 @@ +<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><iterator> + </type> + </typedef> + <typedef name="const_reverse_iterator"> + <type> + <classname>std::reverse_iterator</classname><const_iterator> + </type> + </typedef> + <typedef name="reference"> + <type>T&</type> + </typedef> + <typedef name="const_reference"> + <type>const T&</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><U, N>&</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 < 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 >= 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 > 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 > 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><T, N>&</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&</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype><classname>array</classname><T, N>&</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</paramtype> + </parameter> + + <returns> + <simpara> + <code>!(x == y)</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</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>"> + <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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</paramtype> + </parameter> + + <returns> + <simpara> + <code>y < x</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</paramtype> + </parameter> + + <returns> + <simpara> + <code>!(y < x)</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><T, N>&</paramtype> + </parameter> + <parameter name="y"> + <paramtype>const <classname>array</classname><T, N>&</paramtype> + </parameter> + + <returns> + <simpara> + <code>!(x < y)</code> + </simpara> + </returns> + </function> + </free-function-group> + </class> + </namespace> + </header> +</library-reference> + diff --git a/doc/test/array2.xml b/doc/test/array2.xml new file mode 100644 index 0000000000..e2a90174c4 --- /dev/null +++ b/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><int,4> 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><int,4> 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> + + diff --git a/doc/test/array3.xml b/doc/test/array3.xml new file mode 100644 index 0000000000..1f370a0b68 --- /dev/null +++ b/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> + diff --git a/doc/test/array4.xml b/doc/test/array4.xml new file mode 100644 index 0000000000..f382e37ed0 --- /dev/null +++ b/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> diff --git a/doc/test/gold/boost/accumulators/extract/weighted_tail_quantile.html b/doc/test/gold/boost/accumulators/extract/weighted_tail_quantile.html new file mode 100644 index 0000000000..94c4c42d1c --- /dev/null +++ b/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=US-ASCII"> +<title>Global weighted_tail_quantile</title> +<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<link rel="home" href="../../../index.html" title="Document To Test Formatting"> +<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>"> +<link rel="prev" href="../../../document_to_test_formatting/accumulators.html" title="Accumulators Example Doxygen Documentation"> +<link rel="next" href="../impl/weighted_tail_quantile__id330053.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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../impl/weighted_tail_quantile__id330053.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="refentry"> +<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="comment">// In header: <<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>">doc/test/weighted_tail_quantile.hpp</a>> + +</span>extractor<span class="special"><</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span> <span class="special">></span> <span class="keyword">const</span> weighted_tail_quantile<span class="special">;</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="../../../document_to_test_formatting/accumulators.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../impl/weighted_tail_quantile__id330053.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id330053.html b/doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id330053.html new file mode 100644 index 0000000000..755abcb8eb --- /dev/null +++ b/doc/test/gold/boost/accumulators/impl/weighted_tail_quantile__id330053.html @@ -0,0 +1,91 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Struct template weighted_tail_quantile_impl</title> +<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<link rel="home" href="../../../index.html" title="Document To Test Formatting"> +<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../tag/weighted_tail_quantile.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="refentry"> +<a name="boost.accumulators.impl.weighted_tail_quantile__id330053"></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 — 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="comment">// In header: <<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>">doc/test/weighted_tail_quantile.hpp</a>> + +</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Sample<span class="special">,</span> <span class="keyword">typename</span> Weight<span class="special">,</span> <span class="keyword">typename</span> LeftRight<span class="special">></span> +<span class="keyword">struct</span> <a class="link" href="weighted_tail_quantile__id330053.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a> <span class="special">{</span> + <span class="comment">// types</span> + <span class="keyword">typedef</span> <span class="identifier">numeric</span><span class="special">::</span><span class="identifier">functional</span><span class="special">::</span><span class="identifier">average</span><span class="special"><</span> <span class="identifier">Weight</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="special">></span><span class="special">::</span><span class="identifier">result_type</span> <a name="boost.accumulators.impl.weighted_tail_quantile__id330053.float_type"></a><span class="identifier">float_type</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="identifier">Sample</span> <a name="boost.accumulators.impl.weighted_tail_quantile__id330053.result_type"></a><span class="identifier">result_type</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="weighted_tail_quantile__id330053.html#boost.accumulators.impl.weighted_tail_quantile__id330053construct-copy-destruct">construct/copy/destruct</a></span> + <a class="link" href="weighted_tail_quantile__id330053.html#id330297-bb"><span class="identifier">weighted_tail_quantile_impl</span></a><span class="special">(</span><span class="identifier">dont_care</span><span class="special">)</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="weighted_tail_quantile__id330053.html#id330273-bb">public member functions</a></span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Args<span class="special">></span> <span class="identifier">result_type</span> <a class="link" href="weighted_tail_quantile__id330053.html#id330277-bb"><span class="identifier">result</span></a><span class="special">(</span><span class="identifier">Args</span> <span class="keyword">const</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> +<span class="special">}</span><span class="special">;</span></pre></div> +<div class="refsect1"> +<a name="id779890"></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="id779998"></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="id780026"></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"> +<a name="id780095"></a><h3> +<a name="boost.accumulators.impl.weighted_tail_quantile__id330053construct-copy-destruct"></a><code class="computeroutput">weighted_tail_quantile_impl</code> + public + construct/copy/destruct</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><a name="id330297-bb"></a><span class="identifier">weighted_tail_quantile_impl</span><span class="special">(</span><span class="identifier">dont_care</span><span class="special">)</span><span class="special">;</span></pre></li></ol></div> +</div> +<div class="refsect2"> +<a name="id780149"></a><h3> +<a name="id330273-bb"></a><code class="computeroutput">weighted_tail_quantile_impl</code> public member functions</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Args<span class="special">></span> <span class="identifier">result_type</span> <a name="id330277-bb"></a><span class="identifier">result</span><span class="special">(</span><span class="identifier">Args</span> <span class="keyword">const</span> <span class="special">&</span> args<span class="special">)</span> <span class="keyword">const</span><span class="special">;</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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../tag/weighted_tail_quantile.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/boost/accumulators/tag/weighted_tail_quantile.html b/doc/test/gold/boost/accumulators/tag/weighted_tail_quantile.html new file mode 100644 index 0000000000..07d6e6a75e --- /dev/null +++ b/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=US-ASCII"> +<title>Struct template weighted_tail_quantile</title> +<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<link rel="home" href="../../../index.html" title="Document To Test Formatting"> +<link rel="up" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>"> +<link rel="prev" href="../impl/weighted_tail_quantile__id330053.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__id330053.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a> +</div> +<div class="refentry"> +<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="comment">// In header: <<a class="link" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp" title="Header <doc/test/weighted_tail_quantile.hpp>">doc/test/weighted_tail_quantile.hpp</a>> + +</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> LeftRight<span class="special">></span> +<span class="keyword">struct</span> <a class="link" href="weighted_tail_quantile.html" title="Struct template weighted_tail_quantile">weighted_tail_quantile</a> <span class="special">:</span> <span class="keyword">public</span> boost::accumulators::depends_on< sum_of_weights, tail_weights< LeftRight > > +<span class="special">{</span> +<span class="special">}</span><span class="special">;</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="../impl/weighted_tail_quantile__id330053.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../document_to_test_formatting/accumulators.html#header.doc.test.weighted_tail_quantile_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/boost/array.html b/doc/test/gold/boost/array.html new file mode 100644 index 0000000000..2e54887fb0 --- /dev/null +++ b/doc/test/gold/boost/array.html @@ -0,0 +1,559 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Class template array</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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 <boost/array.hpp>"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../document_to_test_formatting/array.html#header.boost.array_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../document_to_test_formatting/accumulators.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="refentry"> +<a name="boost.array"></a><div class="titlepage"></div> +<div class="refnamediv"> +<h2><span class="refentrytitle">Class template array</span></h2> +<p>boost::array — 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="comment">// In header: <<a class="link" href="../document_to_test_formatting/array.html#header.boost.array_hpp" title="Header <boost/array.hpp>">boost/array.hpp</a>> + +</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> +<span class="keyword">class</span> <a class="link" href="array.html" title="Class template array">array</a> <span class="special">{</span> +<span class="keyword">public</span><span class="special">:</span> + <span class="comment">// types</span> + <span class="keyword">typedef</span> <span class="identifier">T</span> <a name="boost.array.value_type"></a><span class="identifier">value_type</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">*</span> <a name="boost.array.iterator"></a><span class="identifier">iterator</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <a name="boost.array.const_iterator"></a><span class="identifier">const_iterator</span><span class="special">;</span> + <span class="keyword">typedef</span> + std::reverse_iterator<span class="special"><</span><span class="identifier">iterator</span><span class="special">></span> + <a name="boost.array.reverse_iterator"></a><span class="identifier">reverse_iterator</span><span class="special">;</span> + <span class="keyword">typedef</span> + std::reverse_iterator<span class="special"><</span><span class="identifier">const_iterator</span><span class="special">></span> + <a name="boost.array.const_reverse_iterator"></a><span class="identifier">const_reverse_iterator</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="identifier">T</span><span class="special">&</span> <a name="boost.array.reference"></a><span class="identifier">reference</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <a name="boost.array.const_reference"></a><span class="identifier">const_reference</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="boost.array.size_type"></a><span class="identifier">size_type</span><span class="special">;</span> + <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <a name="boost.array.difference_type"></a><span class="identifier">difference_type</span><span class="special">;</span> + + <span class="comment">// static constants</span> + <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">size_type</span> <span class="identifier">static_size</span> = <span class="identifier">N</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#boost.arrayconstruct-copy-destruct">construct/copy/destruct</a></span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span> array& <a class="link" href="array.html#id330673-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#id330714-bb">iterator support</a></span> + <span class="identifier">iterator</span> <a class="link" href="array.html#id330722-bb"><span class="identifier">begin</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_iterator</span> <a class="link" href="array.html#id330729-bb"><span class="identifier">begin</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">iterator</span> <a class="link" href="array.html#id330755-bb"><span class="identifier">end</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_iterator</span> <a class="link" href="array.html#id330761-bb"><span class="identifier">end</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#id330785-bb">reverse iterator support</a></span> + <span class="identifier">reverse_iterator</span> <a class="link" href="array.html#id330793-bb"><span class="identifier">rbegin</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reverse_iterator</span> <a class="link" href="array.html#id330800-bb"><span class="identifier">rbegin</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">reverse_iterator</span> <a class="link" href="array.html#id330821-bb"><span class="identifier">rend</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reverse_iterator</span> <a class="link" href="array.html#id330827-bb"><span class="identifier">rend</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#id330844-bb">capacity</a></span> + <span class="identifier">size_type</span> <a class="link" href="array.html#id330848-bb"><span class="identifier">size</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">bool</span> <a class="link" href="array.html#id330866-bb"><span class="identifier">empty</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">size_type</span> <a class="link" href="array.html#id330890-bb"><span class="identifier">max_size</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#id330915-bb">element access</a></span> + <span class="identifier">reference</span> <a class="link" href="array.html#id330923-bb"><span class="keyword">operator</span><span class="special">[</span><span class="special">]</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reference</span> <a class="link" href="array.html#id330938-bb"><span class="keyword">operator</span><span class="special">[</span><span class="special">]</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">reference</span> <a class="link" href="array.html#id330986-bb"><span class="identifier">at</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reference</span> <a class="link" href="array.html#id331001-bb"><span class="identifier">at</span></a><span class="special">(</span><span class="identifier">size_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">reference</span> <a class="link" href="array.html#id331061-bb"><span class="identifier">front</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reference</span> <a class="link" href="array.html#id331069-bb"><span class="identifier">front</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">reference</span> <a class="link" href="array.html#id331115-bb"><span class="identifier">back</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">const_reference</span> <a class="link" href="array.html#id331123-bb"><span class="identifier">back</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <a class="link" href="array.html#id331165-bb"><span class="identifier">data</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> + <span class="identifier">T</span><span class="special">*</span> <a class="link" href="array.html#id331198-bb"><span class="identifier">c_array</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> + + <span class="comment">// <a class="link" href="array.html#id331230-bb">modifiers</a></span> + <span class="keyword">void</span> <a class="link" href="array.html#id331235-bb"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">void</span> <a class="link" href="array.html#id331296-bb"><span class="identifier">assign</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="identifier">T</span> elems[N]<span class="special">;</span> +<span class="special">}</span><span class="special">;</span> + +<span class="comment">// <a class="link" href="array.html#id331348-bb">specialized algorithms</a></span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> <span class="keyword">void</span> <a class="link" href="array.html#boost.array.swap"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + +<span class="comment">// <a class="link" href="array.html#id331434-bb">comparisons</a></span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator=="><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator!="><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator_id331592"><span class="keyword">operator</span><span class="special"><</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator_id331679"><span class="keyword">operator</span><span class="special">></span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator_=_id331750"><span class="keyword">operator</span><span class="special"><=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="array.html#boost.array.operator_=_id332091"><span class="keyword">operator</span><span class="special">>=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span></pre></div> +<div class="refsect1"> +<a name="id776025"></a><h2>Description</h2> +<div class="refsect2"> +<a name="id776028"></a><h3> +<a name="boost.arrayconstruct-copy-destruct"></a><code class="computeroutput">array</code> + public + construct/copy/destruct</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> U<span class="special">></span> array& <a name="id330673-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">U</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></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#id330718-bb">begin</a>(),rhs.<a class="link" href="array.html#id330751-bb">end</a>(), <a class="link" href="array.html#id330718-bb">begin</a>()) + </code> + </td> +</tr></tbody> +</table></div> +</li></ol></div> +</div> +<div class="refsect2"> +<a name="id776182"></a><h3> +<a name="id330714-bb"></a><code class="computeroutput">array</code> iterator support</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><a name="id330718-bb"></a><span class="identifier">iterator</span> <a name="id330722-bb"></a><span class="identifier">begin</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_iterator</span> <a name="id330729-bb"></a><span class="identifier">begin</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 class="listitem"> +<pre class="literallayout"><a name="id330751-bb"></a><span class="identifier">iterator</span> <a name="id330755-bb"></a><span class="identifier">end</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_iterator</span> <a name="id330761-bb"></a><span class="identifier">end</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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"> +<a name="id776385"></a><h3> +<a name="id330785-bb"></a><code class="computeroutput">array</code> reverse iterator support</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><a name="id330789-bb"></a><span class="identifier">reverse_iterator</span> <a name="id330793-bb"></a><span class="identifier">rbegin</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reverse_iterator</span> <a name="id330800-bb"></a><span class="identifier">rbegin</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 class="listitem"> +<pre class="literallayout"><a name="id330817-bb"></a><span class="identifier">reverse_iterator</span> <a name="id330821-bb"></a><span class="identifier">rend</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reverse_iterator</span> <a name="id330827-bb"></a><span class="identifier">rend</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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"> +<a name="id776574"></a><h3> +<a name="id330844-bb"></a><code class="computeroutput">array</code> capacity</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><span class="identifier">size_type</span> <a name="id330848-bb"></a><span class="identifier">size</span><span class="special">(</span><span class="special">)</span><span class="special">;</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">N</code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">bool</span> <a name="id330866-bb"></a><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span><span class="special">;</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">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 class="listitem"> +<pre class="literallayout"><span class="identifier">size_type</span> <a name="id330890-bb"></a><span class="identifier">max_size</span><span class="special">(</span><span class="special">)</span><span class="special">;</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">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"> +<a name="id776761"></a><h3> +<a name="id330915-bb"></a><code class="computeroutput">array</code> element access</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><a name="id330919-bb"></a><span class="identifier">reference</span> <a name="id330923-bb"></a><span class="keyword">operator</span><span class="special">[</span><span class="special">]</span><span class="special">(</span><span class="identifier">size_type</span> i<span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reference</span> <a name="id330938-bb"></a><span class="keyword">operator</span><span class="special">[</span><span class="special">]</span><span class="special">(</span><span class="identifier">size_type</span> i<span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 < 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 class="listitem"> +<pre class="literallayout"><a name="id330982-bb"></a><span class="identifier">reference</span> <a name="id330986-bb"></a><span class="identifier">at</span><span class="special">(</span><span class="identifier">size_type</span> i<span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reference</span> <a name="id331001-bb"></a><span class="identifier">at</span><span class="special">(</span><span class="identifier">size_type</span> i<span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 >= N</code> + </td> +</tr> +</tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><a name="id331056-bb"></a><span class="identifier">reference</span> <a name="id331061-bb"></a><span class="identifier">front</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reference</span> <a name="id331069-bb"></a><span class="identifier">front</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 > 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 class="listitem"> +<pre class="literallayout"><a name="id331110-bb"></a><span class="identifier">reference</span> <a name="id331115-bb"></a><span class="identifier">back</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> +<span class="identifier">const_reference</span> <a name="id331123-bb"></a><span class="identifier">back</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 > 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 class="listitem"> +<pre class="literallayout"><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <a name="id331165-bb"></a><span class="identifier">data</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</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 class="listitem"> +<pre class="literallayout"><span class="identifier">T</span><span class="special">*</span> <a name="id331198-bb"></a><span class="identifier">c_array</span><span class="special">(</span><span class="special">)</span><span class="special">;</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> +</ol></div> +</div> +<div class="refsect2"> +<a name="id777380"></a><h3> +<a name="id331230-bb"></a><code class="computeroutput">array</code> modifiers</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">void</span> <a name="id331235-bb"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></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#id330718-bb">begin</a>(), <a class="link" href="array.html#id330751-bb">end</a>(), other.<a class="link" href="array.html#id330718-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 class="listitem"> +<pre class="literallayout"><span class="keyword">void</span> <a name="id331296-bb"></a><span class="identifier">assign</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> value<span class="special">)</span><span class="special">;</span></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#id330718-bb">begin</a>(), N, value) + </code> + </td> +</tr></tbody> +</table></div> +</li> +</ol></div> +</div> +<div class="refsect2"> +<a name="id777592"></a><h3> +<a name="id331348-bb"></a><code class="computeroutput">array</code> specialized algorithms</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> <span class="keyword">void</span> <a name="boost.array.swap"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</span></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#id331235-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"> +<a name="id777791"></a><h3> +<a name="id331434-bb"></a><code class="computeroutput">array</code> comparisons</h3> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator=="></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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"> + std::equal(x.<a class="link" href="array.html#id330718-bb">begin</a>(), x.<a class="link" href="array.html#id330751-bb">end</a>(), y.<a class="link" href="array.html#id330718-bb">begin</a>()) + </code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator!="></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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">!(x == y)</code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator_id331592"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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"> + std::lexicographical_compare(x.<a class="link" href="array.html#id330718-bb">begin</a>(), x.<a class="link" href="array.html#id330751-bb">end</a>(), y.<a class="link" href="array.html#id330718-bb">begin</a>(), y.<a class="link" href="array.html#id330751-bb">end</a>()) + </code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator_id331679"></a><span class="keyword">operator</span><span class="special">></span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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">y < x</code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator_=_id331750"></a><span class="keyword">operator</span><span class="special"><=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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">!(y < x)</code> + </td> +</tr></tbody> +</table></div> +</li> +<li class="listitem"> +<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a name="boost.array.operator_=_id332091"></a><span class="keyword">operator</span><span class="special">>=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> x<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span> y<span class="special">)</span><span class="special">;</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">!(x < 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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../document_to_test_formatting/array.html#header.boost.array_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../document_to_test_formatting/accumulators.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/accumulators.html b/doc/test/gold/document_to_test_formatting/accumulators.html new file mode 100644 index 0000000000..b05c11bfec --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/accumulators.html @@ -0,0 +1,69 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Accumulators Example Doxygen Documentation</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/accumulators/extract/weighted_tail_quantile.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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"> +<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.doc.test.weighted_tail_quantile_hpp">Header <doc/test/weighted_tail_quantile.hpp></a></span></dt></dl></div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="header.doc.test.weighted_tail_quantile_hpp"></a>Header <<a href="../../../../doc/test/weighted_tail_quantile.hpp" target="_top">doc/test/weighted_tail_quantile.hpp</a>></h4></div></div></div> +<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">accumulators</span> <span class="special">{</span> + <span class="keyword">namespace</span> <span class="identifier">extract</span> <span class="special">{</span> + extractor<span class="special"><</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">quantile</span> <span class="special">></span> <span class="keyword">const</span> <a class="link" href="../boost/accumulators/extract/weighted_tail_quantile.html" title="Global weighted_tail_quantile">weighted_tail_quantile</a><span class="special">;</span> + <span class="special">}</span> + <span class="keyword">namespace</span> <span class="identifier">impl</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Sample<span class="special">,</span> <span class="keyword">typename</span> Weight<span class="special">,</span> <span class="keyword">typename</span> LeftRight<span class="special">></span> + <span class="keyword">struct</span> <a class="link" href="../boost/accumulators/impl/weighted_tail_quantile__id330053.html" title="Struct template weighted_tail_quantile_impl">weighted_tail_quantile_impl</a><span class="special">;</span> + <span class="special">}</span> + <span class="keyword">namespace</span> <span class="identifier">tag</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> LeftRight<span class="special">></span> <span class="keyword">struct</span> <a class="link" href="../boost/accumulators/tag/weighted_tail_quantile.html" title="Struct template weighted_tail_quantile">weighted_tail_quantile</a><span class="special">;</span> + <span class="special">}</span> + <span class="special">}</span> +<span class="special">}</span></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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/accumulators/extract/weighted_tail_quantile.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/array.html b/doc/test/gold/document_to_test_formatting/array.html new file mode 100644 index 0000000000..b49a79825f --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/array.html @@ -0,0 +1,226 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Array Example Boostbook XML Documentation</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/array.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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#id772287">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"> +<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<></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 class="itemizedlist" type="disc" compact> +<li class="listitem">No constructors are provided.</li> +<li class="listitem">Elements may have an undetermined initial value (see <a class="xref" href="array.html#array.rationale" title="Design Rationale">the section called “Design Rationale”</a>).</li> +<li class="listitem"> +<code class="computeroutput"><a class="link" href="../boost/array.html#boost.array.swap">swap</a></code>() has no constant complexity.</li> +<li class="listitem"> +<code class="computeroutput"><a class="link" href="../boost/array.html#id330848-bb">size</a></code>() is always constant, based on the second template argument of the type.</li> +<li class="listitem">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 class="itemizedlist" type="disc" compact> +<li class="listitem"> +<code class="computeroutput"><a class="link" href="../boost/array.html#id331056-bb">front</a></code>() and <code class="computeroutput"><a class="link" href="../boost/array.html#id331110-bb">back</a></code>() are provided.</li> +<li class="listitem"> +<code class="computeroutput"><a class="link" href="../boost/array.html#id330919-bb">operator[]</a></code> and <code class="computeroutput"><a class="link" href="../boost/array.html#id330982-bb">at</a></code>() are provided.</li> +</ul></div> +<p> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="id772287"></a>Reference</h3></div></div></div> +<div class="toc"><dl><dt><span class="section"><a href="array.html#header.boost.array_hpp">Header <boost/array.hpp></a></span></dt></dl></div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="header.boost.array_hpp"></a>Header <<a href="../../../../boost/array.hpp" target="_top">boost/array.hpp</a>></h4></div></div></div> +<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> <span class="keyword">void</span> <a class="link" href="../boost/array.html#boost.array.swap"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator=="><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator!="><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator_id331592"><span class="keyword">operator</span><span class="special"><</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator_id331679"><span class="keyword">operator</span><span class="special">></span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator_=_id331750"><span class="keyword">operator</span><span class="special"><=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> N<span class="special">></span> + <span class="keyword">bool</span> <a class="link" href="../boost/array.html#boost.array.operator_=_id332091"><span class="keyword">operator</span><span class="special">>=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../boost/array.html" title="Class template array">array</a><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span><span class="special">&</span><span class="special">)</span><span class="special">;</span> +<span class="special">}</span></pre> +</div> +</div> +<div class="section"> +<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 class="itemizedlist" type="disc"><li class="listitem"> +<p class="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: + </p> +<pre class="programlisting"> + <code class="computeroutput"><a class="link" href="../boost/array.html" title="Class template array">boost::array</a></code><int,4> a = { { 1, 2, 3 } }; + </pre> +<p class="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). + </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 class="itemizedlist" type="disc"> +<li class="listitem">No user-declared constructors.</li> +<li class="listitem">No private or protected non-static data members.</li> +<li class="listitem">No base classes.</li> +<li class="listitem">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><int,4> 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"> +<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"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/array.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/basic_formatting.html b/doc/test/gold/document_to_test_formatting/basic_formatting.html new file mode 100644 index 0000000000..2b2c74c976 --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/basic_formatting.html @@ -0,0 +1,208 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Basic Formatting</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="blurbs.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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"> +<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"> +<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"> +<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: <span class="quote">“<span class="quote">A question that sometimes drives me hazy: am I or are + the others crazy?</span>”</span>--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. <quote>quoted</quote>). + </p> +<p> + Like all phrase elements, quotations may be nested. Example: + </p> +<p> + <span class="quote">“<span class="quote">Here's the rule for bargains: <span class="quote">‘<span class="quote">Do other men, for they would + do you.</span>’</span> That's the true business precept.</span>”</span> + </p> +</div> +<div class="section"> +<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"> +<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> +<p> + This is <a href="../../../../boost/math/distributions.hpp" target="_top">a link to a header + file (boost/math/distributions.hpp)</a>, it should be rewritable and + point to the website when built as a PDF. + </p> +<p> + This is <a href="../../../../libs/regex/index.html" target="_top">a link to another library's + documentation (Boost.Regex)</a>, using the boost: protocol, it should + be rewritten to point to the website when building a PDF. + </p> +<p> + This is <a href="../../../../libs/regex/index.html" target="_top">a link to another library's + documentation (Boost.Regex)</a>, using the boost:/ protocol, it should + be rewritten to point to the website when building a PDF. + </p> +<p> + This is <a href="../../weighted_tail_quantile.hpp" target="_top">a relative link to a header + file within the test source</a>, it should be rewritten to point to the + website when building a PDF. Although it might be on the website yet. + </p> +</div> +<div class="section"> +<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="id769038" href="#ftn.id769038" class="footnote">1</a>]</sup>. + </p> +<p> + And here's another <sup>[<a name="id769049" href="#ftn.id769049" class="footnote">2</a>]</sup>. + </p> +</div> +<div class="section"> +<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> + Here we go!!! + </p></blockquote></div> +</div> +<div class="section"> +<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="id769109"></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="id769128"></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="id769146"></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="id769165"></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="id769183"></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="id769201"></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.id769038" href="#id769038" class="para">1</a>] </sup> + A sample footnote + </p></div> +<div class="footnote"><p><sup>[<a name="ftn.id769049" href="#id769049" 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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="blurbs.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/blurbs.html b/doc/test/gold/document_to_test_formatting/blurbs.html new file mode 100644 index 0000000000..44843dc40c --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/blurbs.html @@ -0,0 +1,160 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Blurbs</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="lists_and_tables.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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"> +<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"> +<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/src/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/src/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/src/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/src/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/src/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"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="lists_and_tables.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/code_blocks.html b/doc/test/gold/document_to_test_formatting/code_blocks.html new file mode 100644 index 0000000000..fefa9e089e --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/code_blocks.html @@ -0,0 +1,426 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Code Blocks</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="basic_formatting.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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.code_with_a_very_long_line">Code + With a Very Long Line</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"> +<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"><</span><span class="identifier">iostream</span><span class="special">></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"><<</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"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="document_to_test_formatting.code_blocks.code_with_a_very_long_line"></a><a class="link" href="code_blocks.html#document_to_test_formatting.code_blocks.code_with_a_very_long_line" title="Code With a Very Long Line">Code + With a Very Long Line</a> +</h3></div></div></div> +<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">></span> <span class="identifier">RealType</span> <span class="keyword">inline</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">c</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">d</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">e</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">f</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">RealType</span><span class="special">&</span> <span class="identifier">h</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"> +<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> +<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> + + <a class="co" name="document_to_test_formatting0co" href="code_blocks.html#document_to_test_formatting0"><img src="../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a><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> + + <a class="co" name="document_to_test_formatting1co" href="code_blocks.html#document_to_test_formatting1"><img src="../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a><span class="special">~</span><span class="identifier">x</span><span class="special">()</span> + <span class="special">{</span> + <span class="special">}</span> + + <a class="co" name="document_to_test_formatting2co" href="code_blocks.html#document_to_test_formatting2"><img src="../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a><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> + + <a class="co" name="document_to_test_formatting3co" href="code_blocks.html#document_to_test_formatting3"><img src="../../../../doc/src/images/callouts/4.png" alt="4" border="0"></a><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> +<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="../../../../doc/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_formatting1"></a><a href="#document_to_test_formatting1co"><img src="../../../../doc/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_formatting2"></a><a href="#document_to_test_formatting2co"><img src="../../../../doc/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_formatting3"></a><a href="#document_to_test_formatting3co"><img src="../../../../doc/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> + And again with callouts placed exactly where we put them: + </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> <a class="co" name="document_to_test_formatting4co" href="code_blocks.html#document_to_test_formatting4"><img src="../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a> +<span class="special">{</span> + <span class="keyword">return</span> <span class="string">"foo-bar"</span><span class="special">;</span> <a class="co" name="document_to_test_formatting5co" href="code_blocks.html#document_to_test_formatting5"><img src="../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a> +<span class="special">}</span> +</pre> +<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_formatting4"></a><a href="#document_to_test_formatting4co"><img src="../../../../doc/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_formatting5"></a><a href="#document_to_test_formatting5co"><img src="../../../../doc/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> +</div> +<div class="section"> +<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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*></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"><</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*></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"><</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">></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"><</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">></span> <span class="identifier">wssub_match</span><span class="special">;</span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">value_type</span><span class="special">>()</span><span class="keyword">const</span><span class="special">;</span> + <span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">value_type</span><span class="special">></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">&</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"><</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="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">&</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> + +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">rhs</span><span class="special">);</span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">lhs</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">// addition operators: +</span><span class="comment">// +</span><span class="keyword">template</span> <span class="special"><</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">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">></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"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">s</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</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">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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">>&</span> <span class="identifier">s</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">);</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</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"><</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>::</span><span class="identifier">value_type</span><span class="special">></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"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</span> <span class="identifier">m1</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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"><</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">></span> +<span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> + <span class="keyword">operator</span> <span class="special"><<</span> <span class="special">(</span><span class="identifier">basic_ostream</span><span class="special"><</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">>&</span> <span class="identifier">os</span><span class="special">,</span> + <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special"><</span><span class="identifier">BidirectionalIterator</span><span class="special">>&</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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="basic_formatting.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/images.html b/doc/test/gold/document_to_test_formatting/images.html new file mode 100644 index 0000000000..8303d68f60 --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/images.html @@ -0,0 +1,60 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Images</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="test.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="test.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/lists_and_tables.html b/doc/test/gold/document_to_test_formatting/lists_and_tables.html new file mode 100644 index 0000000000..b372e4f430 --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/lists_and_tables.html @@ -0,0 +1,459 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Lists and Tables</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="images.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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"> +<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 class="orderedlist" type="1"> +<li class="listitem"> + One + </li> +<li class="listitem"> + Two + </li> +<li class="listitem"> + Three + <div class="orderedlist"><ol class="orderedlist" type="a"> +<li class="listitem"> + Three.a + </li> +<li class="listitem"> + Three.b + </li> +<li class="listitem"> + Three.c + </li> +</ol></div> + </li> +<li class="listitem"> + Four + <div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"> + Four.a + <div class="orderedlist"><ol class="orderedlist" type="i"> +<li class="listitem"> + Four.a.i + </li> +<li class="listitem"> + Four.a.ii + </li> +</ol></div> + </li></ol></div> + </li> +<li class="listitem"> + Five + </li> +</ol></div> +<p> + An unordered list: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + First + </li> +<li class="listitem"> + Second + </li> +<li class="listitem"> + Third + </li> +</ul></div> +<p> + A mixture of the two: + </p> +<div class="orderedlist"><ol class="orderedlist" type="1"> +<li class="listitem"> + 1 + <div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + 1.a + <div class="orderedlist"><ol class="orderedlist" type="a"> +<li class="listitem"> + 1.a.1 + </li> +<li class="listitem"> + 1.a.2 + </li> +</ol></div> + </li> +<li class="listitem"> + 1.b + </li> +</ul></div> + </li> +<li class="listitem"> + 2 + <div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + 2.a + </li> +<li class="listitem"> + 2.b + <div class="orderedlist"><ol class="orderedlist" type="a"> +<li class="listitem"> + 2.b.1 + </li> +<li class="listitem"> + 2.b.2 + <div class="itemizedlist"><ul class="itemizedlist" type="circle"> +<li class="listitem"> + 2.b.2.a + </li> +<li class="listitem"> + 2.b.2.b + </li> +</ul></div> + </li> +</ol></div> + </li> +</ul></div> + </li> +</ol></div> +</div> +<div class="section"> +<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"> +<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="id769721"></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;α,β) = x<sup>α - 1</sup> (1 - x)<sup>β -1</sup> / B(α, β) + </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> + </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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="images.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/remez.html b/doc/test/gold/document_to_test_formatting/remez.html new file mode 100644 index 0000000000..e8b89f1969 --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/remez.html @@ -0,0 +1,535 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Sample Article (The Remez Method)</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="array.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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 class="itemizedlist" type="disc"> +<li class="listitem"> + 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 class="listitem"> + The error function has N+1 roots, and N+2 extrema (minima and maxima). + </li> +<li class="listitem"> + 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="id771060"></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/src/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="id771248"></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="id771342"></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="id771387"></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="id771441"></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="id771550"></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="id771737"></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 class="itemizedlist" type="disc"> +<li class="listitem"> + Is the function smooth enough? Can it be better separated into a rapidly + changing part, and an asymptotic part? + </li> +<li class="listitem"> + 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 class="listitem"> + 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 class="listitem"> + Try skewing the initial interpolated approximation to minimise the error + before you begin the Remez steps. + </li> +<li class="listitem"> + If the approximation won't converge or is ill-conditioned from one starting + location, try starting from a different location. + </li> +<li class="listitem"> + 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 class="listitem"> + 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 class="listitem"> + 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="id771857"></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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="array.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/document_to_test_formatting/test.html b/doc/test/gold/document_to_test_formatting/test.html new file mode 100644 index 0000000000..beb278dd1b --- /dev/null +++ b/doc/test/gold/document_to_test_formatting/test.html @@ -0,0 +1,73 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>test HTML4 symbols</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<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"> +<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> + ƒ, Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω, α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, + ν, ξ, ο, π, ρ, ς, σ, τ, υ, φ, χ, ψ, ω, ϑ, ϒ, ϖ, •, …, ′, ″, ‾, ⁄, ℘, ℑ, ℜ, ™, ℵ, ←, ↑, →, ↓, ↔, ↵, ⇐, ⇑, ⇒, ⇓, + ⇔, ∀, ∂, ∃, ∅, ∇, ∈, ∉, ∋, ∏, ∑, −, ∗, √, ∝, ∞, ∠, ∧, ∨, ∩, ∪, ∫, ∴, ∼, ≅, ≈, ≠, ≡, ≤, ≥, ⊂, ⊃, ⊄, ⊆, ⊇, ⊕, ⊗, + ⊥, ⋅, ⌈, ⌉, ⌊, ⌋, 〈, 〉, ◊, ♠, ♣, ♥, ♦ + </p> +</div> +<div class="section"> +<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remez.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/doc/test/gold/images/accumulators/doxygen.png b/doc/test/gold/images/accumulators/doxygen.png Binary files differnew file mode 100644 index 0000000000..f0a274bbaf --- /dev/null +++ b/doc/test/gold/images/accumulators/doxygen.png diff --git a/doc/test/gold/images/accumulators/form_0.png b/doc/test/gold/images/accumulators/form_0.png Binary files differnew file mode 100644 index 0000000000..9fb5ce8b77 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_0.png diff --git a/doc/test/gold/images/accumulators/form_1.png b/doc/test/gold/images/accumulators/form_1.png Binary files differnew file mode 100644 index 0000000000..e3a10bb862 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_1.png diff --git a/doc/test/gold/images/accumulators/form_2.png b/doc/test/gold/images/accumulators/form_2.png Binary files differnew file mode 100644 index 0000000000..c81c9a4f9f --- /dev/null +++ b/doc/test/gold/images/accumulators/form_2.png diff --git a/doc/test/gold/images/accumulators/form_3.png b/doc/test/gold/images/accumulators/form_3.png Binary files differnew file mode 100644 index 0000000000..fa15c98119 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_3.png diff --git a/doc/test/gold/images/accumulators/form_4.png b/doc/test/gold/images/accumulators/form_4.png Binary files differnew file mode 100644 index 0000000000..a2ee808368 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_4.png diff --git a/doc/test/gold/images/accumulators/form_5.png b/doc/test/gold/images/accumulators/form_5.png Binary files differnew file mode 100644 index 0000000000..d7481e0616 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_5.png diff --git a/doc/test/gold/images/accumulators/form_6.png b/doc/test/gold/images/accumulators/form_6.png Binary files differnew file mode 100644 index 0000000000..dcfd30cb6c --- /dev/null +++ b/doc/test/gold/images/accumulators/form_6.png diff --git a/doc/test/gold/images/accumulators/form_7.png b/doc/test/gold/images/accumulators/form_7.png Binary files differnew file mode 100644 index 0000000000..66d2cf8779 --- /dev/null +++ b/doc/test/gold/images/accumulators/form_7.png diff --git a/doc/test/gold/images/accumulators/form_8.png b/doc/test/gold/images/accumulators/form_8.png Binary files differnew file mode 100644 index 0000000000..2564f5224d --- /dev/null +++ b/doc/test/gold/images/accumulators/form_8.png diff --git a/doc/test/gold/images/beta_dist_kurtosis.png b/doc/test/gold/images/beta_dist_kurtosis.png Binary files differnew file mode 100644 index 0000000000..1be258bfde --- /dev/null +++ b/doc/test/gold/images/beta_dist_kurtosis.png diff --git a/doc/test/gold/images/digamma3.png b/doc/test/gold/images/digamma3.png Binary files differnew file mode 100644 index 0000000000..bf4b81f607 --- /dev/null +++ b/doc/test/gold/images/digamma3.png diff --git a/doc/test/gold/images/doctest.png b/doc/test/gold/images/doctest.png Binary files differnew file mode 100644 index 0000000000..6d58193b31 --- /dev/null +++ b/doc/test/gold/images/doctest.png diff --git a/doc/test/gold/images/open_clipart_library_logo.svg b/doc/test/gold/images/open_clipart_library_logo.svg new file mode 100644 index 0000000000..9a4521f3a5 --- /dev/null +++ b/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> diff --git a/doc/test/gold/images/remez-2.png b/doc/test/gold/images/remez-2.png Binary files differnew file mode 100644 index 0000000000..e9bfbd9108 --- /dev/null +++ b/doc/test/gold/images/remez-2.png diff --git a/doc/test/gold/images/remez-3.png b/doc/test/gold/images/remez-3.png Binary files differnew file mode 100644 index 0000000000..6493527d56 --- /dev/null +++ b/doc/test/gold/images/remez-3.png diff --git a/doc/test/gold/images/remez-4.png b/doc/test/gold/images/remez-4.png Binary files differnew file mode 100644 index 0000000000..6733bac9b9 --- /dev/null +++ b/doc/test/gold/images/remez-4.png diff --git a/doc/test/gold/images/remez-5.png b/doc/test/gold/images/remez-5.png Binary files differnew file mode 100644 index 0000000000..80727614f8 --- /dev/null +++ b/doc/test/gold/images/remez-5.png diff --git a/doc/test/gold/index.html b/doc/test/gold/index.html new file mode 100644 index 0000000000..19d2738ad9 --- /dev/null +++ b/doc/test/gold/index.html @@ -0,0 +1,151 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Document To Test Formatting</title> +<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> +<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/src/images/next.png" alt="Next"></a></div> +<div class="article"> +<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="id759728"></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.code_with_a_very_long_line">Code + With a Very Long Line</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#id772287">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"> +<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: α, β, γ. + </p> +<p> + Try some superscrips and subscripts: x<sup>2</sup>, x<sub>i</sub><sup>3</sup>, α<sup>2</sup>, β<sup>α</sup>, ⌊x⌋, ⌊α⌋, ⌈a⌉. + </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: July 22, 2010 at 21:58:58 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/src/images/next.png" alt="Next"></a></div> +</body> +</html> diff --git a/doc/test/html/images/beta_dist_kurtosis.png b/doc/test/html/images/beta_dist_kurtosis.png Binary files differnew file mode 100644 index 0000000000..1be258bfde --- /dev/null +++ b/doc/test/html/images/beta_dist_kurtosis.png diff --git a/doc/test/html/images/digamma3.png b/doc/test/html/images/digamma3.png Binary files differnew file mode 100644 index 0000000000..bf4b81f607 --- /dev/null +++ b/doc/test/html/images/digamma3.png diff --git a/doc/test/html/images/doctest.png b/doc/test/html/images/doctest.png Binary files differnew file mode 100644 index 0000000000..6d58193b31 --- /dev/null +++ b/doc/test/html/images/doctest.png diff --git a/doc/test/html/images/open_clipart_library_logo.svg b/doc/test/html/images/open_clipart_library_logo.svg new file mode 100644 index 0000000000..9a4521f3a5 --- /dev/null +++ b/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> diff --git a/doc/test/html/images/remez-2.png b/doc/test/html/images/remez-2.png Binary files differnew file mode 100644 index 0000000000..e9bfbd9108 --- /dev/null +++ b/doc/test/html/images/remez-2.png diff --git a/doc/test/html/images/remez-3.png b/doc/test/html/images/remez-3.png Binary files differnew file mode 100644 index 0000000000..6493527d56 --- /dev/null +++ b/doc/test/html/images/remez-3.png diff --git a/doc/test/html/images/remez-4.png b/doc/test/html/images/remez-4.png Binary files differnew file mode 100644 index 0000000000..6733bac9b9 --- /dev/null +++ b/doc/test/html/images/remez-4.png diff --git a/doc/test/html/images/remez-5.png b/doc/test/html/images/remez-5.png Binary files differnew file mode 100644 index 0000000000..80727614f8 --- /dev/null +++ b/doc/test/html/images/remez-5.png diff --git a/doc/test/remez.qbk b/doc/test/remez.qbk new file mode 100644 index 0000000000..3a72b12da2 --- /dev/null +++ b/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] + + + diff --git a/doc/test/stub.cpp b/doc/test/stub.cpp new file mode 100644 index 0000000000..48e76d0860 --- /dev/null +++ b/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; +//-> +}; +//] diff --git a/doc/test/test.qbk b/doc/test/test.qbk new file mode 100644 index 0000000000..889d414758 --- /dev/null +++ b/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]'''⌊'''[x]'''⌋'''] +[template floorlr[x][lfloor][x][rfloor]] +[template ceil[x] '''⌈'''[x]'''⌉'''] + +[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] + + + diff --git a/doc/test/test_HTML4_symbols.qbk b/doc/test/test_HTML4_symbols.qbk new file mode 100644 index 0000000000..9dc271ee1f --- /dev/null +++ b/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). +] + + diff --git a/doc/test/weighted_tail_quantile.hpp b/doc/test/weighted_tail_quantile.hpp new file mode 100644 index 0000000000..997ac3a21b --- /dev/null +++ b/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 |