mirror of
https://github.com/boostorg/math.git
synced 2026-01-19 04:22:09 +00:00
cstdfloat standalone docs build files
This commit is contained in:
@@ -1,18 +1,25 @@
|
||||
|
||||
[/cstdfloat.qbk Specified-width floating-point typedefs]
|
||||
|
||||
[def __IEEE754 [@http://en.wikipedia.org/wiki/IEEE_floating_point IEEE_floating_point]]
|
||||
[def __N3626 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3626.pdf N3626]]
|
||||
[def __N1703 [@http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1703.pdf N1703]]
|
||||
|
||||
[import ../../example/cstdfloat_example.cpp]
|
||||
[import ../../example/normal_tables.cpp]
|
||||
|
||||
[section:overview Overview]
|
||||
|
||||
The header `<boost/cstdfloat.hpp>` provides [*optional]
|
||||
standardized floating-point `typedef`s having [*specified widths].
|
||||
These are useful for writing portable code because they
|
||||
should behave identically on all platforms.
|
||||
These `typedef`s are the floating-point analog of specified-width integers in `<cstdint>`.
|
||||
All `typedef`s are in `namespace boost`.
|
||||
These `typedef`s are the floating-point analog of specified-width integers in `<cstdint>` and `stdint.h`.
|
||||
|
||||
The `typedef`s are based on __N3626
|
||||
proposed for a new C++14 standard header `<cstdfloat>` and
|
||||
__N1703 proposed for a new C language standard header `<stdfloat.h>`.
|
||||
|
||||
All `typedef`s are in `namespace boost` (would be in namespace `std` if eventually standardized).
|
||||
|
||||
The `typedef`s include `float16_t, float32_t, float64_t, float80_t, float128_t`,
|
||||
their corresponding least and fast types,
|
||||
@@ -24,44 +31,20 @@ The underlying types of these `typedef`s must conform with
|
||||
the corresponding specifications of binary16, binary32, binary64,
|
||||
and binary128 in __IEEE754 floating-point format.
|
||||
|
||||
The `typedef`s are based on __N3626
|
||||
proposed for a new C++14 standard header `<cstdfloat>` and
|
||||
__N1703 proposed for a new C language standard header `<stdfloat.h>`.
|
||||
|
||||
The 128-bit floating-point type, of great interest in scientific and
|
||||
numeric programming, is not required in the Boost header,
|
||||
The 128-bit floating-point type (of great interest in scientific and
|
||||
numeric programming) is not required in the Boost header,
|
||||
and may not be supplied for all platforms/compilers, because compiler
|
||||
support for a 128-bit floating-point type is not mandated by either
|
||||
the C standard or the C++ standard.
|
||||
|
||||
The following code uses `<boost/cstdfloat.hpp>` in combination with
|
||||
`<boost/math/special_functions.hpp>` to compute a simplified
|
||||
version of the Jahnke-Emden-Lambda function. Here, we specify
|
||||
a floating-point type with [*exactly 64 bits] (i.e., `float64_t`).
|
||||
If we were to use, for instance, built-in `double`,
|
||||
then there would be no guarantee that the code would
|
||||
behave identically on all platforms. With `float64_t` from
|
||||
`<boost/cstdfloat.hpp>`, however, it is very likely to be identical.
|
||||
See [link float_t.examples.je_lambda Jahnke-Emden-Lambda function example]
|
||||
for an example using both a CMath function and a Boost.Math function
|
||||
to evaluate a moderately interesting function, the
|
||||
[@http://mathworld.wolfram.com/LambdaFunction.html Jahnke-Emden-Lambda function]
|
||||
and [link float_t.examples.normal_table normal distribution]
|
||||
an example of a statistical distribution from Boost.Math
|
||||
|
||||
Using `float64_t`, we know that
|
||||
this code is as portable as possible and uses a floating-point type
|
||||
with approximately 15 decimal digits of precision.
|
||||
|
||||
#include <cmath>
|
||||
#include <boost/cstdfloat.hpp>
|
||||
#include <boost/math/special_functions.hpp>
|
||||
|
||||
boost::float64_t jahnke_emden_lambda(boost::float64_t v, boost::float64_t x)
|
||||
{
|
||||
const boost::float64_t gamma_v_plus_one = boost::math::tgamma(v + 1);
|
||||
const boost::float64_t x_half_pow_v = std::pow(x /2, v);
|
||||
|
||||
return gamma_v_plus_one * boost::math::cyl_bessel_j(x, v) / x_half_pow_v;
|
||||
}
|
||||
|
||||
See `cstdfloat_test.cpp` for a more detailed test program.
|
||||
|
||||
[endsect] [/section:overview Overview]
|
||||
[endsect] [/section:overview Overview]
|
||||
|
||||
[section:rationale Rationale]
|
||||
|
||||
@@ -74,26 +57,27 @@ An unequivocal test regarding conformance with __IEEE754 (IEC599) based on
|
||||
[@ http://en.cppreference.com/w/cpp/types/numeric_limits/is_iec559 `std::numeric_limits<>::is_iec559`]
|
||||
is performed with `BOOST_STATIC_ASSERT`.
|
||||
|
||||
In addition, this implementation `<boost/cstdfloat.hpp>`
|
||||
supports an 80-bit floating-point `typedef` if this can be detected
|
||||
and if the underlying type conforms with
|
||||
In addition, this Boost implementation `<boost/cstdfloat.hpp>`
|
||||
supports an 80-bit floating-point `typedef` if it can be detected,
|
||||
and a 128-bit floating-point `typedef` if it can be detected,
|
||||
provided that the underlying types conform with
|
||||
[@http://en.wikipedia.org/wiki/Extended_precision IEEE-754 precision extension]
|
||||
(if`std::numeric_limits<>::is_iec559` is true for this type).
|
||||
|
||||
The header `<boost/cstdfloat.hpp>` makes the standardized floating-point
|
||||
`typedef`s safely available in `namespace boost` without placing any names
|
||||
in `namespace std`. The intention is to complement rather than compete
|
||||
with a potential future C++ Standard Library that may contain these `typedef`s.
|
||||
Should some future C++ standard include `<stdfloat.h>` and `<cstdfloat>`,
|
||||
with a potential future C/C++ Standard Library that may contain these `typedef`s.
|
||||
Should some future C/C++ standard include `<stdfloat.h>` and `<cstdfloat>`,
|
||||
then `<boost/cstdfloat.hpp>` will continue to function, but will become redundant
|
||||
and may be safely deprecated.
|
||||
|
||||
Because `<boost/cstdfloat.hpp>` is a boost header, its name conforms to the
|
||||
Because `<boost/cstdfloat.hpp>` is a Boost header, its name conforms to the
|
||||
boost header naming conventions, not the C++ Standard Library header
|
||||
naming conventions.
|
||||
|
||||
[note
|
||||
<boost/cstdfloat.hpp> [*cannot synthesize or create
|
||||
`<boost/cstdfloat.hpp>` [*cannot synthesize or create
|
||||
a `typedef` if the underlying type is not provided by the compiler].
|
||||
For example, if a compiler does not have an underlying floating-point
|
||||
type with 128 bits (highly sought-after in scientific and numeric programming),
|
||||
@@ -101,7 +85,7 @@ then `float128_t` and its corresponding least and fast types are not
|
||||
provided by `<boost/cstdfloat.hpp`>.]
|
||||
|
||||
[warning If `<boost/cstdfloat.hpp>` uses a compiler-specific non-standardized type
|
||||
[*not] derived from `float, double,` or `long double`) for one or more
|
||||
([*not] derived from `float, double,` or `long double`) for one or more
|
||||
of its floating-point `typedef`s, then there is no guarantee that
|
||||
specializations of `numeric_limits<>` will be available for these types.
|
||||
Specializations of `numeric_limits<>` will only be available for these
|
||||
@@ -114,6 +98,22 @@ may possibly be visible to users of `<boost/cstdfloat.hpp>`.
|
||||
Don't rely on using these macros; they are not part of any Boost-specified interface.
|
||||
Use `std::numeric_limits<>` for floating-point ranges, etc. instead.]
|
||||
|
||||
[tip For best results, `<boost/cstdfloat.hpp>` should be `#include`d before
|
||||
other headers like `<cmath>`.
|
||||
|
||||
In addition to detecting and type defining built-in types
|
||||
such as `float`, `double`, and `long double`, `<boost/castfloat.hpp>`
|
||||
may also detect compiler-specific floating-point type(s)
|
||||
and subsequently type define these to floating-point types
|
||||
having specified widths in `namespace boost`. When this occurs,
|
||||
and `<boost/castfloat.hpp>` type defines such a non-built-in type to
|
||||
one of` boost::float16_t, boost::float32_t, boost::float80_t, or
|
||||
boost::float128_t`, it might lead to ambiguous symbols for certain
|
||||
`<cmath>` functions in `namespace std`. See implementation for more details.
|
||||
|
||||
For this reason, making `#include <boost/cstdfloat.hpp>` the [*first
|
||||
include] is usually best.
|
||||
]
|
||||
[endsect] [/section:rationale Rationale]
|
||||
|
||||
[section:exact_typdefs Exact-Width Floating-Point `typedef`s]
|
||||
@@ -127,13 +127,71 @@ Floating-point types in C and C++ are specified to be allowed to have
|
||||
(optionally) implementation-specific widths and formats.
|
||||
However, if a platform supports underlying
|
||||
floating-point types (conformant with __IEEE754) with widths of
|
||||
16, 32, 64, 128 bits, or any combination thereof,
|
||||
16, 32, 64, 80, 128 bits, or any combination thereof,
|
||||
then `<boost/cstdfloat.hpp>` does provide the corresponding `typedef`s
|
||||
`float16_t, float32_t, float64_t, float80_t, float128_t,`
|
||||
their corresponding least and fast types,
|
||||
and the corresponding maximum-width type.
|
||||
|
||||
The absence of `float128_t` is indicated by the macro `BOOST_NO_FLOAT128_T`.
|
||||
[h4 How to tell which widths are supported]
|
||||
|
||||
The definition (or not) of a
|
||||
[link float_t.macros floating-point constant macro]
|
||||
is the way to test if a specific width is available on a platform.
|
||||
|
||||
#if defined(BOOST_FLOAT16_C)
|
||||
// Can use boost::float16_t.
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_FLOAT32_C)
|
||||
// Can use boost::float32_t.
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_FLOAT64_C)
|
||||
// Can use boost::float64_t.
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_FLOAT80_C)
|
||||
// Can use boost::float80_t.
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_FLOAT128_C)
|
||||
// Can use boost::float128_t.
|
||||
#endif
|
||||
|
||||
This can be used to write code which will compile and run (albeit differently) on several platforms.
|
||||
Without these tests, if a width, say `float128_t` is not supported, then compilation would fail.
|
||||
(It is of course, rare for `float64_t` or `float32_t` not to be supported).
|
||||
|
||||
The number of bits in just the significand can be determined using:
|
||||
|
||||
std::numeric_limits<boost::floatmax_t>::digits
|
||||
|
||||
and from this one can safely infer the total number of bits because the type must be IEEE754 format,
|
||||
so, for example, if `std::numeric_limits<boost::floatmax_t>::digits == 113`,
|
||||
then `floatmax_t` must be` float128_t`.
|
||||
|
||||
The [*total] number of bits using `floatmax_t` can be found thus:
|
||||
|
||||
[floatmax_1]
|
||||
|
||||
and the number of 'guaranteed' decimal digits using
|
||||
|
||||
std::numeric_limits<boost::floatmax_t>::digits10
|
||||
|
||||
and the maximum number of possibly significant decimal digits using
|
||||
|
||||
std::numeric_limits<boost::floatmax_t>::max_digits10
|
||||
|
||||
[tip `max_digits10` is not always supported, but can be calculated at compile-time using the Kahan formula.
|
||||
A function `boost::math::max_digits10` is provided that works correctly on all compilers.]
|
||||
|
||||
[note One could test
|
||||
|
||||
std::is_same<boost::floatmax_t, boost::float128_t>::value == true
|
||||
|
||||
but this would fail to compile on a platform where `boost::float128_t` is not defined.
|
||||
So use the MACROs BOOST_FLOATnnn_C. ]
|
||||
|
||||
[endsect] [/section:exact_typdefs Exact-Width Floating-Point `typedef`s]
|
||||
|
||||
@@ -172,33 +230,199 @@ then `float_fast32_t` and `float_fast64_t` will also be supported, etc.
|
||||
[section:greatest_typdefs Greatest-width floating-point typedef]
|
||||
|
||||
The `typedef floatmax_t` designates a floating-point type capable of representing
|
||||
any value of any floating-point type in a given platform.
|
||||
any value of any floating-point type in a given platform most precisely.
|
||||
|
||||
The greatest-width typedef is provided for all platforms.
|
||||
The greatest-width `typedef` is provided for all platforms, but, of course, the size may vary.
|
||||
|
||||
To provide floating-point [*constants] most precisely possible for a `floatmax_t` type,
|
||||
use the macro BOOST_FLOATMAX_C.
|
||||
|
||||
For example, replace a constant `123.4567890123456789012345678901234567890` with
|
||||
|
||||
BOOST_FLOATMAX_C(123.4567890123456789012345678901234567890)
|
||||
|
||||
If, for example, `floatmax_t` is `float64_t` then the result will be equivalent to a `long double` suffixed with L,
|
||||
but if `floatmax_t` is `float128_t` then the result will be equivalent to a `quad type` suffixed with Q
|
||||
(assuming, of course, that `float128` is supported).
|
||||
|
||||
If we display with `maxdigits10`, the maximum possibly significant decimal digits:
|
||||
|
||||
[floatmax_widths_1]
|
||||
|
||||
then on a 128-bit platform (GCC 4.8.1. with quadmath):
|
||||
|
||||
[floatmax_widths_2]
|
||||
|
||||
[endsect] [/section:greatest_typdefs Greatest-width floating-point typedef]
|
||||
|
||||
[section:macros Floating-Point Constant Macros]
|
||||
|
||||
All macros of the type `BOOST_FLOAT16_C, BOOST_FLOAT32_C, BOOST_FLOAT64_C,
|
||||
BOOST_FLOAT80_C, BOOST_FLOAT128_C, BOOST_FLOATMAX_C`
|
||||
are always defined after inclusion of
|
||||
`<boost/cstdfloat.hpp>`.
|
||||
BOOST_FLOAT80_C, BOOST_FLOAT128_C, ` and `BOOST_FLOATMAX_C`
|
||||
are always defined after inclusion of `<boost/cstdfloat.hpp>`.
|
||||
|
||||
These allow floating-point [*constants of at least the specified width] to be declared.
|
||||
[cstdfloat_constant_2]
|
||||
|
||||
For example:
|
||||
[tip Boost.Math provides many constants 'built-in', so always use Boost.Math constants if available, for example:]
|
||||
|
||||
#include <boost/cstdfloat.hpp>
|
||||
[cstdfloat_constant_1]
|
||||
|
||||
// Declare Pythagoras' constant with approximately 7 decimal digits of precision.
|
||||
static const boost::float32_t pi = BOOST_FLOAT32_C(3.1415926536);
|
||||
|
||||
// Declare the Euler-gamma constant with approximately 34 decimal digits of precision.
|
||||
static const boost::float128_t euler = BOOST_FLOAT128_C(0.57721566490153286060651209008240243104216);
|
||||
from [@../../../example/cstdfloat_example.cpp cstdfloat_example.cpp].
|
||||
|
||||
[endsect] [/section:macros Floating-Point Constant Macros]
|
||||
|
||||
[section:examples Examples]
|
||||
|
||||
[h3:je_lambda Jahnke-Emden-Lambda function]
|
||||
|
||||
This is example has already be used as an example of using `float_t typedefs`
|
||||
and CMath and Boost.Math functions.
|
||||
|
||||
The following code uses `<boost/cstdfloat.hpp>` in combination with
|
||||
`<boost/math/special_functions.hpp>` to compute a simplified
|
||||
version of the
|
||||
[@http://mathworld.wolfram.com/LambdaFunction.html Jahnke-Emden-Lambda function].
|
||||
Here, we specify a floating-point type with [*exactly 64 bits] (i.e., `float64_t`).
|
||||
If we were to use, for instance, built-in `double`,
|
||||
then there would be no guarantee that the code would
|
||||
behave identically on all platforms. With `float64_t` from
|
||||
`<boost/cstdfloat.hpp>`, however, it is very likely to be identical.
|
||||
|
||||
Using `float64_t`, we know that
|
||||
this code is as portable as possible and uses a floating-point type
|
||||
with approximately 15 decimal digits of precision,
|
||||
regardless of the compiler or version or operating system.
|
||||
|
||||
[cstdfloat_example_1]
|
||||
[cstdfloat_example_2]
|
||||
[cstdfloat_example_3]
|
||||
|
||||
For details, see [@../../../example/cstdfloat_example.cpp cstdfloat_example.cpp]
|
||||
- a extensive example program.
|
||||
|
||||
[h3:normal_table Normal distribution table]
|
||||
|
||||
This example shows printing tables of a normal distribution's PDF and CDF,
|
||||
using `boost::math` implmentation of normal.
|
||||
|
||||
A function templated on floating-point type prints a table for a range of z values.
|
||||
|
||||
The example shows use of the specified-width typedefs to either use a specific width,
|
||||
or to use the maximum available on the platform, perhaps a high as 128-bit.
|
||||
|
||||
The number of digits displayed is controlled by the precision of the type,
|
||||
so there are no spurious insignificant decimal digits:
|
||||
|
||||
float_32_t 0 0.39894228
|
||||
float_128_t 0 0.398942280401432702863218082711682655
|
||||
|
||||
Some sample output for two different platforms is appended to the code at
|
||||
[@../../../example/normal_tables.cpp normal_tables.cpp].
|
||||
|
||||
[normal_table_1]
|
||||
|
||||
[endsect] [/section:examples examples]
|
||||
|
||||
[section:float128 Implementation of Float128 type]
|
||||
|
||||
Since few compilers implement 128-bit floating-point, and the language features like suffix Q,
|
||||
and C++ Standard library functions are as-yet missing or incomplete in C++11,
|
||||
this Boost.Math implementation wraps `__float128` provided by the GCC compiler.
|
||||
|
||||
This is provided to in order to demonstrate, and users to evaluate, the feasibility and benefits of higher-precision floating-point,
|
||||
especially to allow use of the full Boost.Math library of functions and distributions at high precision.
|
||||
|
||||
(It is also possible to use Boost.Math with Boost.Multiprecision decimal and binary, but since these are entirely software solutions,
|
||||
allowing much higher precision or arbitrary precision, they are likely to be slower).
|
||||
|
||||
We also provide (we believe full) support for `<limits>, <cmath>`, I/O stream operations in `<iostream>`, and `<complex>`.
|
||||
|
||||
As a prototype for a future C++ standard, we place all these in `namespace std`.
|
||||
This contravenes the existing C++ standard of course, so selecting any compiler that promises to check conformance will fail.
|
||||
|
||||
[tip For GCC, use `-std=gnu++11` explicitly, and do not use `-std=stdc++11`, and do not use any 'strict' options.]
|
||||
|
||||
The `__float128` type is provided by the [@http://gcc.gnu.org/onlinedocs/libquadmath/ libquadmath library].
|
||||
|
||||
A typical invocation of the compiler is
|
||||
|
||||
g++ -O3 -std=gnu++11 test.cpp -I/c/modular-boost -lquadmath -o test.exe
|
||||
|
||||
[tip If you are trying to use the develop branch of Boost.Math, then make `-I/c/modular-boost/libs/math/include` the [*first] include directory.]
|
||||
|
||||
g++ -O3 -std=gnu++11 test.cpp -I/c/modular-boost/libs/math/include -I/c/modular-boost -lquadmath -o test.exe
|
||||
|
||||
[note So far, the only missing detail that we have noted is in trying to use `<typeinfo>`, for example for
|
||||
`std::cout << typeid<__float_128>.name();`. Link fails: undefined reference to `typeinfo for __float128`.
|
||||
See [@http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43622 GCC Bug 43622 - no C++ typeinfo for __float128].]
|
||||
|
||||
[section Overloading template functions with float128_t]
|
||||
|
||||
An artifact of providing C++ standard library support for
|
||||
quadmath may mandate the inclusion of `<boost/cstdfloat.hpp>`
|
||||
[*above] the inclusion of other headers.
|
||||
|
||||
Function-providing header-files like `<cmath>` make heavy use of template programming
|
||||
and the `using` directive to inject numerous `<cmath>` functions into the
|
||||
local scope of a function.
|
||||
|
||||
Consider a function that calls `fabs(x)` and has previously injected `std::fabs()`
|
||||
into function scope via a `using` directive.
|
||||
|
||||
For example, a floating-point comparison code generates heavy
|
||||
template instantiations using `std::fabs()` from `<cmath>`
|
||||
(and perhaps other similar headers files providing functions).
|
||||
But at the time of instantiation, the [*compiler does not yet know]
|
||||
that there is an overload of, say, `std::fabs(std::float128_t)`.
|
||||
|
||||
So the compiler tries to downcast the `float128_t` argument first to
|
||||
`long double`, then to `double`, then to `float`;
|
||||
the compilation fails because the result is ambiguous.
|
||||
However the compiler error message will appear cruelly inscrutable,
|
||||
at an apparently irelevant line number and making no mention of `float128`:
|
||||
the word ['ambiguous] is the clue to what is wrong.
|
||||
|
||||
Provided you `#include <boost/cstdfloat.hpp>` [*above] the inclusion
|
||||
of the floating-point comparison header, then the compiler
|
||||
will know about `std::fabs(std::float128_t)`. This is because
|
||||
we inject these overloads into the `namespace std` in the
|
||||
`/detail` headers of `<boost/cstdfloat.hpp>`.
|
||||
[endsect]
|
||||
|
||||
[section:exp_function Exponential function]
|
||||
|
||||
There is a bug whe using any quadmath `expq` function on GCC:
|
||||
|
||||
[@http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60349 GCC bug #60349]
|
||||
|
||||
[@http://sourceforge.net/p/mingw-w64/bugs/368/ mingw-64 bug #368]
|
||||
|
||||
To work round this defect, an alternative implementation of 128-bit exp
|
||||
is temporarily provided by `boost/cstdfloat.hpp`.
|
||||
|
||||
[endsect] [/section:exp_function exp function]
|
||||
|
||||
[section:typeinfo `typeinfo`]
|
||||
|
||||
It is not yet possible to use `typeinfo` for float_128 on GCC: see
|
||||
[@http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43622 GCC 43622]
|
||||
|
||||
so this fails to link `undefined reference to typeinfo for __float128`
|
||||
|
||||
std::cout << typeid(boost::float128_t).name() << std::endl;
|
||||
|
||||
This prevent using the existing tests for Boost.Math distributions,
|
||||
(unless a few lines are commented out)
|
||||
and if a MACRO BOOST_MATH_INSTRUMENT controlling them is defined
|
||||
then some diagnostic displays in Boost.Math will not work.
|
||||
|
||||
However this is only used for display purposes and can be commented out until this is fixed.
|
||||
|
||||
[endsect] [/section:typeinfo `typeinfo`]
|
||||
|
||||
|
||||
[endsect] [/section:float128 Float128 type]
|
||||
|
||||
[/ cstdfloat.qbk
|
||||
Copyright 2014 Christopher Kormanyos, John Maddock and Paul A. Bristow.
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
[article Standardized Floating-Point typedefs for C and C++
|
||||
[id float_t]
|
||||
[quickbook 1.6]
|
||||
[copyright 2014 Christopher Kormanyos, John Maddock, Paul A. Bristow]
|
||||
[license
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Boost.cstdfloat documentation Jamfile.v2
|
||||
#
|
||||
# Copyright Paul A. Bristow 2014.
|
||||
# Use, modification and distribution is subject to
|
||||
# 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)
|
||||
@@ -27,83 +27,82 @@ boostbook standalone
|
||||
:
|
||||
cstdfloat
|
||||
:
|
||||
|
||||
|
||||
# General settings
|
||||
# =================
|
||||
# Path for links to Boost folder, for example: boost_1_55_0 or boost-trunk, relative to folder /doc/html.
|
||||
# Path for links to Boost folder, for example: boost_1_55_0 or boost-trunk, relative to folder /doc/html.
|
||||
<xsl:param>boost.root=../../../../..
|
||||
# Path for libraries index:
|
||||
<xsl:param>boost.libraries=../../../../../../libs/libraries.htm
|
||||
<xsl:param>boost.libraries=../../../../../../libs/libraries.htm
|
||||
|
||||
|
||||
# Or a local custom stylesheet:
|
||||
#<xsl:param>html.stylesheet=boostbook.css
|
||||
<xsl:param>html.stylesheet=boostbook.css
|
||||
# Or a local custom stylesheet:
|
||||
#<xsl:param>html.stylesheet=boostbook.css
|
||||
<xsl:param>html.stylesheet=math.css
|
||||
|
||||
#<xsl:param>nav.layout=none # No navigation bar (home, prev, next).
|
||||
# Defining creates a runtime error: Global parameter nav.layout already defined.
|
||||
<xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
|
||||
#<xsl:param>nav.layout=none # No navigation bar (home, prev, next).
|
||||
# Defining creates a runtime error: Global parameter nav.layout already defined.
|
||||
<xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
|
||||
|
||||
# Path for links to Boost logo.
|
||||
#<xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo, for example, inspired_by_boost.png
|
||||
#<xsl:param>boost.image.src=boost.png #
|
||||
#<xsl:param>boost.image.w=180 # Width of logo in pixels. (JM has W = 162, h = 46)
|
||||
# Path for links to Boost logo.
|
||||
#<xsl:param>boost.image=Boost # options are: none (no logo), Boost (for boost.png), or your own logo, for example, inspired_by_boost.png
|
||||
#<xsl:param>boost.image.src=boost.png #
|
||||
#<xsl:param>boost.image.w=180 # Width of logo in pixels. (JM has W = 162, h = 46)
|
||||
#<xsl:param>boost.image.h=90 # Height of logo in pixels.
|
||||
|
||||
|
||||
# Some general style settings:
|
||||
<xsl:param>table.footnote.number.format=1
|
||||
<xsl:param>footnote.number.format=1
|
||||
<xsl:param>table.footnote.number.format=1
|
||||
<xsl:param>footnote.number.format=1
|
||||
|
||||
# HTML options first:
|
||||
# Use graphics not text for navigation:
|
||||
<xsl:param>navig.graphics=1
|
||||
# How far down we chunk nested sections, basically all of them:
|
||||
<xsl:param>chunk.section.depth=10
|
||||
# Don't put the first section on the same page as the TOC:
|
||||
<xsl:param>chunk.first.sections=1
|
||||
# How far down sections get TOC's
|
||||
<xsl:param>toc.section.depth=10
|
||||
# Max depth in each TOC:
|
||||
<xsl:param>toc.max.depth=4
|
||||
# How far down we go with TOC's
|
||||
<xsl:param>generate.section.toc.level=10
|
||||
# Index on type:
|
||||
<xsl:param>index.on.type=1
|
||||
<xsl:param>boost.noexpand.chapter.toc=1
|
||||
# HTML options first:
|
||||
# Use graphics not text for navigation:
|
||||
<xsl:param>navig.graphics=1
|
||||
# How far down we chunk nested sections, basically all of them:
|
||||
<xsl:param>chunk.section.depth=10
|
||||
# Don't put the first section on the same page as the TOC:
|
||||
<xsl:param>chunk.first.sections=1
|
||||
# How far down sections get TOC's
|
||||
<xsl:param>toc.section.depth=10
|
||||
# Max depth in each TOC:
|
||||
<xsl:param>toc.max.depth=4
|
||||
# How far down we go with TOC's
|
||||
<xsl:param>generate.section.toc.level=10
|
||||
# Index on type:
|
||||
<xsl:param>index.on.type=1
|
||||
<xsl:param>boost.noexpand.chapter.toc=1
|
||||
|
||||
#<xsl:param>root.filename="sf_dist_and_tools"
|
||||
#<xsl:param>graphicsize.extension=1
|
||||
#<xsl:param>use.extensions=1
|
||||
#<xsl:param>root.filename="sf_dist_and_tools"
|
||||
#<xsl:param>graphicsize.extension=1
|
||||
#<xsl:param>use.extensions=1
|
||||
|
||||
# PDF Options:
|
||||
# TOC Generation: this is needed for FOP-0.9 and later:
|
||||
<xsl:param>fop1.extensions=0
|
||||
<format>pdf:<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!
|
||||
<format>pdf:<xsl:param>fop.extensions=0
|
||||
<format>pdf:<xsl:param>fop1.extensions=0
|
||||
# No indent on body text:
|
||||
<format>pdf:<xsl:param>body.start.indent=0pt
|
||||
# Margin size:
|
||||
<format>pdf:<xsl:param>page.margin.inner=0.5in
|
||||
# Margin size:
|
||||
<format>pdf:<xsl:param>page.margin.outer=0.5in
|
||||
# Paper type = A4
|
||||
<format>pdf:<xsl:param>paper.type=A4
|
||||
# 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:
|
||||
<format>pdf:<xsl:param>admon.graphics.extension=".svg"
|
||||
<format>pdf:<xsl:param>use.role.for.mediaobject=1
|
||||
<format>pdf:<xsl:param>preferred.mediaobject.role=print
|
||||
<format>pdf:<xsl:param>img.src.path=$(images_location)/
|
||||
<format>pdf:<xsl:param>draft.mode="no"
|
||||
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/html
|
||||
<format>pdf:<xsl:param>index.on.type=1
|
||||
# PDF Options:
|
||||
# TOC Generation: this is needed for FOP-0.9 and later:
|
||||
<xsl:param>fop1.extensions=0
|
||||
<format>pdf:<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!
|
||||
<format>pdf:<xsl:param>fop.extensions=0
|
||||
<format>pdf:<xsl:param>fop1.extensions=0
|
||||
# No indent on body text:
|
||||
<format>pdf:<xsl:param>body.start.indent=0pt
|
||||
# Margin size:
|
||||
<format>pdf:<xsl:param>page.margin.inner=0.5in
|
||||
# Margin size:
|
||||
<format>pdf:<xsl:param>page.margin.outer=0.5in
|
||||
# Paper type = A4
|
||||
<format>pdf:<xsl:param>paper.type=A4
|
||||
# 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:
|
||||
<format>pdf:<xsl:param>admon.graphics.extension=".svg"
|
||||
<format>pdf:<xsl:param>use.role.for.mediaobject=1
|
||||
<format>pdf:<xsl:param>preferred.mediaobject.role=print
|
||||
<format>pdf:<xsl:param>img.src.path=$(images_location)/
|
||||
<format>pdf:<xsl:param>draft.mode="no"
|
||||
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/math/doc/html
|
||||
<format>pdf:<xsl:param>index.on.type=1
|
||||
;
|
||||
|
||||
|
||||
|
||||
install pdf-install : standalone : <install-type>PDF <location>. <name>cstdfloat.pdf ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user