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