Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50136 - in trunk/doc/test: . html html/images
From: john_at_[hidden]
Date: 2008-12-05 11:34:47


Author: johnmaddock
Date: 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
New Revision: 50136
URL: http://svn.boost.org/trac/boost/changeset/50136

Log:
Added initial documentation test.
Added:
   trunk/doc/test/HTML4_symbols.qbk (contents, props changed)
   trunk/doc/test/html/
   trunk/doc/test/html/images/
   trunk/doc/test/html/images/beta_dist_kurtosis.png (contents, props changed)
   trunk/doc/test/html/images/digamma3.png (contents, props changed)
   trunk/doc/test/html/images/doctest.png (contents, props changed)
   trunk/doc/test/html/images/open_clipart_library_logo.svg (contents, props changed)
   trunk/doc/test/html/images/remez-2.png (contents, props changed)
   trunk/doc/test/html/images/remez-3.png (contents, props changed)
   trunk/doc/test/html/images/remez-4.png (contents, props changed)
   trunk/doc/test/html/images/remez-5.png (contents, props changed)
   trunk/doc/test/remez.qbk (contents, props changed)
   trunk/doc/test/stub.cpp (contents, props changed)
   trunk/doc/test/test.qbk (contents, props changed)
   trunk/doc/test/test_HTML4_symbols.qbk (contents, props changed)
Text files modified:
   trunk/doc/test/Jamfile.v2 | 49 ++++++++++++++++++++++++++++++++++++++-
   1 files changed, 47 insertions(+), 2 deletions(-)

Added: trunk/doc/test/HTML4_symbols.qbk
==============================================================================
--- (empty file)
+++ trunk/doc/test/HTML4_symbols.qbk 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -0,0 +1,253 @@
+[/ File Latin1_symbols.qbk
+Copyright 2006-2007 Paul A. Bristow.
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt).
+]
+
+
+[/ Symbols and Greek letters (about 120) from HTML4 ]
+[/ File HTML4_symbols.qbk]
+[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
+[/ All (except 2 angle brackets) show OK on Firefox 2.0]
+
+[/ Also some miscellaneous math charaters added to this list - see the end.]
+
+[/ To use, enclose the template name in square brackets.]
+
+[template fnof[]'''ƒ'''] [/ � Latin small f with hook = function = florin]
+[template Alpha[]'''Α'''] [/ ? Greek capital letter alpha]
+[template Beta[]'''Β'''] [/ ? Greek capital letter beta]
+[template Gamma[]'''Γ'''] [/ G Greek capital letter gamma]
+[template Delta[]'''Δ'''] [/ ? Greek capital letter delta]
+[template Epsilon[]'''Ε'''] [/ ? Greek capital letter epsilon]
+[template Zeta[]'''Ζ'''] [/ ? Greek capital letter zeta]
+[template Eta[]'''Η'''] [/ ? Greek capital letter eta]
+[template Theta[]'''Θ'''] [/ T Greek capital letter theta]
+[template Iota[]'''Ι'''] [/ ? Greek capital letter iota]
+[template Kappa[]'''Κ'''] [/ ? Greek capital letter kappa]
+[template Lambda[]'''Λ'''] [/ ? Greek capital letter lambda]
+[template Mu[]'''Μ'''] [/ ? Greek capital letter mu]
+[template Nu[]'''Ν'''] [/ ? Greek capital letter nu]
+[template Xi[]'''Ξ'''] [/ ? Greek capital letter xi]
+[template Omicron[]'''Ο'''] [/ ? Greek capital letter omicron]
+[template Pi[]'''Π'''] [/ ? Greek capital letter pi]
+[template Rho[]'''Ρ'''] [/ ? Greek capital letter rho]
+[template Sigma[]'''Σ'''] [/ S Greek capital letter sigma]
+[template Tau[]'''Τ'''] [/ ? Greek capital letter tau]
+[template Upsilon[]'''Υ'''] [/ ? Greek capital letter upsilon]
+[template Phi[]'''Φ'''] [/ F Greek capital letter phi]
+[template Chi[]'''Χ'''] [/ ? Greek capital letter chi]
+[template Psi[]'''Ψ'''] [/ ? Greek capital letter psi]
+[template Omega[]'''Ω'''] [/ O Greek capital letter omega]
+[template alpha[]'''α'''] [/ a Greek small letter alpha]
+[template beta[]'''β'''] [/ � Greek small letter beta]
+[template gamma[]'''γ'''] [/ ? Greek small letter gamma]
+[template delta[]'''δ'''] [/ d Greek small letter delta]
+[template epsilon[]'''ε'''] [/ e Greek small letter epsilon]
+[template zeta[]'''ζ'''] [/ ? Greek small letter zeta]
+[template eta[]'''η'''] [/ ? Greek small letter eta]
+[template theta[]'''θ'''] [/ ? Greek small letter theta]
+[template iota[]'''ι'''] [/ ? Greek small letter iota]
+[template kappa[]'''κ'''] [/ ? Greek small letter kappa]
+[template lambda[]'''λ'''] [/ ? Greek small letter lambda]
+[template mu[]'''μ'''] [/ � Greek small letter mu]
+[template nu[]'''ν'''] [/ ? Greek small letter nu]
+[template xi[]'''ξ'''] [/ ? Greek small letter xi]
+[template omicron[]'''ο'''] [/ ? Greek small letter omicron]
+[template pi[]'''π'''] [/ p Greek small letter pi]
+[template rho[]'''ρ'''] [/ ? Greek small letter rho]
+[template sigmaf[]'''ς'''] [/ ? Greek small letter final sigma]
+[template sigma[]'''σ'''] [/ s Greek small letter sigma]
+[template tau[]'''τ'''] [/ t Greek small letter tau]
+[template upsilon[]'''υ'''] [/ ? Greek small letter upsilon]
+[template phi[]'''φ'''] [/ f Greek small letter phi]
+[template chi[]'''χ'''] [/ ? Greek small letter chi]
+[template psi[]'''ψ'''] [/ ? Greek small letter psi]
+[template omega[]'''ω'''] [/ ? Greek small letter omega]
+[template thetasym[]'''ϑ'''] [/ ? Greek small letter theta symbol]
+[template upsih[]'''ϒ'''] [/ ? Greek upsilon with hook symbol]
+[template piv[]'''ϖ'''] [/ ? Greek pi symbol]
+[template bull[]'''•'''] [/ � bullet = black small circle]
+[template hellip[]'''…'''] [/ � horizontal ellipsis = three dot leader]
+[template prime[]'''′'''] [/ ' prime = minutes = feet]
+[template Prime[]'''″'''] [/ ? double prime = seconds = inches]
+[template oline[]'''‾'''] [/ ? overline = spacing overscore]
+[template frasl[]'''⁄'''] [/ / fraction slash]
+[template weierp[]'''℘'''] [/ P script capital P = power set = Weierstrass p]
+[template image[]'''ℑ'''] [/ I blackletter capital I = imaginary part]
+[template real[]'''ℜ'''] [/ R blackletter capital R = real part symbol]
+[template trade[]'''™'''] [/ � trade mark sign]
+[template alefsym[]'''ℵ'''] [/ ? alef symbol = first transfinite cardinal]
+[template larr[]'''←'''] [/ ? leftwards arrow]
+[template uarr[]'''↑'''] [/ ? upwards arrow]
+[template rarr[]'''→'''] [/ ? rightwards arrow]
+[template darr[]'''↓'''] [/ ? downwards arrow]
+[template harr[]'''↔'''] [/ ? left right arrow]
+[template crarr[]'''↵'''] [/ ? downwards arrow with corner leftwards = CR]
+[template lArr[]'''⇐'''] [/ ? leftwards double arrow]
+[template uArr[]'''⇑'''] [/ ? upwards double arrow]
+[template rArr[]'''⇒'''] [/ ? rightwards double arrow]
+[template dArr[]'''⇓'''] [/ ? downwards double arrow]
+[template hArr[]'''⇔'''] [/ ? left right double arrow]
+[template forall[]'''∀'''] [/ ? for all]
+[template part[]'''∂'''] [/ ? partial differential]
+[template exist[]'''∃'''] [/ ? there exists]
+[template empty[]'''∅'''] [/ � empty set = null set = diameter]
+[template nabla[]'''∇'''] [/ ? nabla = backward difference]
+[template isin[]'''∈'''] [/ ? element of]
+[template notin[]'''∉'''] [/ ? not an element of]
+[template ni[]'''∋'''] [/ ? contains as member]
+[template prod[]'''∏'''] [/ ? n-ary product = product sign]
+[template sum[]'''∑'''] [/ ? n-ary sumation]
+[template minus[]'''−'''] [/ - minus sign]
+[template lowast[]'''∗'''] [/ * asterisk operator]
+[template radic[]'''√'''] [/ v square root = radical sign]
+[template prop[]'''∝'''] [/ ? proportional to]
+[template infin[]'''∞'''] [/ 8 infinity]
+[template ang[]'''∠'''] [/ ? angle]
+[template and[]'''∧'''] [/ ? logical and = wedge]
+[template or[]'''∨'''] [/ ? logical or = vee]
+[template cap[]'''∩'''] [/ n intersection = cap]
+[template cup[]'''∪'''] [/ ? union = cup]
+[template int[]'''∫'''] [/ ? integral]
+[template there4[]'''∴'''] [/ ? therefore]
+[template sim[]'''∼'''] [/ ~ tilde operator = varies with = similar to]
+[template cong[]'''≅'''] [/ ? approximately equal to]
+[template asymp[]'''≈'''] [/ � almost equal to = asymptotic to]
+[template ne[]'''≠'''] [/ ? not equal to]
+[template equiv[]'''≡'''] [/ = identical to]
+[template le[]'''≤'''] [/ = less-than or equal to]
+[template ge[]'''≥'''] [/ = greater-than or equal to]
+[template subset[]'''⊂'''] [/ ? subset of]
+[template superset[]'''⊃'''] [/ ? superset of]
+[template nsubset[]'''⊄'''] [/ ? not a subset of]
+[template sube[]'''⊆'''] [/ ? subset of or equal to]
+[template supe[]'''⊇'''] [/ ? superset of or equal to]
+[template oplus[]'''⊕'''] [/ ? circled plus = direct sum]
+[template otimes[]'''⊗'''] [/ ? circled times = vector product]
+[template perp[]'''⊥'''] [/ ? up tack = orthogonal to = perpendicular]
+[template sdot[]'''⋅'''] [/ � dot operator]
+[template lceil[]'''⌈'''] [/ ? left ceiling = APL upstile]
+[template rceil[]'''⌉'''] [/ ? right ceiling]
+[template lfloor[]'''⌊'''] [/ ? left floor = APL downstile]
+[template rfloor[]'''⌋'''] [/ ? right floor]
+[template lang[]'''&#x2329;'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)]
+[template rang[]'''&#x232A;'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)]
+[template loz[]'''&#x25CA;'''] [/ ? lozenge]
+[template spades[]'''&#x2660;'''] [/ ? black spade suit]
+[template clubs[]'''&#x2663;'''] [/ ? black club suit = shamrock]
+[template hearts[]'''&#x2665;'''] [/ ? black heart suit = valentine]
+[template diams[]'''&#x2666;'''] [/ ? black diamond suit]
+
+[/ Other symbols, not in the HTML4 list:]
+[template space[]''' ''']
+[template plusminus[]'''&#x00B1;'''] [/ ? plus or minus sign]
+
+
+[/ Symbols and accented letters from Latin-1]
+[/ File Latin1_symbols.qbk]
+[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
+[/ based on table Copyright </copyright.html> 1998-2006 Liam Quinn.]
+[/ Glyphs <http://www.unicode.org/charts/> of the characters ]
+[/ are available at the Unicode Consortium <http://www.unicode.org/>. ]
+
+[template nbsp[]'''&#xA0;'''] [/ no-break space = non-breaking space]
+[template iexcl[]'''&#xA1;'''] [/ inverted exclamation mark ]
+[template cent[]'''&#xA2;'''] [/ cent sign ]
+[template pound[]'''&#xA3;'''] [/ pound sign ]
+[template curren[]'''&#xA4;'''] [/ currency sign ]
+[template yen[]'''&#xA5;'''] [/ yen sign = yuan sign ]
+[template brvbar[]'''&#xA6;'''] [/ broken vertical bar ]
+[template sectsign[]'''&#xA7;'''] [/ section sign ]
+[template uml[]'''&#xA8;'''] [/ diaeresis ]
+[template copy[]'''&#xA9;'''] [/ copyright ]
+[template ordf[]'''&#xAA;'''] [/ feminine ordinal indicator ]
+[template laquo[]'''&#xAB;'''] [/ left-pointing double angle quotation mark = left pointing guillemet ]
+[template not[]'''&#xAC;'''] [/ not sign ]
+[template shy[]'''&#xAD;'''] [/ soft hyphen = discretionary hyphen ]
+[template reg[]'''&#xAE;'''] [/ registered sign = registered trade mark sign ]
+[template macron[]'''&#xAF;'''] [/ macron = spacing macron = overline = APL overbar ]
+[template deg[]'''&#xB0;'''] [/ degree sign ]
+[template plusmn[]'''&#xB1;'''] [/ plus-minus sign = plus-or-minus sign ]
+[template sup2[]'''&#xB2;'''] [/ superscript two = superscript digit two = squared ]
+[template cubed[]'''&#xB3;'''] [/ superscript three = superscript digit three = cubed ]
+[template acute[]'''&#xB4;'''] [/ acute accent = spacing acute ]
+[template micro[]'''&#xB5;'''] [/ micro sign ]
+[template para[]'''&#xB6;'''] [/ pilcrow sign = paragraph sign ]
+[template middot[]'''&#xB7;'''] [/ middle dot = Georgian comma = Greek middle dot ]
+[template cedil[]'''&#xB8;'''] [/ cedilla = spacing cedilla ]
+[template sup1[]'''&#xB9;'''] [/ superscript one = superscript digit one ]
+[template ordm[]'''&#xBA;'''] [/ masculine ordinal indicator ]
+[template raquo[]'''&#xBB;'''] [/ right-pointing double angle quotation mark = right pointing guillemet ]
+[template frac14[]'''&#xBC;'''] [/ vulgar fraction one quarter = fraction one quarter ]
+[template frac12[]'''&#xBD;'''] [/ vulgar fraction one half = fraction one half ]
+[template frac34[]'''&#xBE;'''] [/vulgar fraction three quarters = fraction three quarters ]
+[template iquest[]'''&#xBF;'''] [/ inverted question mark = turned question mark ]
+[template Agrave[]'''&#xC0;'''] [/ Latin capital letter A with grave = Latin capital letter A grave ]
+[template Aacute[]'''&#xC1;'''] [/ Latin capital letter A with acute = Latin capital letter A acute ]
+[template Acirc[]'''&#xC2;'''] [/ Latin capital letter A with circumflex ]
+[template Atilde[]'''&#xC3;'''] [/Latin capital letter A with tilde ]
+[template Auml[]'''&#xC4;'''] [/ Latin capital letter A with diaeresis ]
+[template Aring[]'''&#xC5;'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ]
+[template AElig[]'''&#xC6;'''] [/ Latin capital letter AE = Latin capital ligature AE ]
+[template Ccedil[]'''&#xC7;'''] [/ Latin capital letter C with cedilla ]
+[template Egrave[]'''&#xC8;'''] [/ Latin capital letter E with grave ]
+[template Eacute[]'''&#xC9;'''] [/ Latin capital letter E with acute ]
+[template Ecirc[]'''&#xCA;'''] [/ Latin capital letter E with circumflex ]
+[template Euml[]'''&#xCB;'''] [/ Latin capital letter E with diaeresis ]
+[template Igrave[]'''&#xCC;'''] [/ Latin capital letter I with grave ]
+[template Iacute[]'''&#xCD;'''] [/ Latin capital letter I with acute ]
+[template Icirc[]'''&#xCE;'''] [/ Latin capital letter I with circumflex ]
+[template Iuml[]'''&#xCF;'''] [/ Latin capital letter I with diaeresis ]
+[template ETH[]'''&#xD0;'''] [/ Latin capital letter ETH ]
+[template Ntilde[]'''&#xD1;'''] [/ Latin capital letter N with tilde ]
+[template Ograve[]'''&#xD2;'''] [/ Latin capital letter O with grave]
+[template Oacute[]'''&#xD3;'''] [/ Latin capital letter O with acute ]
+[template Ocirc[]'''&#xD4;'''] [/ Latin capital letter O with circumflex ]
+[template Otilde[]'''&#xD5;'''] [/ Latin capital letter O with tilde ]
+[template Ouml[]'''&#xD6;'''] [/ Latin capital letter O with diaeresis ]
+[template times[]'''&#xD7;'''] [/ multiplication sign ]
+[template Oslash[]'''&#xD8;'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ]
+[template Ugrave[]'''&#xD9;'''] [/ Latin capital letter U with grave ]
+[template Uacute[]'''&#xDA;'''] [/ Latin capital letter U with acute ]
+[template Ucirc[]'''&#xDB;'''] [/ Latin capital letter U with circumflex ]
+[template Uuml[]'''&#xDC;'''] [/ Latin capital letter U with diaeresis ]
+[template Yacute[]'''&#xDD;'''] [/ Latin capital letter Y with acute ]
+[template THORN[]'''&#xDE;'''] [/ Latin capital letter THORN ]
+[template szlig[]'''&#xDF;'''] [/ Latin small letter sharp s = ess-zed ]
+[template agrave[]'''&#xE0;'''] [/ Latin small letter a with grave = Latin small letter a grave ]
+[template aacute[]'''&#xE1;'''] [/ Latin small letter a with acute ]
+[template acirc[]'''&#xE2;'''] [/ Latin small letter a with circumflex ]
+[template atilde[]'''&#xE3;'''] [/ Latin small letter a with tilde ]
+[template auml[]'''&#xE4;'''] [/ Latin small letter a with diaeresis ]
+[template aring[]'''&#xE5;'''] [/ Latin small letter a with ring above = Latin small letter a ring ]
+[template aelig[]'''&#xE6;'''] [/ Latin small letter ae = Latin small ligature ae ]
+[template ccedil[]'''&#xE7;'''] [/ Latin small letter c with cedilla ]
+[template egrave[]'''&#xE8;'''] [/ Latin small letter e with grave ]
+[template eacute[]'''&#xE9;'''] [/ Latin small letter e with acute ]
+[template ecirc[]'''&#xEA;'''] [/ Latin small letter e with circumflex ]
+[template euml[]'''&#xEB;'''] [/ Latin small letter e with diaeresis ]
+[template igrave[]'''&#xEC;'''] [/ Latin small letter i with grave ]
+[template iacute[]'''&#xED;'''] [/ Latin small letter i with acute ]
+[template icirc[]'''&#xEE;'''] [/ Latin small letter i with circumflex ]
+[template iuml[]'''&#xEF;'''] [/ Latin small letter i with diaeresis ]
+[template eth[]'''&#xF0;'''] [/ Latin small letter eth ]
+[template ntilde[]'''&#xF1;'''] [/ Latin small letter n with tilde ]
+[template ograve[]'''&#xF2;'''] [/Latin small letter o with grave ]
+[template oacute[]'''&#xF3;'''] [/ Latin small letter o with acute ]
+[template ocirc[]'''&#xF4;'''] [/ Latin small letter o with circumflex ]
+[template otilde[]'''&#xF5;'''] [/ Latin small letter o with tilde ]
+[template ouml[]'''&#xF6;'''] [/ Latin small letter o with diaeresis ]
+[template divide[]'''&#xF7;'''] [/ division sign ]
+[template oslash[]'''&#xF8;'''] [/ Latin small letter o with stroke = Latin small letter o slash ]
+[template ugrave[]'''&#xF9;'''] [/ Latin small letter u with grave ]
+[template uacute[]'''&#xFa;'''] [/ Latin small letter u with acute ]
+[template ucirc[]'''&#xFB;'''] [/ Latin small letter u with circumflex ]
+[template uuml[]'''&#xFC;'''] [/ Latin small letter u with diaeresis ]
+[template yacute[]'''&#xFD;'''] [/ Latin small letter y with acute ]
+[template thorn[]'''&#xFE;'''] [/ Latin small letter thorn ]
+[template yuml[]'''&#xFF;'''] [/ Latin small letter y with diaeresis ]
+
+
+

Modified: trunk/doc/test/Jamfile.v2
==============================================================================
--- trunk/doc/test/Jamfile.v2 (original)
+++ trunk/doc/test/Jamfile.v2 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -1,2 +1,47 @@
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt)
+# 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)
+
+using quickbook ;
+
+xml test : test.qbk ;
+boostbook standalone
+ :
+ test
+ :
+ # 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>boost.libraries=../../../libs/libraries.htm
+ <xsl:param>navig.graphics=1
+ <xsl:param>html.stylesheet=../../../doc/html/boostbook.css
+
+
+ # PDF Options:
+ #======================================================================
+
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ # <xsl:param>fop1.extensions=1
+ <xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to
+ # zero for FOP-0.9!
+ <xsl:param>fop.extensions=0
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ #<xsl:param>admon.graphics.extension=".svg"
+ ;
+
+

Added: trunk/doc/test/html/images/beta_dist_kurtosis.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/digamma3.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/doctest.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/open_clipart_library_logo.svg
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/remez-2.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/remez-3.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/remez-4.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/html/images/remez-5.png
==============================================================================
Binary file. No diff available.

Added: trunk/doc/test/remez.qbk
==============================================================================
--- (empty file)
+++ trunk/doc/test/remez.qbk 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -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]
+
+
+

Added: trunk/doc/test/stub.cpp
==============================================================================
--- (empty file)
+++ trunk/doc/test/stub.cpp 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -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;
+//->
+};
+//]

Added: trunk/doc/test/test.qbk
==============================================================================
--- (empty file)
+++ trunk/doc/test/test.qbk 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -0,0 +1,596 @@
+[article Document To Test Formatting
+ [quickbook 1.4]
+ [copyright 2007 John Maddock, Joel de Guzman, Eric Niebler and Matias Capeletto]
+ [purpose Test Formatting Document]
+ [license
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ [@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+ [authors [Maddock, John], [de Guzman, Joel], [Niebler, Eric], [Capeletto, Matias] ]
+ [category math]
+ [/last-revision $Date: 2007-05-07 10:21:52 +0100 (Mon, 07 May 2007) $]
+]
+
+[include HTML4_symbols.qbk]
+
+[/ Some composite templates]
+[template super[x]'''<superscript>'''[x]'''</superscript>''']
+[template sub[x]'''<subscript>'''[x]'''</subscript>''']
+[template floor[x]'''&#x230A;'''[x]'''&#x230B;''']
+[template floorlr[x][lfloor][x][rfloor]]
+[template ceil[x] '''&#x2308;'''[x]'''&#x2309;''']
+
+[section Introduction]
+
+This document is purely a test case to test out HTML and PDF generation and style.
+
+This is some body text.
+
+ int main()
+ {
+ double d = 2.345;
+ return d;
+ }
+
+We can count in Greek too: [alpha], [beta], [gamma].
+
+Try some superscrips and subscripts: x[super 2], x[sub i][super 3], [alpha][super 2],
+[beta][super [alpha]], [floor x], [floor [alpha]], [ceil a].
+
+[endsect]
+
+[section Code Blocks]
+
+[section Embedded code]
+
+These should be syntax highlighted:
+
+ #include <iostream>
+
+ int main()
+ {
+ // Sample code
+ std::cout << "Hello, World\n";
+ return 0;
+ }
+
+[endsect]
+
+[section 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.
+
+[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][ [$../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]
+
+
+
+

Added: trunk/doc/test/test_HTML4_symbols.qbk
==============================================================================
--- (empty file)
+++ trunk/doc/test/test_HTML4_symbols.qbk 2008-12-05 11:34:46 EST (Fri, 05 Dec 2008)
@@ -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).
+]
+
+


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