Merge branch 'autodiff' of https://github.com/pulver/math into autodiff
BIN
doc/differentiation/autodiff.pdf
Normal file
229
doc/differentiation/autodiff.qbk
Normal file
@@ -0,0 +1,229 @@
|
||||
[/ Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)]
|
||||
|
||||
[section:autodiff Automatic Differentiation]
|
||||
[template autodiff_equation[name] '''<inlinemediaobject><imageobject><imagedata fileref="../equations/autodiff/'''[name]'''"></imagedata></imageobject></inlinemediaobject>''']
|
||||
|
||||
[h1:synopsis Synopsis]
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
|
||||
namespace boost { namespace math { namespace differentiation {
|
||||
|
||||
// Type for variables and constants.
|
||||
template<typename RealType, size_t Order, size_t... Orders>
|
||||
using autodiff_fvar = typename detail::nest_fvar<RealType,Order,Orders...>::type;
|
||||
|
||||
// Function returning a variable of differentiation.
|
||||
template<typename RealType, size_t Order, size_t... Orders>
|
||||
autodiff_fvar<RealType,Order,Orders...> make_fvar(const RealType& ca);
|
||||
|
||||
// Type of combined autodiff types.
|
||||
template<typename RealType, typename... RealTypes>
|
||||
using promote = typename detail::promote_args_n<RealType,RealTypes...>::type;
|
||||
|
||||
namespace detail {
|
||||
|
||||
// Single autodiff variable. Independent variables are created by nesting.
|
||||
template<typename RealType, size_t Order>
|
||||
class fvar
|
||||
{
|
||||
public:
|
||||
|
||||
// Query return value of function to get the derivatives.
|
||||
template<typename... Orders>
|
||||
get_type_at<RealType, sizeof...(Orders)-1> derivative(Orders... orders) const;
|
||||
|
||||
// All of the arithmetic and comparison operators are overloaded.
|
||||
template<typename RealType2, size_t Order2>
|
||||
fvar& operator+=(const fvar<RealType2,Order2>&);
|
||||
|
||||
fvar& operator+=(const root_type&);
|
||||
|
||||
// ...
|
||||
};
|
||||
|
||||
// Standard math functions are overloaded and called via argument-dependent lookup (ADL).
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order> floor(const fvar<RealType,Order>&);
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order> exp(const fvar<RealType,Order>&);
|
||||
|
||||
// ...
|
||||
|
||||
} // namespace detail
|
||||
|
||||
} } } // namespace boost::math::differentiation
|
||||
|
||||
|
||||
[h1:description Description]
|
||||
|
||||
Autodiff is a header-only C++ library that facilitates the [@https://en.wikipedia.org/wiki/Automatic_differentiation
|
||||
automatic differentiation] (forward mode) of mathematical functions of single and multiple variables.
|
||||
|
||||
This implementation is based upon the [@https://en.wikipedia.org/wiki/Taylor_series Taylor series] expansion of
|
||||
an analytic function /f/ at the point ['x[sub 0]]:
|
||||
|
||||
[/ Thanks to http://www.tlhiv.org/ltxpreview/ for LaTeX-to-SVG conversions. ]
|
||||
[/ \Large\begin{align*}
|
||||
f(x_0+\varepsilon) &= f(x_0) + f'(x_0)\varepsilon + \frac{f''(x_0)}{2!}\varepsilon^2 + \frac{f'''(x_0)}{3!}\varepsilon^3 + \cdots \\
|
||||
&= \sum_{n=0}^N\frac{f^{(n)}(x_0)}{n!}\varepsilon^n + O\left(\varepsilon^{N+1}\right).
|
||||
\end{align*} ]
|
||||
[:[:[autodiff_equation taylor_series.svg]]]
|
||||
|
||||
The essential idea of autodiff is the replacement of numbers with polynomials in the evaluation of /f/. By inputting
|
||||
the first-order polynomial ['x[sub 0]+\u03b5], the resulting polynomial in ['\u03b5] contains the function's
|
||||
derivatives within the coefficients. Each coefficient is equal to a derivative of its respective order, divided
|
||||
by the factorial of the order.
|
||||
|
||||
Assume one is interested in calculating the first /N/ derivatives of /f/ at ['x[sub 0]]. Then without any loss of
|
||||
precision to the calculation of the derivatives, all terms ['O(\u03b5[super N+1])] that include powers of ['\u03b5]
|
||||
greater than /N/ can be discarded, and under these truncation rules, /f/ provides a polynomial-to-polynomial
|
||||
transformation:
|
||||
|
||||
[/ \Large$$f \qquad : \qquad x_0+\varepsilon \qquad \mapsto \qquad
|
||||
\sum_{n=0}^Ny_n\varepsilon^n=\sum_{n=0}^N\frac{f^{(n)}(x_0)}{n!}\varepsilon^n.$$ ]
|
||||
[:[:[autodiff_equation polynomial_transform.svg]]]
|
||||
|
||||
C++'s ability to overload operators and functions allows for the creation of a class `fvar` ([_f]orward-mode autodiff
|
||||
[_var]iable) that represents polynomials in ['\u03b5]. Thus the same algorithm that calculates the numeric value of
|
||||
['y[sub 0]=f(x[sub 0])] is also used to calculate the polynomial ['\u03a3[sub n]y[sub n]\u03b5[super n]=f(x[sub
|
||||
0]+\u03b5)]. The derivatives are then found from the product of the respective factorial and coefficient:
|
||||
|
||||
[/ \Large$$\frac{d^nf}{dx^n}(x_0)=n!y_n.$$ ]
|
||||
[:[:[autodiff_equation derivative_formula.svg]]]
|
||||
|
||||
|
||||
[h1:examples Examples]
|
||||
|
||||
[h2:example-single-variable Example 1: Single-variable derivatives]
|
||||
|
||||
[h3 Calculate derivatives of ['f(x)=x[super 4]] at /x/=2.]
|
||||
|
||||
In this example, `autodiff_fvar<double,5>` is a data type that can hold a polynomial of up to degree 5, and
|
||||
`make_fvar<double,5>(2)` represents the polynomial 2+['\u03b5]. Internally, this is modeled by a `std::array<double,6>`
|
||||
whose elements `{2, 1, 0, 0, 0, 0}` correspond to the 6 coefficients of the polynomial upon initialization.
|
||||
Its fourth power is a polynomial with coefficients `y = {16, 32, 24, 8, 1, 0}`. The derivatives are obtained
|
||||
using the formula ['f[super (n)](2)=n!*y[n]].
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <iostream>
|
||||
|
||||
template<typename T>
|
||||
T fourth_power(T x)
|
||||
{
|
||||
x *= x;
|
||||
return x *= x;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
constexpr int Order=5; // The highest order derivative to be calculated.
|
||||
const autodiff_fvar<double,Order> x = make_fvar<double,Order>(2.0); // Find derivatives at x=2.
|
||||
const autodiff_fvar<double,Order> y = fourth_power(x);
|
||||
for (int i=0 ; i<=Order ; ++i)
|
||||
std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << std::endl;
|
||||
return 0;
|
||||
}
|
||||
/* Output:
|
||||
y.derivative(0) = 16
|
||||
y.derivative(1) = 32
|
||||
y.derivative(2) = 48
|
||||
y.derivative(3) = 48
|
||||
y.derivative(4) = 24
|
||||
y.derivative(5) = 0
|
||||
*/
|
||||
|
||||
The above calculates
|
||||
|
||||
[/ \Large\begin{alignat*}{3}
|
||||
{\tt y.derivative(0)} &=& f(2) =&& \left.x^4\right|_{x=2} &= 16\\
|
||||
{\tt y.derivative(1)} &=& f'(2) =&& \left.4\cdot x^3\right|_{x=2} &= 32\\
|
||||
{\tt y.derivative(2)} &=& f''(2) =&& \left.4\cdot 3\cdot x^2\right|_{x=2} &= 48\\
|
||||
{\tt y.derivative(3)} &=& f'''(2) =&& \left.4\cdot 3\cdot2\cdot x\right|_{x=2} &= 48\\
|
||||
{\tt y.derivative(4)} &=& f^{(4)}(2) =&& 4\cdot 3\cdot2\cdot1 &= 24\\
|
||||
{\tt y.derivative(5)} &=& f^{(5)}(2) =&& 0 &
|
||||
\end{alignat*} ]
|
||||
[:[:[autodiff_equation example1.svg]]]
|
||||
|
||||
[h2:example-multiprecision
|
||||
Example 2: Multi-variable mixed partial derivatives with multi-precision data type]
|
||||
|
||||
[/ \Large$\frac{\partial^{12}f}{\partial w^{3}\partial x^{2}\partial y^{4}\partial z^{3}}(11,12,13,14)$]
|
||||
[/ \Large$f(w,x,y,z)=\exp\left(w\sin\left(\frac{x\log(y)}{z}\right)+\sqrt{\frac{wz}{xy}}\right)+\frac{w^2}{\tan(z)}$]
|
||||
[h3 Calculate [autodiff_equation mixed12.svg] with a precision of about 50 decimal digits,
|
||||
where [autodiff_equation example2f.svg].]
|
||||
|
||||
In this example, the data type `autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>` represents a multivariate polynomial in
|
||||
4 independent variables, where the highest powers of each are `Nw`, `Nx`, `Ny` and `Nz`. The underlying arithmetic
|
||||
data type, aliased as `root_type`, is `boost::multiprecision::cpp_bin_float_50`. The internal data structure is
|
||||
`std::array<std::array<std::array<std::array<cpp_bin_float_50,Nz+1>,Ny+1>,Nx+1>,Nw+1>`. The `root_type` is always
|
||||
the first template parameter to `autodiff_fvar<...>` followed by the maximum derivative orders that are to be
|
||||
calculated for each independent variable.
|
||||
|
||||
When variables are initialized with `make_fvar<...>()`, the position of the last derivative order given in the
|
||||
template parameter pack determines which variable is taken to be independent. In other words, it determines which
|
||||
of the 4 different polynomial variables ['\u03b5[sub w]], ['\u03b5[sub x]], ['\u03b5[sub y]], or ['\u03b5[sub z]]
|
||||
are to be added to the constant term:
|
||||
|
||||
[/ \Large\begin{align*}
|
||||
\texttt{make\_fvar<cpp\_bin\_float\_50,Nw>(11)} &= 11+\varepsilon_w \\
|
||||
\texttt{make\_fvar<cpp\_bin\_float\_50,0,Nx>(12)} &= 12+\varepsilon_x \\
|
||||
\texttt{make\_fvar<cpp\_bin\_float\_50,0,0,Ny>(13)} &= 13+\varepsilon_y \\
|
||||
\texttt{make\_fvar<cpp\_bin\_float\_50,0,0,0,Nz>(14)} &= 14+\varepsilon_z
|
||||
\end{align*}\]
|
||||
[:[:[autodiff_equation example2make_fvar.svg]]]
|
||||
|
||||
Instances of different types are automatically promoted to the smallest multi-variable type that accommodates both
|
||||
when they are combined (added, subtracted, multiplied, divided.)
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <boost/multiprecision/cpp_bin_float.hpp>
|
||||
#include <iostream>
|
||||
|
||||
template<typename T>
|
||||
T f(const T& w, const T& x, const T& y, const T& z)
|
||||
{
|
||||
using namespace std;
|
||||
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
using cpp_bin_float_50 = boost::multiprecision::cpp_bin_float_50;
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
constexpr int Nw=3; // Max order of derivative to calculate for w
|
||||
constexpr int Nx=2; // Max order of derivative to calculate for x
|
||||
constexpr int Ny=4; // Max order of derivative to calculate for y
|
||||
constexpr int Nz=3; // Max order of derivative to calculate for z
|
||||
using var = autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>;
|
||||
const var w = make_fvar<cpp_bin_float_50,Nw>(11);
|
||||
const var x = make_fvar<cpp_bin_float_50,0,Nx>(12);
|
||||
const var y = make_fvar<cpp_bin_float_50,0,0,Ny>(13);
|
||||
const var z = make_fvar<cpp_bin_float_50,0,0,0,Nz>(14);
|
||||
const var v = f(w,x,y,z);
|
||||
// Calculated from Mathematica symbolic differentiation. See multiprecision.nb for script.
|
||||
const cpp_bin_float_50 answer("1976.319600747797717779881875290418720908121189218755");
|
||||
std::cout << std::setprecision(std::numeric_limits<cpp_bin_float_50>::digits10)
|
||||
<< "mathematica : " << answer << '\n'
|
||||
<< "autodiff : " << v.derivative(Nw,Nx,Ny,Nz) << '\n'
|
||||
<< "relative error: " << std::setprecision(3) << (v.derivative(Nw,Nx,Ny,Nz)/answer-1) << std::endl;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
Output:
|
||||
mathematica : 1976.3196007477977177798818752904187209081211892188
|
||||
autodiff : 1976.3196007477977177798818752904187209081211892188
|
||||
relative error: 2.67e-50
|
||||
*/
|
||||
|
||||
[h1 Manual]
|
||||
Additional details are in the [@../differentiation/autodiff.pdf autodiff manual].
|
||||
|
||||
[endsect]
|
||||
1065
doc/differentiation/autodiff.tex
Normal file
94
doc/equations/autodiff/derivative_formula.svg
Normal file
@@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96pt" height="31pt" viewBox="0 0 96 31" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 7.21875 -9.59375 C 7.234375 -9.65625 7.265625 -9.734375 7.265625 -9.8125 C 7.265625 -9.953125 7.109375 -9.953125 7.078125 -9.953125 C 7.078125 -9.953125 6.375 -9.890625 6.296875 -9.890625 C 6.046875 -9.875 5.84375 -9.84375 5.578125 -9.828125 C 5.21875 -9.796875 5.125 -9.78125 5.125 -9.53125 C 5.125 -9.375 5.234375 -9.375 5.4375 -9.375 C 6.140625 -9.375 6.15625 -9.25 6.15625 -9.109375 C 6.15625 -9.015625 6.125 -8.90625 6.109375 -8.859375 L 5.234375 -5.375 C 5.078125 -5.75 4.6875 -6.328125 3.9375 -6.328125 C 2.328125 -6.328125 0.578125 -4.234375 0.578125 -2.109375 C 0.578125 -0.6875 1.40625 0.140625 2.375 0.140625 C 3.171875 0.140625 3.84375 -0.46875 4.25 -0.953125 C 4.390625 -0.09375 5.0625 0.140625 5.5 0.140625 C 5.921875 0.140625 6.265625 -0.109375 6.53125 -0.625 C 6.75 -1.125 6.953125 -2 6.953125 -2.046875 C 6.953125 -2.125 6.90625 -2.1875 6.8125 -2.1875 C 6.6875 -2.1875 6.671875 -2.109375 6.609375 -1.890625 C 6.390625 -1.046875 6.125 -0.140625 5.53125 -0.140625 C 5.125 -0.140625 5.09375 -0.515625 5.09375 -0.796875 C 5.09375 -0.859375 5.09375 -1.15625 5.1875 -1.5625 Z M 4.3125 -1.703125 C 4.25 -1.46875 4.25 -1.4375 4.046875 -1.15625 C 3.734375 -0.765625 3.09375 -0.140625 2.421875 -0.140625 C 1.84375 -0.140625 1.5 -0.671875 1.5 -1.515625 C 1.5 -2.3125 1.953125 -3.921875 2.21875 -4.515625 C 2.71875 -5.515625 3.390625 -6.03125 3.9375 -6.03125 C 4.890625 -6.03125 5.078125 -4.859375 5.078125 -4.75 C 5.078125 -4.734375 5.03125 -4.546875 5.015625 -4.515625 Z M 4.3125 -1.703125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.110938" y="10.7281"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.410158" y="5.51716"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="13.880858" y="10.7281"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.09375 141.601562 L 223.515625 141.601562 " transform="matrix(0.1,0,0,-0.1,0,31)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.344922" y="30.267187"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="7.643932" y="30.267187"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="15.626922" y="26.126957"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="23.537862" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="29.000752" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="36.983952" y="22.580857"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="42.464812" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="51.905845" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="66.818712" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="75.206602" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="79.112462" y="20.430077"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="85.962072" y="22.580857"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="92.432772" y="20.430077"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
723
doc/equations/autodiff/example1.svg
Normal file
@@ -0,0 +1,723 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="291pt" height="129pt" viewBox="0 0 291 129" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 C 4.828125 -4.171875 4.015625 -1.78125 3.8125 -0.96875 L 3.796875 -0.96875 C 3.734375 -1.28125 3.671875 -1.4375 3.53125 -1.828125 L 2.1875 -5.34375 L 2.53125 -5.34375 C 2.71875 -5.34375 3.109375 -5.34375 3.109375 -5.765625 C 3.109375 -6.1875 2.71875 -6.1875 2.53125 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.75 -5.34375 0.953125 -5.34375 L 1.328125 -5.34375 L 3.34375 -0.1875 C 3.40625 -0.046875 3.40625 -0.015625 3.40625 0 C 3.40625 0.03125 3.03125 1.28125 2.8125 1.671875 C 2.71875 1.828125 2.359375 2.5 1.671875 2.421875 C 1.6875 2.375 1.734375 2.296875 1.734375 2.140625 C 1.734375 1.8125 1.5 1.578125 1.171875 1.578125 C 0.8125 1.578125 0.609375 1.828125 0.609375 2.15625 C 0.609375 2.703125 1.0625 3.265625 1.78125 3.265625 C 3.171875 3.265625 3.78125 1.421875 3.828125 1.3125 Z M 6.078125 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 6 -8.171875 C 6 -8.625 5.90625 -8.765625 5.421875 -8.765625 L 4.46875 -8.765625 C 4.28125 -8.765625 3.90625 -8.765625 3.90625 -8.34375 C 3.90625 -7.9375 4.28125 -7.9375 4.46875 -7.9375 L 5.0625 -7.9375 L 5.0625 -5.546875 C 4.828125 -5.78125 4.25 -6.265625 3.375 -6.265625 C 1.84375 -6.265625 0.53125 -4.890625 0.53125 -3.078125 C 0.53125 -1.3125 1.765625 0.09375 3.234375 0.09375 C 4.171875 0.09375 4.796875 -0.46875 5.0625 -0.78125 C 5.0625 -0.1875 5.0625 0 5.640625 0 L 6.578125 0 C 6.78125 0 7.15625 0 7.15625 -0.421875 C 7.15625 -0.828125 6.78125 -0.828125 6.578125 -0.828125 L 6 -0.828125 Z M 5.0625 -2.71875 C 5.0625 -1.921875 4.40625 -0.75 3.328125 -0.75 C 2.296875 -0.75 1.46875 -1.796875 1.46875 -3.078125 C 1.46875 -4.453125 2.4375 -5.4375 3.453125 -5.4375 C 4.390625 -5.4375 5.0625 -4.59375 5.0625 -3.84375 Z M 5.0625 -2.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 5.96875 -2.75 C 6.265625 -2.75 6.546875 -2.75 6.546875 -3.28125 C 6.546875 -4.96875 5.59375 -6.3125 3.796875 -6.3125 C 2.140625 -6.3125 0.796875 -4.875 0.796875 -3.125 C 0.796875 -1.3125 2.25 0.09375 4.015625 0.09375 C 5.859375 0.09375 6.546875 -1.1875 6.546875 -1.5625 C 6.546875 -1.65625 6.515625 -1.96875 6.0625 -1.96875 C 5.796875 -1.96875 5.703125 -1.859375 5.625 -1.65625 C 5.265625 -0.8125 4.328125 -0.75 4.0625 -0.75 C 2.875 -0.75 1.921875 -1.65625 1.765625 -2.75 Z M 1.78125 -3.546875 C 1.96875 -4.765625 2.890625 -5.484375 3.796875 -5.484375 C 5.234375 -5.484375 5.53125 -4.265625 5.59375 -3.546875 Z M 1.78125 -3.546875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 3.09375 -2.71875 C 3.09375 -4.421875 4.296875 -5.4375 5.515625 -5.4375 C 5.59375 -5.4375 5.6875 -5.4375 5.75 -5.421875 C 5.796875 -4.90625 6.203125 -4.859375 6.296875 -4.859375 C 6.625 -4.859375 6.859375 -5.109375 6.859375 -5.421875 C 6.859375 -6.03125 6.25 -6.265625 5.53125 -6.265625 C 4.578125 -6.265625 3.765625 -5.84375 3.09375 -5.03125 L 3.09375 -5.59375 C 3.09375 -6.03125 3.015625 -6.1875 2.53125 -6.1875 L 1.078125 -6.1875 C 0.875 -6.1875 0.5 -6.1875 0.5 -5.765625 C 0.5 -5.34375 0.875 -5.34375 1.078125 -5.34375 L 2.171875 -5.34375 L 2.171875 -0.828125 L 1.078125 -0.828125 C 0.875 -0.828125 0.5 -0.828125 0.5 -0.421875 C 0.5 0 0.875 0 1.078125 0 L 4.609375 0 C 4.8125 0 5.171875 0 5.171875 -0.421875 C 5.171875 -0.828125 4.8125 -0.828125 4.609375 -0.828125 L 3.09375 -0.828125 Z M 3.09375 -2.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 4.328125 -8.140625 C 4.328125 -8.484375 4.046875 -8.78125 3.6875 -8.78125 C 3.328125 -8.78125 3.046875 -8.484375 3.046875 -8.140625 C 3.046875 -7.78125 3.328125 -7.484375 3.6875 -7.484375 C 4.046875 -7.484375 4.328125 -7.78125 4.328125 -8.140625 Z M 1.859375 -6.1875 C 1.65625 -6.1875 1.296875 -6.1875 1.296875 -5.765625 C 1.296875 -5.34375 1.65625 -5.34375 1.859375 -5.34375 L 3.40625 -5.34375 L 3.40625 -0.828125 L 1.765625 -0.828125 C 1.5625 -0.828125 1.171875 -0.828125 1.171875 -0.421875 C 1.171875 0 1.5625 0 1.765625 0 L 5.75 0 C 5.953125 0 6.328125 0 6.328125 -0.421875 C 6.328125 -0.828125 5.953125 -0.828125 5.75 -0.828125 L 4.328125 -0.828125 L 4.328125 -5.59375 C 4.328125 -6.03125 4.25 -6.1875 3.765625 -6.1875 Z M 1.859375 -6.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 L 3.6875 -0.734375 L 2.140625 -5.34375 L 2.5 -5.34375 C 2.703125 -5.34375 3.078125 -5.34375 3.078125 -5.765625 C 3.078125 -6.1875 2.703125 -6.1875 2.5 -6.1875 L 0.921875 -6.1875 C 0.71875 -6.1875 0.328125 -6.1875 0.328125 -5.765625 C 0.328125 -5.34375 0.71875 -5.34375 0.921875 -5.34375 L 1.296875 -5.34375 L 2.9375 -0.421875 C 3.09375 0.078125 3.40625 0.078125 3.6875 0.078125 C 3.953125 0.078125 4.28125 0.078125 4.4375 -0.421875 Z M 6.078125 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d="M 5.9375 -4.078125 C 5.9375 -5.15625 5.125 -6.3125 3.1875 -6.3125 C 2.578125 -6.3125 1.1875 -6.3125 1.1875 -5.328125 C 1.1875 -4.9375 1.46875 -4.71875 1.78125 -4.71875 C 1.859375 -4.71875 2.34375 -4.75 2.359375 -5.34375 C 2.359375 -5.421875 2.359375 -5.4375 2.671875 -5.46875 C 2.84375 -5.484375 3.03125 -5.484375 3.203125 -5.484375 C 3.53125 -5.484375 4.015625 -5.484375 4.484375 -5.125 C 5 -4.71875 5 -4.3125 5 -3.90625 C 4.15625 -3.875 3.328125 -3.8125 2.4375 -3.53125 C 1.71875 -3.28125 0.796875 -2.765625 0.796875 -1.796875 C 0.796875 -0.78125 1.703125 0.09375 3.046875 0.09375 C 3.5 0.09375 4.390625 0.015625 5.140625 -0.5 C 5.421875 -0.03125 6.140625 0 6.6875 0 C 7.03125 0 7.375 0 7.375 -0.421875 C 7.375 -0.828125 7 -0.828125 6.796875 -0.828125 C 6.421875 -0.828125 6.140625 -0.859375 5.9375 -0.953125 Z M 5 -1.890625 C 5 -1.5625 5 -1.265625 4.421875 -0.984375 C 3.921875 -0.75 3.234375 -0.75 3.203125 -0.75 C 2.359375 -0.75 1.734375 -1.203125 1.734375 -1.796875 C 1.734375 -2.640625 3.265625 -3.125 5 -3.125 Z M 5 -1.890625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-7">
|
||||
<path style="stroke:none;" d="M 3.09375 -5.34375 L 5.421875 -5.34375 C 5.625 -5.34375 6 -5.34375 6 -5.765625 C 6 -6.1875 5.625 -6.1875 5.421875 -6.1875 L 3.09375 -6.1875 L 3.09375 -7.359375 C 3.09375 -7.609375 3.09375 -7.953125 2.640625 -7.953125 C 2.171875 -7.953125 2.171875 -7.609375 2.171875 -7.359375 L 2.171875 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.734375 -5.34375 0.9375 -5.34375 L 2.171875 -5.34375 L 2.171875 -1.734375 C 2.171875 -0.40625 3.078125 0.09375 4.109375 0.09375 C 4.890625 0.09375 6.3125 -0.296875 6.3125 -1.765625 C 6.3125 -2.046875 6.3125 -2.359375 5.84375 -2.359375 C 5.375 -2.359375 5.375 -2.046875 5.375 -1.75 C 5.359375 -0.890625 4.546875 -0.75 4.21875 -0.75 C 3.09375 -0.75 3.09375 -1.46875 3.09375 -1.8125 Z M 3.09375 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-8">
|
||||
<path style="stroke:none;" d="M 6.65625 -4.375 C 6.65625 -7.046875 5.234375 -8.9375 3.6875 -8.9375 C 2.125 -8.9375 0.71875 -7.015625 0.71875 -4.390625 C 0.71875 -1.71875 2.140625 0.171875 3.6875 0.171875 C 5.25 0.171875 6.65625 -1.75 6.65625 -4.375 Z M 3.6875 -0.65625 C 2.546875 -0.65625 1.65625 -2.390625 1.65625 -4.53125 C 1.65625 -6.671875 2.640625 -8.109375 3.6875 -8.109375 C 4.734375 -8.109375 5.71875 -6.671875 5.71875 -4.53125 C 5.71875 -2.40625 4.8125 -0.65625 3.6875 -0.65625 Z M 3.6875 -0.65625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-9">
|
||||
<path style="stroke:none;" d="M 4.359375 -8.34375 C 4.359375 -8.5625 4.359375 -8.9375 3.9375 -8.9375 C 3.703125 -8.9375 3.609375 -8.8125 3.53125 -8.625 C 3.25 -8 2.78125 -7.25 2.015625 -7.1875 C 1.8125 -7.171875 1.5 -7.140625 1.5 -6.765625 C 1.5 -6.53125 1.65625 -6.359375 1.96875 -6.359375 C 2.765625 -6.359375 3.390625 -6.953125 3.421875 -6.984375 L 3.421875 -0.828125 L 2.171875 -0.828125 C 1.96875 -0.828125 1.578125 -0.828125 1.578125 -0.421875 C 1.578125 0 1.96875 0 2.171875 0 L 5.625 0 C 5.828125 0 6.203125 0 6.203125 -0.421875 C 6.203125 -0.828125 5.828125 -0.828125 5.625 -0.828125 L 4.359375 -0.828125 Z M 4.359375 -8.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-10">
|
||||
<path style="stroke:none;" d="M 4.984375 -3.15625 C 5.1875 -3.328125 6.640625 -4.5625 6.640625 -6.15625 C 6.640625 -7.78125 5.296875 -8.9375 3.5 -8.9375 C 1.84375 -8.9375 0.734375 -7.6875 0.734375 -6.484375 C 0.734375 -5.875 1.234375 -5.84375 1.3125 -5.84375 C 1.578125 -5.84375 1.890625 -6.03125 1.890625 -6.421875 C 1.890625 -6.703125 1.796875 -6.78125 1.71875 -6.84375 C 1.921875 -7.609375 2.578125 -8.109375 3.40625 -8.109375 C 4.640625 -8.109375 5.703125 -7.40625 5.703125 -6.15625 C 5.703125 -5.03125 4.859375 -4.171875 4.09375 -3.5 L 0.9375 -0.765625 C 0.78125 -0.625 0.734375 -0.59375 0.734375 -0.421875 C 0.734375 0 1.125 0 1.3125 0 L 6.328125 0 C 6.640625 -0.09375 6.640625 -0.375 6.640625 -0.59375 L 6.640625 -0.890625 C 6.640625 -1.140625 6.640625 -1.484375 6.1875 -1.484375 C 5.703125 -1.484375 5.703125 -1.171875 5.703125 -0.828125 L 2.25 -0.828125 Z M 4.984375 -3.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-11">
|
||||
<path style="stroke:none;" d="M 3.671875 -4.3125 C 5.15625 -4.3125 5.828125 -3.265625 5.828125 -2.5 C 5.828125 -1.546875 4.984375 -0.65625 3.734375 -0.65625 C 2.296875 -0.65625 1.65625 -1.4375 1.65625 -1.640625 C 1.65625 -1.65625 1.65625 -1.6875 1.671875 -1.703125 C 1.734375 -1.8125 1.78125 -1.921875 1.78125 -2.046875 C 1.78125 -2.359375 1.546875 -2.625 1.203125 -2.625 C 0.90625 -2.625 0.609375 -2.4375 0.609375 -2 C 0.609375 -0.75 1.984375 0.171875 3.734375 0.171875 C 5.53125 0.171875 6.75 -1.125 6.75 -2.484375 C 6.75 -3.21875 6.359375 -4.234375 5.09375 -4.78125 C 5.96875 -5.328125 6.359375 -6.1875 6.359375 -6.921875 C 6.359375 -8 5.28125 -8.9375 3.734375 -8.9375 C 2.140625 -8.9375 1.015625 -8.25 1.015625 -7.1875 C 1.015625 -6.71875 1.375 -6.5625 1.609375 -6.5625 C 1.859375 -6.5625 2.1875 -6.765625 2.1875 -7.15625 C 2.1875 -7.390625 2.0625 -7.515625 2.0625 -7.53125 C 2.5 -8.078125 3.484375 -8.109375 3.734375 -8.109375 C 4.703125 -8.109375 5.421875 -7.59375 5.421875 -6.90625 C 5.421875 -6.5 5.15625 -5.3125 3.640625 -5.203125 C 3.109375 -5.171875 2.890625 -5.15625 2.828125 -5.15625 C 2.53125 -5.125 2.46875 -4.9375 2.46875 -4.734375 C 2.46875 -4.3125 2.765625 -4.3125 3.015625 -4.3125 Z M 3.671875 -4.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-12">
|
||||
<path style="stroke:none;" d="M 0.546875 -3.4375 C 0.421875 -3.25 0.421875 -3.234375 0.421875 -2.96875 C 0.421875 -2.46875 0.609375 -2.40625 0.984375 -2.40625 L 4.5 -2.40625 L 4.5 -0.828125 L 3.640625 -0.828125 C 3.4375 -0.828125 3.0625 -0.828125 3.0625 -0.421875 C 3.0625 0 3.4375 0 3.640625 0 L 6.171875 0 C 6.375 0 6.734375 0 6.734375 -0.421875 C 6.734375 -0.828125 6.375 -0.828125 6.171875 -0.828125 L 5.3125 -0.828125 L 5.3125 -2.40625 L 6.390625 -2.40625 C 6.578125 -2.40625 6.953125 -2.40625 6.953125 -2.828125 C 6.953125 -3.234375 6.578125 -3.234375 6.390625 -3.234375 L 5.3125 -3.234375 L 5.3125 -8.375 C 5.3125 -8.84375 5.203125 -8.96875 4.71875 -8.96875 L 4.390625 -8.96875 C 4.046875 -8.96875 3.96875 -8.953125 3.796875 -8.671875 Z M 1.375 -3.234375 L 4.5 -8.265625 L 4.5 -3.234375 Z M 1.375 -3.234375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-13">
|
||||
<path style="stroke:none;" d="M 5.5625 -7.9375 C 5.765625 -7.9375 6.140625 -7.9375 6.140625 -8.34375 C 6.140625 -8.765625 5.765625 -8.765625 5.5625 -8.765625 L 1.84375 -8.765625 C 1.375 -8.765625 1.265625 -8.65625 1.265625 -8.203125 L 1.265625 -4.375 C 1.265625 -4.171875 1.265625 -3.8125 1.6875 -3.8125 C 1.921875 -3.8125 1.984375 -3.890625 2.09375 -4.03125 C 2.53125 -4.53125 3.15625 -4.765625 3.90625 -4.765625 C 5.015625 -4.765625 5.703125 -3.75 5.703125 -2.71875 C 5.703125 -1.5625 4.703125 -0.65625 3.5 -0.65625 C 2.75 -0.65625 2 -1.015625 1.734375 -1.6875 C 1.796875 -1.75 1.890625 -1.84375 1.890625 -2.109375 C 1.890625 -2.5 1.5625 -2.703125 1.3125 -2.703125 C 1.1875 -2.703125 0.734375 -2.625 0.734375 -2.0625 C 0.734375 -0.859375 1.921875 0.171875 3.5 0.171875 C 5.234375 0.171875 6.640625 -1.125 6.640625 -2.71875 C 6.640625 -4.171875 5.5625 -5.59375 3.90625 -5.59375 C 3.421875 -5.59375 2.796875 -5.515625 2.1875 -5.171875 L 2.1875 -7.9375 Z M 5.5625 -7.9375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-4">
|
||||
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-5">
|
||||
<path style="stroke:none;" d="M 1.765625 -4.984375 C 1.765625 -8.625 3.53125 -9.1875 4.296875 -9.1875 C 4.8125 -9.1875 5.328125 -9.03125 5.609375 -8.609375 C 5.4375 -8.609375 4.890625 -8.609375 4.890625 -8.015625 C 4.890625 -7.703125 5.109375 -7.4375 5.484375 -7.4375 C 5.84375 -7.4375 6.078125 -7.640625 6.078125 -8.0625 C 6.078125 -8.8125 5.53125 -9.53125 4.28125 -9.53125 C 2.484375 -9.53125 0.59375 -7.6875 0.59375 -4.53125 C 0.59375 -0.59375 2.3125 0.296875 3.53125 0.296875 C 5.09375 0.296875 6.421875 -1.0625 6.421875 -2.921875 C 6.421875 -4.828125 5.09375 -6.109375 3.65625 -6.109375 C 2.375 -6.109375 1.90625 -5 1.765625 -4.609375 Z M 3.53125 -0.09375 C 2.625 -0.09375 2.1875 -0.890625 2.0625 -1.1875 C 1.9375 -1.5625 1.796875 -2.265625 1.796875 -3.265625 C 1.796875 -4.40625 2.3125 -5.828125 3.59375 -5.828125 C 4.390625 -5.828125 4.8125 -5.296875 5.015625 -4.8125 C 5.25 -4.28125 5.25 -3.5625 5.25 -2.9375 C 5.25 -2.203125 5.25 -1.5625 4.984375 -1.015625 C 4.625 -0.328125 4.109375 -0.09375 3.53125 -0.09375 Z M 3.53125 -0.09375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-6">
|
||||
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-7">
|
||||
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-8">
|
||||
<path style="stroke:none;" d="M 4.28125 -5.171875 C 4.984375 -5.5625 6.03125 -6.21875 6.03125 -7.4375 C 6.03125 -8.671875 4.828125 -9.53125 3.515625 -9.53125 C 2.09375 -9.53125 0.96875 -8.484375 0.96875 -7.1875 C 0.96875 -6.703125 1.125 -6.203125 1.515625 -5.71875 C 1.671875 -5.53125 1.6875 -5.515625 2.703125 -4.8125 C 1.3125 -4.171875 0.59375 -3.21875 0.59375 -2.171875 C 0.59375 -0.640625 2.03125 0.296875 3.5 0.296875 C 5.09375 0.296875 6.421875 -0.875 6.421875 -2.375 C 6.421875 -3.84375 5.390625 -4.484375 4.28125 -5.171875 Z M 2.328125 -6.46875 C 2.140625 -6.59375 1.5625 -6.96875 1.5625 -7.671875 C 1.5625 -8.609375 2.53125 -9.1875 3.5 -9.1875 C 4.53125 -9.1875 5.453125 -8.453125 5.453125 -7.421875 C 5.453125 -6.546875 4.8125 -5.84375 3.984375 -5.375 Z M 3 -4.625 L 4.734375 -3.484375 C 5.109375 -3.234375 5.765625 -2.796875 5.765625 -1.921875 C 5.765625 -0.828125 4.65625 -0.09375 3.515625 -0.09375 C 2.296875 -0.09375 1.25 -0.96875 1.25 -2.171875 C 1.25 -3.28125 2.0625 -4.1875 3 -4.625 Z M 3 -4.625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-9">
|
||||
<path style="stroke:none;" d="M 6.421875 -4.59375 C 6.421875 -5.78125 6.359375 -6.9375 5.84375 -8.03125 C 5.25 -9.21875 4.21875 -9.53125 3.515625 -9.53125 C 2.6875 -9.53125 1.65625 -9.125 1.140625 -7.9375 C 0.734375 -7.03125 0.59375 -6.140625 0.59375 -4.59375 C 0.59375 -3.203125 0.6875 -2.15625 1.203125 -1.140625 C 1.765625 -0.046875 2.75 0.296875 3.5 0.296875 C 4.75 0.296875 5.46875 -0.4375 5.875 -1.28125 C 6.390625 -2.359375 6.421875 -3.765625 6.421875 -4.59375 Z M 3.5 0.015625 C 3.046875 0.015625 2.109375 -0.25 1.84375 -1.8125 C 1.671875 -2.671875 1.671875 -3.765625 1.671875 -4.765625 C 1.671875 -5.9375 1.671875 -7 1.90625 -7.84375 C 2.15625 -8.8125 2.890625 -9.25 3.5 -9.25 C 4.046875 -9.25 4.875 -8.921875 5.15625 -7.6875 C 5.328125 -6.875 5.328125 -5.734375 5.328125 -4.765625 C 5.328125 -3.796875 5.328125 -2.71875 5.171875 -1.84375 C 4.90625 -0.265625 4 0.015625 3.5 0.015625 Z M 3.5 0.015625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 2.9375 -1.640625 L 2.9375 -0.78125 C 2.9375 -0.421875 2.90625 -0.3125 2.171875 -0.3125 L 1.96875 -0.3125 L 1.96875 0 C 2.375 -0.03125 2.890625 -0.03125 3.3125 -0.03125 C 3.734375 -0.03125 4.25 -0.03125 4.671875 0 L 4.671875 -0.3125 L 4.453125 -0.3125 C 3.71875 -0.3125 3.703125 -0.421875 3.703125 -0.78125 L 3.703125 -1.640625 L 4.6875 -1.640625 L 4.6875 -1.953125 L 3.703125 -1.953125 L 3.703125 -6.484375 C 3.703125 -6.6875 3.703125 -6.75 3.53125 -6.75 C 3.453125 -6.75 3.421875 -6.75 3.34375 -6.625 L 0.28125 -1.953125 L 0.28125 -1.640625 Z M 2.984375 -1.953125 L 0.5625 -1.953125 L 2.984375 -5.671875 Z M 2.984375 -1.953125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-1">
|
||||
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-2">
|
||||
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-3">
|
||||
<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-4">
|
||||
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-5">
|
||||
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-6">
|
||||
<path style="stroke:none;" d="M 4.46875 -2 C 4.46875 -3.1875 3.65625 -4.1875 2.578125 -4.1875 C 2.109375 -4.1875 1.671875 -4.03125 1.3125 -3.671875 L 1.3125 -5.625 C 1.515625 -5.5625 1.84375 -5.5 2.15625 -5.5 C 3.390625 -5.5 4.09375 -6.40625 4.09375 -6.53125 C 4.09375 -6.59375 4.0625 -6.640625 3.984375 -6.640625 C 3.984375 -6.640625 3.953125 -6.640625 3.90625 -6.609375 C 3.703125 -6.515625 3.21875 -6.3125 2.546875 -6.3125 C 2.15625 -6.3125 1.6875 -6.390625 1.21875 -6.59375 C 1.140625 -6.625 1.125 -6.625 1.109375 -6.625 C 1 -6.625 1 -6.546875 1 -6.390625 L 1 -3.4375 C 1 -3.265625 1 -3.1875 1.140625 -3.1875 C 1.21875 -3.1875 1.234375 -3.203125 1.28125 -3.265625 C 1.390625 -3.421875 1.75 -3.96875 2.5625 -3.96875 C 3.078125 -3.96875 3.328125 -3.515625 3.40625 -3.328125 C 3.5625 -2.953125 3.59375 -2.578125 3.59375 -2.078125 C 3.59375 -1.71875 3.59375 -1.125 3.34375 -0.703125 C 3.109375 -0.3125 2.734375 -0.0625 2.28125 -0.0625 C 1.5625 -0.0625 0.984375 -0.59375 0.8125 -1.171875 C 0.84375 -1.171875 0.875 -1.15625 0.984375 -1.15625 C 1.3125 -1.15625 1.484375 -1.40625 1.484375 -1.640625 C 1.484375 -1.890625 1.3125 -2.140625 0.984375 -2.140625 C 0.84375 -2.140625 0.5 -2.0625 0.5 -1.609375 C 0.5 -0.75 1.1875 0.21875 2.296875 0.21875 C 3.453125 0.21875 4.46875 -0.734375 4.46875 -2 Z M 4.46875 -2 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-0">
|
||||
<path style="stroke:none;" d="M 2.078125 8.375 C 2.078125 8.609375 2.078125 8.90625 2.375 8.90625 C 2.703125 8.90625 2.703125 8.625 2.703125 8.375 L 2.703125 0.234375 C 2.703125 0 2.703125 -0.296875 2.390625 -0.296875 C 2.078125 -0.296875 2.078125 -0.015625 2.078125 0.234375 Z M 2.078125 8.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph5-0">
|
||||
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph6-0">
|
||||
<path style="stroke:none;" d="M 2.515625 -4.734375 C 2.578125 -4.859375 2.609375 -4.9375 2.609375 -5.046875 C 2.609375 -5.328125 2.359375 -5.578125 2.046875 -5.578125 C 1.765625 -5.578125 1.578125 -5.390625 1.515625 -5.125 L 0.328125 -0.765625 C 0.328125 -0.75 0.296875 -0.640625 0.296875 -0.625 C 0.296875 -0.515625 0.546875 -0.453125 0.625 -0.453125 C 0.6875 -0.453125 0.703125 -0.484375 0.75 -0.609375 Z M 2.515625 -4.734375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph7-0">
|
||||
<path style="stroke:none;" d="M 2.75 -3.578125 C 2.75 -4 2.40625 -4.34375 2 -4.34375 C 1.578125 -4.34375 1.234375 -4 1.234375 -3.578125 C 1.234375 -3.171875 1.578125 -2.828125 2 -2.828125 C 2.40625 -2.828125 2.75 -3.171875 2.75 -3.578125 Z M 2.75 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph7-1">
|
||||
<path style="stroke:none;" d="M 2.28125 -10.234375 C 2.28125 -10.5 2.28125 -10.75 2 -10.75 C 1.703125 -10.75 1.703125 -10.5 1.703125 -10.234375 L 1.703125 3.0625 C 1.703125 3.328125 1.703125 3.578125 2 3.578125 C 2.28125 3.578125 2.28125 3.328125 2.28125 3.0625 Z M 2.28125 -10.234375 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.596094" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.976174" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.882034" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.262043" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.642054" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.022064" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.402075" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.782086" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.162093" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.542101" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.922109" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.302116" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.682034" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="91.144924" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.525004" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001975" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="132.148804" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.599974" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.06298" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.082984" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.542194" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="220.538274" y="13.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="228.521084" y="7.73512"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001944" y="1.46207"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001944" y="10.07496"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="238.780854" y="19.18277"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="244.477734" y="19.18277"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="252.226738" y="19.18277"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="261.694934" y="13.65699"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-4" x="276.598871" y="13.65699"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-5" x="283.618875" y="13.65699"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.595934" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.976014" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.881874" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.261883" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.641894" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.021904" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.401915" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.781926" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.161933" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.541941" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.921949" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.301956" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.681874" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="91.144764" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.524844" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001815" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="128.917844" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="137.369014" y="29.79411"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.608854" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.07186" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.091864" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.541692" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="203.15894" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="213.364754" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="220.537804" y="35.71599"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-3" x="228.521004" y="29.79411"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001864" y="23.52106"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001864" y="32.13395"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="238.780774" y="41.23278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="244.477654" y="41.23278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="252.226658" y="41.23278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="261.694854" y="35.71598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="276.598791" y="35.71598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="283.618795" y="35.71598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.595854" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.975934" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.881794" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.261803" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.641814" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.021824" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.401835" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.781846" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.161853" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.541861" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.921869" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.301876" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.681794" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="91.144684" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.524764" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001735" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="126.172764" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="134.623544" y="51.8531"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="137.359547" y="51.8531"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.608704" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.07171" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.091714" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.541542" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="185.770478" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="195.985304" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="203.158354" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="213.364254" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="220.537304" y="57.77498"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="228.520894" y="51.8531"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001754" y="45.58005"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="234.001754" y="54.18396"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="238.780664" y="63.29177"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="244.477544" y="63.29177"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="252.226548" y="63.29177"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="261.694744" y="57.77497"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="276.598681" y="57.77497"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-8" x="283.618685" y="57.77497"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.595744" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.975824" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.881684" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.261693" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.641704" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.021714" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.401725" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.781736" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.161743" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.541751" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.921759" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.301766" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.681684" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="91.144574" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.524654" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001625" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="123.436754" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="131.887534" y="73.91209"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="134.623537" y="73.91209"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="137.35954" y="73.91209"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.608624" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.07163" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.091634" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.541462" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="174.664524" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="184.870324" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="192.043374" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="202.258174" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="209.431224" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="219.646024" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="226.819074" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-1" x="234.801884" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="238.780404" y="83.91991"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="244.477284" y="83.91991"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="252.226288" y="83.91991"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="261.694484" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="276.598421" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-8" x="283.618425" y="79.83397"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.595484" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.975564" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.881424" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.261433" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.641444" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.021454" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.401465" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.781476" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.161483" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.541491" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.921499" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.301506" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.681424" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="91.144314" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.524394" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001365" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="118.927494" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-4" x="127.378274" y="96.67299"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="131.248271" y="96.67299"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-5" x="136.225269" y="96.67299"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.608374" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.07138" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.091384" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.541212" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="198.532241" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="208.738074" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="215.911124" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="226.125924" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="233.298974" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph7-0" x="243.504874" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-4" x="250.677924" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="261.693955" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="276.597892" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="283.617896" y="102.59487"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.595924" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="7.976004" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="11.881864" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="19.261873" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="26.641884" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="34.021894" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="41.401905" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="48.781916" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="56.161923" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="63.541931" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="70.921939" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="78.301946" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="85.681864" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="91.144754" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="98.524834" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="108.001805" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="118.927934" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-4" x="127.378714" y="119.42491"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-6" x="131.248711" y="119.42491"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-5" x="136.225709" y="119.42491"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="140.608814" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="146.07182" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="153.091824" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="162.541652" y="125.35577"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-9" x="250.678822" y="125.35577"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 55 KiB |
244
doc/equations/autodiff/example2f.svg
Normal file
@@ -0,0 +1,244 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="309pt" height="29pt" viewBox="0 0 309 29" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 4.9375 -0.875 C 5.25 -0.015625 6.140625 0.140625 6.6875 0.140625 C 7.78125 0.140625 8.421875 -0.796875 8.828125 -1.796875 C 9.15625 -2.625 9.6875 -4.515625 9.6875 -5.359375 C 9.6875 -6.234375 9.234375 -6.328125 9.109375 -6.328125 C 8.765625 -6.328125 8.453125 -5.984375 8.453125 -5.6875 C 8.453125 -5.515625 8.546875 -5.421875 8.625 -5.359375 C 8.75 -5.234375 9.125 -4.84375 9.125 -4.109375 C 9.125 -3.609375 8.71875 -2.265625 8.421875 -1.59375 C 8.015625 -0.71875 7.484375 -0.140625 6.734375 -0.140625 C 5.9375 -0.140625 5.6875 -0.75 5.6875 -1.40625 C 5.6875 -1.828125 5.8125 -2.328125 5.859375 -2.5625 L 6.46875 -4.984375 C 6.546875 -5.265625 6.671875 -5.765625 6.671875 -5.828125 C 6.671875 -6.03125 6.5 -6.1875 6.28125 -6.1875 C 5.859375 -6.1875 5.765625 -5.828125 5.6875 -5.484375 C 5.53125 -4.921875 4.9375 -2.5 4.875 -2.1875 C 4.8125 -1.9375 4.8125 -1.78125 4.8125 -1.46875 C 4.8125 -1.125 4.359375 -0.578125 4.34375 -0.546875 C 4.1875 -0.390625 3.953125 -0.140625 3.515625 -0.140625 C 2.375 -0.140625 2.375 -1.21875 2.375 -1.46875 C 2.375 -1.921875 2.484375 -2.546875 3.125 -4.265625 C 3.296875 -4.703125 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.109375 -5.515625 1.65625 -6.03125 2.1875 -6.03125 C 2.34375 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.5 2.5625 -5.1875 2.328125 -4.5625 C 1.65625 -2.765625 1.5 -2.1875 1.5 -1.640625 C 1.5 -0.125 2.734375 0.140625 3.46875 0.140625 C 3.71875 0.140625 4.359375 0.140625 4.9375 -0.875 Z M 4.9375 -0.875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 2.796875 0.0625 C 2.796875 -0.78125 2.53125 -1.390625 1.9375 -1.390625 C 1.484375 -1.390625 1.25 -1.015625 1.25 -0.703125 C 1.25 -0.390625 1.46875 0 1.953125 0 C 2.140625 0 2.296875 -0.0625 2.421875 -0.1875 C 2.453125 -0.21875 2.46875 -0.21875 2.484375 -0.21875 C 2.515625 -0.21875 2.515625 -0.015625 2.515625 0.0625 C 2.515625 0.53125 2.421875 1.46875 1.59375 2.390625 C 1.4375 2.5625 1.4375 2.59375 1.4375 2.625 C 1.4375 2.703125 1.5 2.765625 1.578125 2.765625 C 1.6875 2.765625 2.796875 1.703125 2.796875 0.0625 Z M 2.796875 0.0625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 1.828125 -1.15625 C 2.4375 -1.859375 2.9375 -2.3125 3.65625 -2.953125 C 4.515625 -3.703125 4.890625 -4.0625 5.09375 -4.28125 C 6.09375 -5.265625 6.59375 -6.09375 6.59375 -6.203125 C 6.59375 -6.328125 6.484375 -6.328125 6.453125 -6.328125 C 6.359375 -6.328125 6.328125 -6.265625 6.25 -6.171875 C 5.890625 -5.546875 5.546875 -5.25 5.171875 -5.25 C 4.875 -5.25 4.71875 -5.375 4.453125 -5.71875 C 4.140625 -6.078125 3.90625 -6.328125 3.484375 -6.328125 C 2.4375 -6.328125 1.8125 -5.015625 1.8125 -4.71875 C 1.8125 -4.671875 1.828125 -4.59375 1.953125 -4.59375 C 2.0625 -4.59375 2.078125 -4.640625 2.125 -4.75 C 2.359375 -5.328125 3.0625 -5.421875 3.328125 -5.421875 C 3.625 -5.421875 3.921875 -5.328125 4.21875 -5.1875 C 4.765625 -4.96875 4.984375 -4.96875 5.140625 -4.96875 C 5.234375 -4.96875 5.296875 -4.96875 5.359375 -4.984375 C 4.890625 -4.421875 4.109375 -3.734375 3.46875 -3.140625 L 2.015625 -1.8125 C 1.140625 -0.921875 0.609375 -0.078125 0.609375 0.03125 C 0.609375 0.109375 0.6875 0.140625 0.78125 0.140625 C 0.859375 0.140625 0.875 0.125 0.96875 -0.046875 C 1.203125 -0.40625 1.65625 -0.9375 2.1875 -0.9375 C 2.5 -0.9375 2.640625 -0.828125 2.921875 -0.46875 C 3.203125 -0.15625 3.4375 0.140625 3.90625 0.140625 C 5.3125 0.140625 6.109375 -1.671875 6.109375 -2.015625 C 6.109375 -2.0625 6.09375 -2.15625 5.953125 -2.15625 C 5.84375 -2.15625 5.828125 -2.09375 5.78125 -1.953125 C 5.46875 -1.109375 4.625 -0.765625 4.0625 -0.765625 C 3.765625 -0.765625 3.46875 -0.859375 3.171875 -0.984375 C 2.59375 -1.21875 2.4375 -1.21875 2.25 -1.21875 C 2.109375 -1.21875 1.953125 -1.21875 1.828125 -1.15625 Z M 1.828125 -1.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 5.5 -3.328125 C 5.8125 -3.328125 5.84375 -3.328125 5.84375 -3.59375 C 5.84375 -5.046875 5.0625 -6.390625 3.328125 -6.390625 C 1.6875 -6.390625 0.4375 -4.921875 0.4375 -3.140625 C 0.4375 -1.25 1.890625 0.140625 3.484375 0.140625 C 5.1875 0.140625 5.84375 -1.40625 5.84375 -1.703125 C 5.84375 -1.796875 5.765625 -1.84375 5.6875 -1.84375 C 5.5625 -1.84375 5.53125 -1.78125 5.515625 -1.703125 C 5.140625 -0.5 4.171875 -0.171875 3.578125 -0.171875 C 2.96875 -0.171875 1.515625 -0.578125 1.515625 -3.0625 L 1.515625 -3.328125 Z M 1.53125 -3.59375 C 1.65625 -5.859375 2.90625 -6.109375 3.3125 -6.109375 C 4.84375 -6.109375 4.9375 -4.09375 4.953125 -3.59375 Z M 1.53125 -3.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-4">
|
||||
<path style="stroke:none;" d="M 4.015625 -3.390625 C 4.4375 -3.9375 5.03125 -4.703125 5.3125 -5 C 5.890625 -5.671875 6.5625 -5.765625 7.03125 -5.765625 L 7.03125 -6.1875 C 6.40625 -6.15625 6.390625 -6.15625 5.828125 -6.15625 C 5.28125 -6.15625 5.25 -6.15625 4.53125 -6.1875 L 4.53125 -5.765625 C 4.71875 -5.734375 4.953125 -5.65625 4.953125 -5.328125 C 4.953125 -5.078125 4.8125 -4.921875 4.734375 -4.8125 L 3.8125 -3.640625 L 2.703125 -5.125 C 2.65625 -5.171875 2.5625 -5.3125 2.5625 -5.40625 C 2.5625 -5.5 2.640625 -5.75 3.0625 -5.765625 L 3.0625 -6.1875 C 2.71875 -6.15625 1.984375 -6.15625 1.59375 -6.15625 C 1.125 -6.15625 1.09375 -6.15625 0.21875 -6.1875 L 0.21875 -5.765625 C 0.953125 -5.765625 1.21875 -5.734375 1.515625 -5.34375 L 3.203125 -3.15625 C 3.234375 -3.125 3.28125 -3.046875 3.28125 -3 C 3.28125 -2.953125 2.171875 -1.546875 2.015625 -1.359375 C 1.390625 -0.59375 0.765625 -0.4375 0.140625 -0.421875 L 0.140625 0 C 0.6875 -0.03125 0.71875 -0.03125 1.328125 -0.03125 C 1.875 -0.03125 1.90625 -0.03125 2.625 0 L 2.625 -0.421875 C 2.28125 -0.453125 2.21875 -0.671875 2.21875 -0.875 C 2.21875 -1.109375 2.328125 -1.21875 2.46875 -1.40625 C 2.6875 -1.703125 3.15625 -2.296875 3.5 -2.734375 L 4.671875 -1.203125 C 4.921875 -0.890625 4.921875 -0.859375 4.921875 -0.78125 C 4.921875 -0.65625 4.8125 -0.4375 4.421875 -0.421875 L 4.421875 0 C 4.796875 -0.03125 5.5 -0.03125 5.890625 -0.03125 C 6.375 -0.03125 6.390625 -0.03125 7.265625 0 L 7.265625 -0.421875 C 6.5 -0.421875 6.234375 -0.4375 5.890625 -0.90625 Z M 4.015625 -3.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-5">
|
||||
<path style="stroke:none;" d="M 3.515625 2.359375 C 2.59375 2.359375 2.421875 2.359375 2.421875 1.71875 L 2.421875 -0.78125 C 2.6875 -0.421875 3.265625 0.140625 4.1875 0.140625 C 5.84375 0.140625 7.28125 -1.25 7.28125 -3.09375 C 7.28125 -4.921875 5.9375 -6.328125 4.375 -6.328125 C 3.109375 -6.328125 2.4375 -5.421875 2.390625 -5.359375 L 2.390625 -6.328125 L 0.40625 -6.171875 L 0.40625 -5.75 C 1.40625 -5.75 1.484375 -5.65625 1.484375 -5.015625 L 1.484375 1.71875 C 1.484375 2.359375 1.328125 2.359375 0.40625 2.359375 L 0.40625 2.78125 C 0.78125 2.75 1.546875 2.75 1.953125 2.75 C 2.359375 2.75 3.140625 2.75 3.515625 2.78125 Z M 2.421875 -4.578125 C 2.421875 -4.84375 2.421875 -4.859375 2.578125 -5.09375 C 3.015625 -5.734375 3.71875 -6.015625 4.265625 -6.015625 C 5.328125 -6.015625 6.203125 -4.703125 6.203125 -3.09375 C 6.203125 -1.390625 5.21875 -0.140625 4.109375 -0.140625 C 3.671875 -0.140625 3.25 -0.328125 2.96875 -0.609375 C 2.640625 -0.9375 2.421875 -1.21875 2.421875 -1.625 Z M 2.421875 -4.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-6">
|
||||
<path style="stroke:none;" d="M 4.703125 -6.0625 C 4.703125 -6.328125 4.703125 -6.390625 4.5625 -6.390625 C 4.453125 -6.390625 4.171875 -6.078125 4.078125 -5.953125 C 3.625 -6.3125 3.1875 -6.390625 2.71875 -6.390625 C 0.984375 -6.390625 0.46875 -5.453125 0.46875 -4.65625 C 0.46875 -4.5 0.46875 -4 1.015625 -3.5 C 1.484375 -3.09375 1.96875 -3 2.625 -2.875 C 3.40625 -2.71875 3.59375 -2.671875 3.953125 -2.375 C 4.21875 -2.171875 4.40625 -1.84375 4.40625 -1.453125 C 4.40625 -0.828125 4.046875 -0.140625 2.78125 -0.140625 C 1.84375 -0.140625 1.140625 -0.6875 0.828125 -2.125 C 0.78125 -2.375 0.78125 -2.390625 0.765625 -2.40625 C 0.734375 -2.46875 0.671875 -2.46875 0.625 -2.46875 C 0.46875 -2.46875 0.46875 -2.390625 0.46875 -2.140625 L 0.46875 -0.1875 C 0.46875 0.078125 0.46875 0.140625 0.609375 0.140625 C 0.6875 0.140625 0.703125 0.125 0.953125 -0.171875 C 1.015625 -0.265625 1.015625 -0.296875 1.234375 -0.53125 C 1.78125 0.140625 2.546875 0.140625 2.796875 0.140625 C 4.296875 0.140625 5.046875 -0.6875 5.046875 -1.828125 C 5.046875 -2.59375 4.578125 -3.0625 4.453125 -3.1875 C 3.9375 -3.625 3.546875 -3.71875 2.59375 -3.890625 C 2.171875 -3.96875 1.125 -4.171875 1.125 -5.03125 C 1.125 -5.484375 1.421875 -6.140625 2.71875 -6.140625 C 4.28125 -6.140625 4.359375 -4.8125 4.390625 -4.359375 C 4.40625 -4.25 4.5 -4.25 4.546875 -4.25 C 4.703125 -4.25 4.703125 -4.3125 4.703125 -4.578125 Z M 4.703125 -6.0625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-7">
|
||||
<path style="stroke:none;" d="M 2.5 -8.828125 C 2.5 -9.203125 2.1875 -9.53125 1.796875 -9.53125 C 1.421875 -9.53125 1.109375 -9.234375 1.109375 -8.84375 C 1.109375 -8.421875 1.453125 -8.140625 1.796875 -8.140625 C 2.234375 -8.140625 2.5 -8.515625 2.5 -8.828125 Z M 0.515625 -6.171875 L 0.515625 -5.75 C 1.4375 -5.75 1.5625 -5.671875 1.5625 -4.96875 L 1.5625 -1.0625 C 1.5625 -0.421875 1.40625 -0.421875 0.46875 -0.421875 L 0.46875 0 C 0.875 -0.03125 1.5625 -0.03125 1.984375 -0.03125 C 2.140625 -0.03125 2.96875 -0.03125 3.453125 0 L 3.453125 -0.421875 C 2.53125 -0.421875 2.46875 -0.484375 2.46875 -1.046875 L 2.46875 -6.328125 Z M 0.515625 -6.171875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-8">
|
||||
<path style="stroke:none;" d="M 6.390625 -3.484375 C 6.390625 -4.8125 6.390625 -5.21875 6.046875 -5.6875 C 5.640625 -6.234375 4.96875 -6.328125 4.46875 -6.328125 C 3.078125 -6.328125 2.53125 -5.140625 2.421875 -4.84375 L 2.40625 -4.84375 L 2.40625 -6.328125 L 0.453125 -6.171875 L 0.453125 -5.75 C 1.4375 -5.75 1.546875 -5.65625 1.546875 -4.953125 L 1.546875 -1.0625 C 1.546875 -0.421875 1.390625 -0.421875 0.453125 -0.421875 L 0.453125 0 C 0.828125 -0.03125 1.609375 -0.03125 2.015625 -0.03125 C 2.421875 -0.03125 3.203125 -0.03125 3.578125 0 L 3.578125 -0.421875 C 2.65625 -0.421875 2.484375 -0.421875 2.484375 -1.0625 L 2.484375 -3.734375 C 2.484375 -5.234375 3.46875 -6.03125 4.359375 -6.03125 C 5.25 -6.03125 5.453125 -5.3125 5.453125 -4.4375 L 5.453125 -1.0625 C 5.453125 -0.421875 5.296875 -0.421875 4.359375 -0.421875 L 4.359375 0 C 4.734375 -0.03125 5.515625 -0.03125 5.90625 -0.03125 C 6.328125 -0.03125 7.09375 -0.03125 7.46875 0 L 7.46875 -0.421875 C 6.75 -0.421875 6.390625 -0.421875 6.390625 -0.84375 Z M 6.390625 -3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-9">
|
||||
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 7.390625 25.078125 C 7.421875 25.09375 7.546875 25.234375 7.5625 25.234375 L 7.875 25.234375 C 7.921875 25.234375 8.03125 25.21875 8.03125 25.09375 C 8.03125 25.03125 8 25 7.96875 24.953125 C 7.453125 24.4375 6.6875 23.65625 5.796875 22.078125 C 4.25 19.328125 3.671875 15.78125 3.671875 12.328125 C 3.671875 5.96875 5.484375 2.21875 7.984375 -0.3125 C 8.03125 -0.359375 8.03125 -0.40625 8.03125 -0.4375 C 8.03125 -0.578125 7.9375 -0.578125 7.765625 -0.578125 C 7.578125 -0.578125 7.546875 -0.578125 7.421875 -0.453125 C 6.046875 0.71875 4.515625 2.71875 3.53125 5.734375 C 2.90625 7.625 2.578125 9.9375 2.578125 12.328125 C 2.578125 15.71875 3.203125 19.5625 5.453125 22.890625 C 5.84375 23.453125 6.375 24.046875 6.375 24.046875 C 6.515625 24.234375 6.71875 24.453125 6.828125 24.5625 Z M 7.390625 25.078125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 5.96875 12.328125 C 5.96875 8.203125 5 3.828125 2.1875 0.609375 C 1.984375 0.375 1.453125 -0.1875 1.109375 -0.484375 C 1 -0.578125 0.96875 -0.578125 0.78125 -0.578125 C 0.640625 -0.578125 0.515625 -0.578125 0.515625 -0.4375 C 0.515625 -0.375 0.578125 -0.3125 0.609375 -0.28125 C 1.09375 0.21875 1.859375 1 2.75 2.578125 C 4.296875 5.328125 4.875 8.875 4.875 12.328125 C 4.875 18.546875 3.15625 22.34375 0.578125 24.96875 C 0.546875 25 0.515625 25.046875 0.515625 25.09375 C 0.515625 25.234375 0.640625 25.234375 0.78125 25.234375 C 0.96875 25.234375 1 25.234375 1.140625 25.109375 C 2.5 23.9375 4.03125 21.953125 5.015625 18.921875 C 5.65625 16.953125 5.96875 14.625 5.96875 12.328125 Z M 5.96875 12.328125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 6.65625 23.09375 L 3.578125 12.328125 L 1.578125 14.671875 L 1.8125 14.890625 L 2.78125 13.734375 L 6.078125 25.25 C 6.5625 25.25 6.5625 25.25 6.6875 24.90625 L 14.5625 0 C 14.625 -0.21875 14.625 -0.265625 14.625 -0.28125 C 14.625 -0.4375 14.515625 -0.578125 14.34375 -0.578125 C 14.125 -0.578125 14.078125 -0.390625 14.015625 -0.203125 Z M 6.65625 23.09375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-1">
|
||||
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-2">
|
||||
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-3">
|
||||
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-0">
|
||||
<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-1">
|
||||
<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-2">
|
||||
<path style="stroke:none;" d="M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z M 2.5 1.828125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-3">
|
||||
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-4">
|
||||
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-5">
|
||||
<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-6">
|
||||
<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-7">
|
||||
<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph5-0">
|
||||
<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="-0.283984" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="8.167186" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="13.630076" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="24.060951" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="30.360956" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="38.343965" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="44.643783" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="52.005903" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="58.305907" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="65.469876" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="74.892934" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="89.805852" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-4" x="96.051856" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="103.467874" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="113.655776" y="1.3789"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="122.223746" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-6" x="135.048746" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-7" x="140.592751" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-8" x="144.49876" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="154.687046" y="1.3789"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="164.442906" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="171.796036" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="174.559032" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-2" x="179.536031" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-3" x="184.665946" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="188.535836" y="10.36093"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-4" x="193.782716" y="10.36093"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1644.414062 152.890625 L 1976.601562 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="178.519" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="198.8588" y="1.3789"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-9" x="210.6127" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="224.7248" y="2.7922"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2390.703125 264.960938 L 2539.375 264.960938 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-3" x="240.268" y="11.648"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="247.666043" y="11.648"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2402.695312 152.890625 L 2527.421875 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="241.033" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="246.729993" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="253.9303" y="1.3789"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-9" x="265.6932" y="17.3"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-3" x="288.6702" y="11.64805"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="296.06825" y="8.03907"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2810.039062 152.890625 L 3082.1875 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-5" x="281.002" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-6" x="284.871997" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-7" x="289.848995" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-3" x="295.393007" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="299.2629" y="22.25"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-4" x="304.33907" y="22.25"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 40 KiB |
619
doc/equations/autodiff/example2make_fvar.svg
Normal file
@@ -0,0 +1,619 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="352pt" height="77pt" viewBox="0 0 352 77" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 6.5 -4.34375 C 6.5 -4.65625 6.5 -6.265625 5.234375 -6.265625 C 4.734375 -6.265625 4.25 -6.03125 3.859375 -5.515625 C 3.765625 -5.71875 3.453125 -6.265625 2.765625 -6.265625 C 2.125 -6.265625 1.671875 -5.859375 1.5625 -5.71875 C 1.546875 -6.1875 1.25 -6.1875 0.984375 -6.1875 L 0.5625 -6.1875 C 0.359375 -6.1875 -0.015625 -6.1875 -0.015625 -5.765625 C -0.015625 -5.34375 0.3125 -5.34375 0.765625 -5.34375 L 0.765625 -0.828125 C 0.296875 -0.828125 -0.015625 -0.828125 -0.015625 -0.421875 C -0.015625 0 0.359375 0 0.5625 0 L 1.765625 0 C 1.96875 0 2.34375 0 2.34375 -0.421875 C 2.34375 -0.828125 2.015625 -0.828125 1.5625 -0.828125 L 1.5625 -3.46875 C 1.5625 -4.671875 2.078125 -5.4375 2.71875 -5.4375 C 3.109375 -5.4375 3.234375 -4.9375 3.234375 -4.265625 L 3.234375 -0.828125 C 2.984375 -0.828125 2.59375 -0.828125 2.59375 -0.421875 C 2.59375 0 2.984375 0 3.1875 0 L 4.234375 0 C 4.4375 0 4.8125 0 4.8125 -0.421875 C 4.8125 -0.828125 4.46875 -0.828125 4.03125 -0.828125 L 4.03125 -3.46875 C 4.03125 -4.671875 4.546875 -5.4375 5.171875 -5.4375 C 5.578125 -5.4375 5.6875 -4.9375 5.6875 -4.265625 L 5.6875 -0.828125 C 5.453125 -0.828125 5.0625 -0.828125 5.0625 -0.421875 C 5.0625 0 5.453125 0 5.65625 0 L 6.703125 0 C 6.90625 0 7.265625 0 7.265625 -0.421875 C 7.265625 -0.828125 6.9375 -0.828125 6.5 -0.828125 Z M 6.5 -4.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 5.9375 -4.078125 C 5.9375 -5.15625 5.125 -6.3125 3.1875 -6.3125 C 2.578125 -6.3125 1.1875 -6.3125 1.1875 -5.328125 C 1.1875 -4.9375 1.46875 -4.71875 1.78125 -4.71875 C 1.859375 -4.71875 2.34375 -4.75 2.359375 -5.34375 C 2.359375 -5.421875 2.359375 -5.4375 2.671875 -5.46875 C 2.84375 -5.484375 3.03125 -5.484375 3.203125 -5.484375 C 3.53125 -5.484375 4.015625 -5.484375 4.484375 -5.125 C 5 -4.71875 5 -4.3125 5 -3.90625 C 4.15625 -3.875 3.328125 -3.8125 2.4375 -3.53125 C 1.71875 -3.28125 0.796875 -2.765625 0.796875 -1.796875 C 0.796875 -0.78125 1.703125 0.09375 3.046875 0.09375 C 3.5 0.09375 4.390625 0.015625 5.140625 -0.5 C 5.421875 -0.03125 6.140625 0 6.6875 0 C 7.03125 0 7.375 0 7.375 -0.421875 C 7.375 -0.828125 7 -0.828125 6.796875 -0.828125 C 6.421875 -0.828125 6.140625 -0.859375 5.9375 -0.953125 Z M 5 -1.890625 C 5 -1.5625 5 -1.265625 4.421875 -0.984375 C 3.921875 -0.75 3.234375 -0.75 3.203125 -0.75 C 2.359375 -0.75 1.734375 -1.203125 1.734375 -1.796875 C 1.734375 -2.640625 3.265625 -3.125 5 -3.125 Z M 5 -1.890625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.65625 L 5.828125 -5.34375 L 6.25 -5.34375 C 6.453125 -5.34375 6.828125 -5.34375 6.828125 -5.765625 C 6.828125 -6.1875 6.453125 -6.1875 6.25 -6.1875 L 4.15625 -6.1875 C 3.953125 -6.1875 3.578125 -6.1875 3.578125 -5.765625 C 3.578125 -5.34375 3.953125 -5.34375 4.15625 -5.34375 L 4.65625 -5.34375 L 2.34375 -3.140625 L 2.34375 -8.171875 C 2.34375 -8.625 2.25 -8.765625 1.765625 -8.765625 L 0.890625 -8.765625 C 0.6875 -8.765625 0.296875 -8.765625 0.296875 -8.34375 C 0.296875 -7.9375 0.6875 -7.9375 0.890625 -7.9375 L 1.53125 -7.9375 L 1.53125 -0.828125 L 0.890625 -0.828125 C 0.6875 -0.828125 0.296875 -0.828125 0.296875 -0.421875 C 0.296875 0 0.6875 0 0.890625 0 L 2.984375 0 C 3.1875 0 3.578125 0 3.578125 -0.421875 C 3.578125 -0.828125 3.1875 -0.828125 2.984375 -0.828125 L 2.34375 -0.828125 L 2.34375 -2.03125 L 3.453125 -3.09375 L 5.15625 -0.828125 C 4.703125 -0.828125 4.359375 -0.828125 4.359375 -0.421875 C 4.359375 0 4.75 0 4.953125 0 L 6.5625 0 C 6.75 0 7.125 0 7.125 -0.421875 C 7.125 -0.828125 6.75 -0.828125 6.5625 -0.828125 L 6.171875 -0.828125 Z M 4.046875 -3.65625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 5.96875 -2.75 C 6.265625 -2.75 6.546875 -2.75 6.546875 -3.28125 C 6.546875 -4.96875 5.59375 -6.3125 3.796875 -6.3125 C 2.140625 -6.3125 0.796875 -4.875 0.796875 -3.125 C 0.796875 -1.3125 2.25 0.09375 4.015625 0.09375 C 5.859375 0.09375 6.546875 -1.1875 6.546875 -1.5625 C 6.546875 -1.65625 6.515625 -1.96875 6.0625 -1.96875 C 5.796875 -1.96875 5.703125 -1.859375 5.625 -1.65625 C 5.265625 -0.8125 4.328125 -0.75 4.0625 -0.75 C 2.875 -0.75 1.921875 -1.65625 1.765625 -2.75 Z M 1.78125 -3.546875 C 1.96875 -4.765625 2.890625 -5.484375 3.796875 -5.484375 C 5.234375 -5.484375 5.53125 -4.265625 5.59375 -3.546875 Z M 1.78125 -3.546875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 3.546875 -5.34375 L 5.28125 -5.34375 C 5.484375 -5.34375 5.859375 -5.34375 5.859375 -5.765625 C 5.859375 -6.1875 5.484375 -6.1875 5.28125 -6.1875 L 3.546875 -6.1875 L 3.546875 -6.90625 C 3.546875 -8.015625 4.546875 -8.015625 5 -8.015625 C 5 -7.984375 5.125 -7.453125 5.59375 -7.453125 C 5.828125 -7.453125 6.15625 -7.625 6.15625 -8.03125 C 6.15625 -8.84375 5.0625 -8.84375 4.84375 -8.84375 C 3.765625 -8.84375 2.609375 -8.234375 2.609375 -6.953125 L 2.609375 -6.1875 L 1.1875 -6.1875 C 0.984375 -6.1875 0.609375 -6.1875 0.609375 -5.765625 C 0.609375 -5.34375 0.96875 -5.34375 1.171875 -5.34375 L 2.609375 -5.34375 L 2.609375 -0.828125 L 1.25 -0.828125 C 1.046875 -0.828125 0.671875 -0.828125 0.671875 -0.421875 C 0.671875 0 1.046875 0 1.25 0 L 4.90625 0 C 5.109375 0 5.484375 0 5.484375 -0.421875 C 5.484375 -0.828125 5.109375 -0.828125 4.90625 -0.828125 L 3.546875 -0.828125 Z M 3.546875 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 L 3.6875 -0.734375 L 2.140625 -5.34375 L 2.5 -5.34375 C 2.703125 -5.34375 3.078125 -5.34375 3.078125 -5.765625 C 3.078125 -6.1875 2.703125 -6.1875 2.5 -6.1875 L 0.921875 -6.1875 C 0.71875 -6.1875 0.328125 -6.1875 0.328125 -5.765625 C 0.328125 -5.34375 0.71875 -5.34375 0.921875 -5.34375 L 1.296875 -5.34375 L 2.9375 -0.421875 C 3.09375 0.078125 3.40625 0.078125 3.6875 0.078125 C 3.953125 0.078125 4.28125 0.078125 4.4375 -0.421875 Z M 6.078125 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d="M 3.09375 -2.71875 C 3.09375 -4.421875 4.296875 -5.4375 5.515625 -5.4375 C 5.59375 -5.4375 5.6875 -5.4375 5.75 -5.421875 C 5.796875 -4.90625 6.203125 -4.859375 6.296875 -4.859375 C 6.625 -4.859375 6.859375 -5.109375 6.859375 -5.421875 C 6.859375 -6.03125 6.25 -6.265625 5.53125 -6.265625 C 4.578125 -6.265625 3.765625 -5.84375 3.09375 -5.03125 L 3.09375 -5.59375 C 3.09375 -6.03125 3.015625 -6.1875 2.53125 -6.1875 L 1.078125 -6.1875 C 0.875 -6.1875 0.5 -6.1875 0.5 -5.765625 C 0.5 -5.34375 0.875 -5.34375 1.078125 -5.34375 L 2.171875 -5.34375 L 2.171875 -0.828125 L 1.078125 -0.828125 C 0.875 -0.828125 0.5 -0.828125 0.5 -0.421875 C 0.5 0 0.875 0 1.078125 0 L 4.609375 0 C 4.8125 0 5.171875 0 5.171875 -0.421875 C 5.171875 -0.828125 4.8125 -0.828125 4.609375 -0.828125 L 3.09375 -0.828125 Z M 3.09375 -2.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-7">
|
||||
<path style="stroke:none;" d="M 6.28125 -7.03125 C 6.421875 -7.125 6.578125 -7.21875 6.578125 -7.46875 C 6.578125 -7.78125 6.328125 -7.953125 6.109375 -7.953125 L 6.078125 -7.9375 C 5.96875 -7.921875 5.9375 -7.921875 5.78125 -7.796875 L 1.0625 -4.8125 C 0.890625 -4.71875 0.78125 -4.5625 0.78125 -4.390625 C 0.78125 -4.125 0.953125 -4.03125 1.0625 -3.953125 L 5.765625 -0.96875 C 5.859375 -0.90625 5.984375 -0.8125 6.109375 -0.8125 C 6.328125 -0.8125 6.578125 -0.984375 6.578125 -1.296875 C 6.578125 -1.46875 6.5 -1.609375 6.34375 -1.703125 L 2.125 -4.375 Z M 6.28125 -7.03125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-8">
|
||||
<path style="stroke:none;" d="M 6.546875 -1.5625 C 6.546875 -1.9375 6.1875 -1.9375 6.0625 -1.9375 C 5.734375 -1.9375 5.6875 -1.828125 5.609375 -1.625 C 5.296875 -0.828125 4.59375 -0.75 4.25 -0.75 C 3.03125 -0.75 2 -1.765625 2 -3.09375 C 2 -3.828125 2.40625 -5.484375 4.28125 -5.484375 C 4.671875 -5.484375 4.984375 -5.453125 5.109375 -5.4375 C 5.203125 -5.40625 5.21875 -5.390625 5.21875 -5.328125 C 5.265625 -4.734375 5.703125 -4.71875 5.796875 -4.71875 C 6.109375 -4.71875 6.390625 -4.9375 6.390625 -5.328125 C 6.390625 -6.3125 4.9375 -6.3125 4.296875 -6.3125 C 1.84375 -6.3125 1.0625 -4.296875 1.0625 -3.09375 C 1.0625 -1.34375 2.390625 0.09375 4.109375 0.09375 C 6.03125 0.09375 6.546875 -1.328125 6.546875 -1.5625 Z M 6.546875 -1.5625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-9">
|
||||
<path style="stroke:none;" d="M 2.890625 3.1875 C 3.09375 3.1875 3.46875 3.1875 3.46875 2.765625 C 3.46875 2.359375 3.09375 2.359375 2.890625 2.359375 L 2.3125 2.359375 L 2.3125 -0.71875 C 2.65625 -0.328125 3.1875 0.09375 3.984375 0.09375 C 5.515625 0.09375 6.84375 -1.28125 6.84375 -3.09375 C 6.84375 -4.859375 5.640625 -6.265625 4.140625 -6.265625 C 3.09375 -6.265625 2.4375 -5.640625 2.3125 -5.5 C 2.3125 -5.96875 2.3125 -6.1875 1.734375 -6.1875 L 0.78125 -6.1875 C 0.59375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.59375 -5.34375 0.78125 -5.34375 L 1.375 -5.34375 L 1.375 2.359375 L 0.78125 2.359375 C 0.59375 2.359375 0.21875 2.359375 0.21875 2.765625 C 0.21875 3.1875 0.59375 3.1875 0.78125 3.1875 Z M 2.3125 -3.8125 C 2.3125 -4.640625 3.109375 -5.4375 4.046875 -5.4375 C 5.078125 -5.4375 5.90625 -4.390625 5.90625 -3.09375 C 5.90625 -1.71875 4.9375 -0.75 3.921875 -0.75 C 2.84375 -0.75 2.3125 -1.96875 2.3125 -2.6875 Z M 2.3125 -3.8125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-10">
|
||||
<path style="stroke:none;" d="M 2.3125 -8.171875 C 2.3125 -8.625 2.21875 -8.765625 1.734375 -8.765625 L 0.78125 -8.765625 C 0.59375 -8.765625 0.21875 -8.765625 0.21875 -8.34375 C 0.21875 -7.9375 0.59375 -7.9375 0.78125 -7.9375 L 1.375 -7.9375 L 1.375 -0.59375 C 1.375 -0.328125 1.375 0 1.84375 0 C 2.3125 0 2.3125 -0.296875 2.3125 -0.71875 C 2.65625 -0.328125 3.1875 0.09375 3.984375 0.09375 C 5.515625 0.09375 6.84375 -1.28125 6.84375 -3.09375 C 6.84375 -4.859375 5.640625 -6.265625 4.140625 -6.265625 C 3.09375 -6.265625 2.4375 -5.640625 2.3125 -5.5 Z M 2.3125 -3.8125 C 2.3125 -4.640625 3.109375 -5.4375 4.046875 -5.4375 C 5.078125 -5.4375 5.90625 -4.390625 5.90625 -3.09375 C 5.90625 -1.71875 4.9375 -0.75 3.921875 -0.75 C 2.84375 -0.75 2.3125 -1.96875 2.3125 -2.6875 Z M 2.3125 -3.8125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-11">
|
||||
<path style="stroke:none;" d="M 4.328125 -8.140625 C 4.328125 -8.484375 4.046875 -8.78125 3.6875 -8.78125 C 3.328125 -8.78125 3.046875 -8.484375 3.046875 -8.140625 C 3.046875 -7.78125 3.328125 -7.484375 3.6875 -7.484375 C 4.046875 -7.484375 4.328125 -7.78125 4.328125 -8.140625 Z M 1.859375 -6.1875 C 1.65625 -6.1875 1.296875 -6.1875 1.296875 -5.765625 C 1.296875 -5.34375 1.65625 -5.34375 1.859375 -5.34375 L 3.40625 -5.34375 L 3.40625 -0.828125 L 1.765625 -0.828125 C 1.5625 -0.828125 1.171875 -0.828125 1.171875 -0.421875 C 1.171875 0 1.5625 0 1.765625 0 L 5.75 0 C 5.953125 0 6.328125 0 6.328125 -0.421875 C 6.328125 -0.828125 5.953125 -0.828125 5.75 -0.828125 L 4.328125 -0.828125 L 4.328125 -5.59375 C 4.328125 -6.03125 4.25 -6.1875 3.765625 -6.1875 Z M 1.859375 -6.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-12">
|
||||
<path style="stroke:none;" d="M 6 -4.203125 C 6 -5.609375 5.328125 -6.265625 4.15625 -6.265625 C 3.1875 -6.265625 2.546875 -5.71875 2.3125 -5.453125 C 2.3125 -5.984375 2.3125 -6.1875 1.734375 -6.1875 L 0.78125 -6.1875 C 0.59375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.59375 -5.34375 0.78125 -5.34375 L 1.375 -5.34375 L 1.375 -0.828125 L 0.78125 -0.828125 C 0.59375 -0.828125 0.21875 -0.828125 0.21875 -0.421875 C 0.21875 0 0.59375 0 0.78125 0 L 2.890625 0 C 3.09375 0 3.46875 0 3.46875 -0.421875 C 3.46875 -0.828125 3.09375 -0.828125 2.890625 -0.828125 L 2.3125 -0.828125 L 2.3125 -3.421875 C 2.3125 -4.8125 3.28125 -5.4375 4.0625 -5.4375 C 4.890625 -5.4375 5.0625 -4.96875 5.0625 -4.140625 L 5.0625 -0.828125 L 4.46875 -0.828125 C 4.28125 -0.828125 3.90625 -0.828125 3.90625 -0.421875 C 3.90625 0 4.28125 0 4.46875 0 L 6.578125 0 C 6.78125 0 7.15625 0 7.15625 -0.421875 C 7.15625 -0.828125 6.78125 -0.828125 6.578125 -0.828125 L 6 -0.828125 Z M 6 -4.203125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-13">
|
||||
<path style="stroke:none;" d="M 4.15625 -8.171875 C 4.15625 -8.625 4.078125 -8.765625 3.578125 -8.765625 L 1.484375 -8.765625 C 1.28125 -8.765625 0.90625 -8.765625 0.90625 -8.34375 C 0.90625 -7.9375 1.28125 -7.9375 1.484375 -7.9375 L 3.234375 -7.9375 L 3.234375 -0.828125 L 1.484375 -0.828125 C 1.28125 -0.828125 0.90625 -0.828125 0.90625 -0.421875 C 0.90625 0 1.28125 0 1.484375 0 L 5.90625 0 C 6.109375 0 6.484375 0 6.484375 -0.421875 C 6.484375 -0.828125 6.109375 -0.828125 5.90625 -0.828125 L 4.15625 -0.828125 Z M 4.15625 -8.171875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-14">
|
||||
<path style="stroke:none;" d="M 6.546875 -3.09375 C 6.546875 -4.890625 5.234375 -6.3125 3.6875 -6.3125 C 2.140625 -6.3125 0.828125 -4.890625 0.828125 -3.09375 C 0.828125 -1.296875 2.15625 0.09375 3.6875 0.09375 C 5.21875 0.09375 6.546875 -1.296875 6.546875 -3.09375 Z M 3.6875 -0.75 C 2.65625 -0.75 1.765625 -1.84375 1.765625 -3.203125 C 1.765625 -4.53125 2.6875 -5.484375 3.6875 -5.484375 C 4.6875 -5.484375 5.609375 -4.53125 5.609375 -3.203125 C 5.609375 -1.828125 4.71875 -0.75 3.6875 -0.75 Z M 3.6875 -0.75 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-15">
|
||||
<path style="stroke:none;" d="M 3.09375 -5.34375 L 5.421875 -5.34375 C 5.625 -5.34375 6 -5.34375 6 -5.765625 C 6 -6.1875 5.625 -6.1875 5.421875 -6.1875 L 3.09375 -6.1875 L 3.09375 -7.359375 C 3.09375 -7.609375 3.09375 -7.953125 2.640625 -7.953125 C 2.171875 -7.953125 2.171875 -7.609375 2.171875 -7.359375 L 2.171875 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.734375 -5.34375 0.9375 -5.34375 L 2.171875 -5.34375 L 2.171875 -1.734375 C 2.171875 -0.40625 3.078125 0.09375 4.109375 0.09375 C 4.890625 0.09375 6.3125 -0.296875 6.3125 -1.765625 C 6.3125 -2.046875 6.3125 -2.359375 5.84375 -2.359375 C 5.375 -2.359375 5.375 -2.046875 5.375 -1.75 C 5.359375 -0.890625 4.546875 -0.75 4.21875 -0.75 C 3.09375 -0.75 3.09375 -1.46875 3.09375 -1.8125 Z M 3.09375 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-16">
|
||||
<path style="stroke:none;" d="M 5.5625 -7.9375 C 5.765625 -7.9375 6.140625 -7.9375 6.140625 -8.34375 C 6.140625 -8.765625 5.765625 -8.765625 5.5625 -8.765625 L 1.84375 -8.765625 C 1.375 -8.765625 1.265625 -8.65625 1.265625 -8.203125 L 1.265625 -4.375 C 1.265625 -4.171875 1.265625 -3.8125 1.6875 -3.8125 C 1.921875 -3.8125 1.984375 -3.890625 2.09375 -4.03125 C 2.53125 -4.53125 3.15625 -4.765625 3.90625 -4.765625 C 5.015625 -4.765625 5.703125 -3.75 5.703125 -2.71875 C 5.703125 -1.5625 4.703125 -0.65625 3.5 -0.65625 C 2.75 -0.65625 2 -1.015625 1.734375 -1.6875 C 1.796875 -1.75 1.890625 -1.84375 1.890625 -2.109375 C 1.890625 -2.5 1.5625 -2.703125 1.3125 -2.703125 C 1.1875 -2.703125 0.734375 -2.625 0.734375 -2.0625 C 0.734375 -0.859375 1.921875 0.171875 3.5 0.171875 C 5.234375 0.171875 6.640625 -1.125 6.640625 -2.71875 C 6.640625 -4.171875 5.5625 -5.59375 3.90625 -5.59375 C 3.421875 -5.59375 2.796875 -5.515625 2.1875 -5.171875 L 2.1875 -7.9375 Z M 5.5625 -7.9375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-17">
|
||||
<path style="stroke:none;" d="M 6.65625 -4.375 C 6.65625 -7.046875 5.234375 -8.9375 3.6875 -8.9375 C 2.125 -8.9375 0.71875 -7.015625 0.71875 -4.390625 C 0.71875 -1.71875 2.140625 0.171875 3.6875 0.171875 C 5.25 0.171875 6.65625 -1.75 6.65625 -4.375 Z M 3.6875 -0.65625 C 2.546875 -0.65625 1.65625 -2.390625 1.65625 -4.53125 C 1.65625 -6.671875 2.640625 -8.109375 3.6875 -8.109375 C 4.734375 -8.109375 5.71875 -6.671875 5.71875 -4.53125 C 5.71875 -2.40625 4.8125 -0.65625 3.6875 -0.65625 Z M 3.6875 -0.65625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-18">
|
||||
<path style="stroke:none;" d="M 3.953125 -0.046875 C 3.890625 0.40625 3.59375 0.953125 2.890625 1.1875 C 2.765625 1.21875 2.546875 1.296875 2.546875 1.5625 C 2.546875 1.75 2.765625 2 3 2 C 3.390625 2 4.8125 1.296875 4.8125 -0.265625 C 4.8125 -1.015625 4.328125 -1.625 3.703125 -1.625 C 3.171875 -1.625 2.890625 -1.203125 2.890625 -0.8125 C 2.890625 -0.34375 3.234375 0 3.6875 0 C 3.765625 0 3.875 -0.015625 3.953125 -0.046875 Z M 3.953125 -0.046875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-19">
|
||||
<path style="stroke:none;" d="M 2.6875 -8.28125 C 2.515625 -8.765625 2.21875 -8.765625 1.921875 -8.765625 L 0.984375 -8.765625 C 0.78125 -8.765625 0.421875 -8.765625 0.421875 -8.34375 C 0.421875 -7.9375 0.78125 -7.9375 0.984375 -7.9375 L 1.3125 -7.9375 L 1.3125 -0.828125 L 0.984375 -0.828125 C 0.78125 -0.828125 0.421875 -0.828125 0.421875 -0.421875 C 0.421875 0 0.78125 0 0.984375 0 L 2.421875 0 C 2.625 0 3.015625 0 3.015625 -0.421875 C 3.015625 -0.828125 2.625 -0.828125 2.421875 -0.828125 L 2.109375 -0.828125 L 2.109375 -7.78125 L 2.125 -7.78125 C 2.171875 -7.609375 2.296875 -7.25 2.546875 -6.515625 L 4.6875 -0.484375 C 4.859375 0 5.15625 0 5.46875 0 C 5.890625 0 6.0625 -0.046875 6.0625 -0.59375 L 6.0625 -7.9375 L 6.390625 -7.9375 C 6.578125 -7.9375 6.953125 -7.9375 6.953125 -8.34375 C 6.953125 -8.765625 6.59375 -8.765625 6.390625 -8.765625 L 4.953125 -8.765625 C 4.75 -8.765625 4.359375 -8.765625 4.359375 -8.34375 C 4.359375 -7.9375 4.75 -7.9375 4.953125 -7.9375 L 5.265625 -7.9375 L 5.265625 -0.984375 L 5.25 -0.984375 C 5.203125 -1.140625 5.078125 -1.515625 4.8125 -2.25 Z M 2.6875 -8.28125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-20">
|
||||
<path style="stroke:none;" d="M 6.453125 -5.34375 C 6.796875 -5.34375 7.15625 -5.34375 7.15625 -5.765625 C 7.15625 -6.1875 6.765625 -6.1875 6.5625 -6.1875 L 4.96875 -6.1875 C 4.765625 -6.1875 4.375 -6.1875 4.375 -5.765625 C 4.375 -5.34375 4.765625 -5.34375 4.96875 -5.34375 L 5.640625 -5.34375 L 4.921875 -0.96875 L 4.90625 -0.96875 C 4.84375 -1.34375 4.625 -2.15625 4.46875 -2.609375 C 4.21875 -3.546875 4.171875 -3.71875 3.703125 -3.71875 C 3.234375 -3.71875 3.1875 -3.546875 2.921875 -2.625 C 2.640625 -1.65625 2.53125 -1.234375 2.5 -0.96875 L 2.484375 -0.96875 L 1.734375 -5.34375 L 2.40625 -5.34375 C 2.609375 -5.34375 3 -5.34375 3 -5.765625 C 3 -6.1875 2.609375 -6.1875 2.40625 -6.1875 L 0.796875 -6.1875 C 0.609375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.578125 -5.34375 0.921875 -5.34375 L 1.78125 -0.46875 C 1.859375 0.03125 2.09375 0.078125 2.421875 0.078125 C 2.984375 0.078125 3.015625 -0.046875 3.296875 -1.03125 C 3.421875 -1.53125 3.65625 -2.328125 3.703125 -2.71875 L 3.71875 -2.71875 C 3.734375 -2.53125 3.796875 -2.125 4.109375 -1.015625 C 4.390625 -0.0625 4.421875 0.078125 4.96875 0.078125 C 5.203125 0.078125 5.5 0.078125 5.59375 -0.453125 Z M 6.453125 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-21">
|
||||
<path style="stroke:none;" d="M 6.3125 -3.9375 C 6.484375 -4.046875 6.578125 -4.203125 6.578125 -4.375 C 6.578125 -4.640625 6.421875 -4.734375 6.3125 -4.8125 L 1.609375 -7.796875 C 1.5 -7.859375 1.390625 -7.953125 1.265625 -7.953125 C 1.046875 -7.953125 0.78125 -7.78125 0.78125 -7.46875 C 0.78125 -7.21875 0.953125 -7.125 1.09375 -7.03125 L 5.25 -4.390625 L 1.09375 -1.734375 C 0.953125 -1.640625 0.78125 -1.546875 0.78125 -1.296875 C 0.78125 -0.984375 1.046875 -0.8125 1.265625 -0.8125 L 1.296875 -0.828125 C 1.40625 -0.84375 1.4375 -0.84375 1.59375 -0.96875 Z M 6.3125 -3.9375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-22">
|
||||
<path style="stroke:none;" d="M 6.140625 0.8125 C 6.140625 0.625 6.03125 0.578125 5.84375 0.4375 C 3.859375 -0.9375 3.375 -2.984375 3.375 -4.375 C 3.375 -5.734375 3.828125 -7.796875 5.84375 -9.1875 C 6.03125 -9.34375 6.140625 -9.390625 6.140625 -9.578125 C 6.140625 -9.71875 6.0625 -9.953125 5.71875 -9.953125 C 5.359375 -9.953125 4.296875 -9.125 3.640625 -8.1875 C 2.84375 -7.078125 2.4375 -5.734375 2.4375 -4.375 C 2.4375 -2.78125 3.015625 -1.453125 3.609375 -0.609375 C 4.28125 0.3125 5.328125 1.1875 5.71875 1.1875 C 6.0625 1.1875 6.140625 0.953125 6.140625 0.8125 Z M 6.140625 0.8125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-23">
|
||||
<path style="stroke:none;" d="M 4.359375 -8.34375 C 4.359375 -8.5625 4.359375 -8.9375 3.9375 -8.9375 C 3.703125 -8.9375 3.609375 -8.8125 3.53125 -8.625 C 3.25 -8 2.78125 -7.25 2.015625 -7.1875 C 1.8125 -7.171875 1.5 -7.140625 1.5 -6.765625 C 1.5 -6.53125 1.65625 -6.359375 1.96875 -6.359375 C 2.765625 -6.359375 3.390625 -6.953125 3.421875 -6.984375 L 3.421875 -0.828125 L 2.171875 -0.828125 C 1.96875 -0.828125 1.578125 -0.828125 1.578125 -0.421875 C 1.578125 0 1.96875 0 2.171875 0 L 5.625 0 C 5.828125 0 6.203125 0 6.203125 -0.421875 C 6.203125 -0.828125 5.828125 -0.828125 5.625 -0.828125 L 4.359375 -0.828125 Z M 4.359375 -8.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-24">
|
||||
<path style="stroke:none;" d="M 4.9375 -4.375 C 4.9375 -5.5 4.65625 -6.9375 3.625 -8.328125 C 3.140625 -9 2.078125 -9.953125 1.65625 -9.953125 C 1.3125 -9.953125 1.234375 -9.703125 1.234375 -9.578125 C 1.234375 -9.40625 1.328125 -9.34375 1.59375 -9.171875 C 3.34375 -7.9375 4 -6.015625 4 -4.390625 C 4 -3.09375 3.578125 -0.984375 1.53125 0.4375 C 1.34375 0.5625 1.234375 0.625 1.234375 0.8125 C 1.234375 0.953125 1.3125 1.1875 1.65625 1.1875 C 2.015625 1.1875 3.0625 0.359375 3.734375 -0.578125 C 4.5625 -1.75 4.9375 -3.09375 4.9375 -4.375 Z M 4.9375 -4.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-25">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.1875 L 5.6875 -5.34375 L 6.203125 -5.34375 C 6.390625 -5.34375 6.765625 -5.34375 6.765625 -5.765625 C 6.765625 -6.1875 6.390625 -6.1875 6.203125 -6.1875 L 4.609375 -6.1875 C 4.40625 -6.1875 4.03125 -6.1875 4.03125 -5.765625 C 4.03125 -5.34375 4.375 -5.34375 4.71875 -5.34375 L 3.640625 -3.875 L 2.53125 -5.34375 C 2.875 -5.34375 3.21875 -5.34375 3.21875 -5.765625 C 3.21875 -6.1875 2.84375 -6.1875 2.640625 -6.1875 L 1.046875 -6.1875 C 0.84375 -6.1875 0.46875 -6.1875 0.46875 -5.765625 C 0.46875 -5.34375 0.84375 -5.34375 1.046875 -5.34375 L 1.546875 -5.34375 L 3.25 -3.1875 L 1.46875 -0.828125 L 0.96875 -0.828125 C 0.78125 -0.828125 0.390625 -0.828125 0.390625 -0.421875 C 0.390625 0 0.78125 0 0.96875 0 L 2.546875 0 C 2.75 0 3.125 0 3.125 -0.421875 C 3.125 -0.828125 2.796875 -0.828125 2.40625 -0.828125 L 3.640625 -2.640625 L 4.9375 -0.828125 C 4.578125 -0.828125 4.234375 -0.828125 4.234375 -0.421875 C 4.234375 0 4.609375 0 4.8125 0 L 6.390625 0 C 6.59375 0 6.96875 0 6.96875 -0.421875 C 6.96875 -0.828125 6.59375 -0.828125 6.390625 -0.828125 L 5.890625 -0.828125 Z M 4.046875 -3.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-26">
|
||||
<path style="stroke:none;" d="M 4.984375 -3.15625 C 5.1875 -3.328125 6.640625 -4.5625 6.640625 -6.15625 C 6.640625 -7.78125 5.296875 -8.9375 3.5 -8.9375 C 1.84375 -8.9375 0.734375 -7.6875 0.734375 -6.484375 C 0.734375 -5.875 1.234375 -5.84375 1.3125 -5.84375 C 1.578125 -5.84375 1.890625 -6.03125 1.890625 -6.421875 C 1.890625 -6.703125 1.796875 -6.78125 1.71875 -6.84375 C 1.921875 -7.609375 2.578125 -8.109375 3.40625 -8.109375 C 4.640625 -8.109375 5.703125 -7.40625 5.703125 -6.15625 C 5.703125 -5.03125 4.859375 -4.171875 4.09375 -3.5 L 0.9375 -0.765625 C 0.78125 -0.625 0.734375 -0.59375 0.734375 -0.421875 C 0.734375 0 1.125 0 1.3125 0 L 6.328125 0 C 6.640625 -0.09375 6.640625 -0.375 6.640625 -0.59375 L 6.640625 -0.890625 C 6.640625 -1.140625 6.640625 -1.484375 6.1875 -1.484375 C 5.703125 -1.484375 5.703125 -1.171875 5.703125 -0.828125 L 2.25 -0.828125 Z M 4.984375 -3.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-27">
|
||||
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 C 4.828125 -4.171875 4.015625 -1.78125 3.8125 -0.96875 L 3.796875 -0.96875 C 3.734375 -1.28125 3.671875 -1.4375 3.53125 -1.828125 L 2.1875 -5.34375 L 2.53125 -5.34375 C 2.71875 -5.34375 3.109375 -5.34375 3.109375 -5.765625 C 3.109375 -6.1875 2.71875 -6.1875 2.53125 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.75 -5.34375 0.953125 -5.34375 L 1.328125 -5.34375 L 3.34375 -0.1875 C 3.40625 -0.046875 3.40625 -0.015625 3.40625 0 C 3.40625 0.03125 3.03125 1.28125 2.8125 1.671875 C 2.71875 1.828125 2.359375 2.5 1.671875 2.421875 C 1.6875 2.375 1.734375 2.296875 1.734375 2.140625 C 1.734375 1.8125 1.5 1.578125 1.171875 1.578125 C 0.8125 1.578125 0.609375 1.828125 0.609375 2.15625 C 0.609375 2.703125 1.0625 3.265625 1.78125 3.265625 C 3.171875 3.265625 3.78125 1.421875 3.828125 1.3125 Z M 6.078125 -5.34375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-28">
|
||||
<path style="stroke:none;" d="M 3.671875 -4.3125 C 5.15625 -4.3125 5.828125 -3.265625 5.828125 -2.5 C 5.828125 -1.546875 4.984375 -0.65625 3.734375 -0.65625 C 2.296875 -0.65625 1.65625 -1.4375 1.65625 -1.640625 C 1.65625 -1.65625 1.65625 -1.6875 1.671875 -1.703125 C 1.734375 -1.8125 1.78125 -1.921875 1.78125 -2.046875 C 1.78125 -2.359375 1.546875 -2.625 1.203125 -2.625 C 0.90625 -2.625 0.609375 -2.4375 0.609375 -2 C 0.609375 -0.75 1.984375 0.171875 3.734375 0.171875 C 5.53125 0.171875 6.75 -1.125 6.75 -2.484375 C 6.75 -3.21875 6.359375 -4.234375 5.09375 -4.78125 C 5.96875 -5.328125 6.359375 -6.1875 6.359375 -6.921875 C 6.359375 -8 5.28125 -8.9375 3.734375 -8.9375 C 2.140625 -8.9375 1.015625 -8.25 1.015625 -7.1875 C 1.015625 -6.71875 1.375 -6.5625 1.609375 -6.5625 C 1.859375 -6.5625 2.1875 -6.765625 2.1875 -7.15625 C 2.1875 -7.390625 2.0625 -7.515625 2.0625 -7.53125 C 2.5 -8.078125 3.484375 -8.109375 3.734375 -8.109375 C 4.703125 -8.109375 5.421875 -7.59375 5.421875 -6.90625 C 5.421875 -6.5 5.15625 -5.3125 3.640625 -5.203125 C 3.109375 -5.171875 2.890625 -5.15625 2.828125 -5.15625 C 2.53125 -5.125 2.46875 -4.9375 2.46875 -4.734375 C 2.46875 -4.3125 2.765625 -4.3125 3.015625 -4.3125 Z M 3.671875 -4.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-29">
|
||||
<path style="stroke:none;" d="M 6.40625 -5.234375 C 6.578125 -5.390625 6.640625 -5.453125 6.640625 -5.703125 C 6.640625 -6.1875 6.328125 -6.1875 6.046875 -6.1875 L 1.28125 -6.1875 C 0.796875 -6.1875 0.6875 -6.0625 0.6875 -5.59375 L 0.6875 -5.015625 C 0.6875 -4.765625 0.6875 -4.4375 1.140625 -4.4375 C 1.625 -4.4375 1.625 -4.75 1.625 -5.015625 L 1.625 -5.34375 L 5.25 -5.34375 L 0.6875 -0.953125 C 0.515625 -0.78125 0.453125 -0.734375 0.453125 -0.46875 C 0.453125 0 0.78125 0 1.046875 0 L 6.109375 0 C 6.578125 0 6.6875 -0.125 6.6875 -0.59375 L 6.6875 -1.3125 C 6.6875 -1.578125 6.6875 -1.90625 6.21875 -1.90625 C 5.75 -1.90625 5.75 -1.59375 5.75 -1.3125 L 5.75 -0.828125 L 1.84375 -0.828125 Z M 6.40625 -5.234375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-30">
|
||||
<path style="stroke:none;" d="M 0.546875 -3.4375 C 0.421875 -3.25 0.421875 -3.234375 0.421875 -2.96875 C 0.421875 -2.46875 0.609375 -2.40625 0.984375 -2.40625 L 4.5 -2.40625 L 4.5 -0.828125 L 3.640625 -0.828125 C 3.4375 -0.828125 3.0625 -0.828125 3.0625 -0.421875 C 3.0625 0 3.4375 0 3.640625 0 L 6.171875 0 C 6.375 0 6.734375 0 6.734375 -0.421875 C 6.734375 -0.828125 6.375 -0.828125 6.171875 -0.828125 L 5.3125 -0.828125 L 5.3125 -2.40625 L 6.390625 -2.40625 C 6.578125 -2.40625 6.953125 -2.40625 6.953125 -2.828125 C 6.953125 -3.234375 6.578125 -3.234375 6.390625 -3.234375 L 5.3125 -3.234375 L 5.3125 -8.375 C 5.3125 -8.84375 5.203125 -8.96875 4.71875 -8.96875 L 4.390625 -8.96875 C 4.046875 -8.96875 3.96875 -8.953125 3.796875 -8.671875 Z M 1.375 -3.234375 L 4.5 -8.265625 L 4.5 -3.234375 Z M 1.375 -3.234375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-4">
|
||||
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-5">
|
||||
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-1">
|
||||
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-2">
|
||||
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-3">
|
||||
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="45.0648" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="52.444808" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="59.824815" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="67.204823" y="10.657"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 754.6875 665.46875 L 799.023438 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="79.9039" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="87.283908" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="94.663915" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="102.043923" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="109.423936" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="116.80395" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="124.183952" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="131.563965" y="10.657"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1398.242188 665.46875 L 1442.617188 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="144.281" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="151.661014" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="159.041015" y="10.657"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1673.046875 665.46875 L 1717.382812 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="171.74" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="179.120014" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="186.500015" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="193.880029" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="201.26003" y="10.657"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2095.234375 665.46875 L 2139.609375 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="213.968" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="221.348026" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="228.728052" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="236.108053" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-20" x="243.488079" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-21" x="250.868105" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="258.248131" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="265.628133" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="273.008158" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-24" x="280.388184" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="291.7731" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="306.686018" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="313.706022" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="323.92119" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="338.0333" y="10.657"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="344.60322" y="12.80778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="30.29622" y="31.58198"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="37.676231" y="31.58198"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="45.056241" y="31.58198"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="52.436249" y="31.58198"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 606.992188 456.210938 L 651.367188 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="65.1441" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="72.524108" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="79.904115" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="87.284123" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="94.66413" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="102.044138" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="109.424152" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="116.804165" y="31.582"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1250.664062 456.210938 L 1295.039062 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="129.512" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="136.892014" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="144.272015" y="31.582"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1525.351562 456.210938 L 1569.726562 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="156.98" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="164.360014" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="171.740015" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="179.120029" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="186.50003" y="31.582"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1947.617188 456.210938 L 1991.992188 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="199.208" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="206.588026" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="213.968052" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="221.348053" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="228.728079" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="236.108105" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="243.488131" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-21" x="250.868133" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="258.248158" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="265.628184" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-26" x="273.00821" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-24" x="280.388212" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="291.7728" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="306.685718" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="313.705722" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="323.92089" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="338.033" y="31.582"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-1" x="344.60292" y="33.73278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="15.53592" y="52.50698"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="22.915929" y="52.50698"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="30.29594" y="52.50698"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="37.67595" y="52.50698"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 459.375 246.953125 L 503.75 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="50.375" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="57.755008" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="65.135015" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="72.515023" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="79.89503" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="87.275038" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="94.655046" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="102.035053" y="52.507"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1102.96875 246.953125 L 1147.34375 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="114.752" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="122.132014" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="129.512015" y="52.507"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1377.734375 246.953125 L 1422.109375 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="142.211" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="149.591014" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="156.971015" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="164.351029" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="171.73103" y="52.507"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1799.921875 246.953125 L 1844.296875 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="184.439" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="191.819014" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="199.199015" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="206.579017" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="213.959043" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="221.339069" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="228.719094" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="236.099096" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-27" x="243.479122" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-21" x="250.859148" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="258.239174" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="265.619175" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-28" x="272.999201" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-24" x="280.379227" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="291.773" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="306.685918" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-4" x="313.705922" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="323.92109" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="338.0332" y="52.507"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-2" x="344.60312" y="54.65778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.76712" y="73.42298"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="8.14713" y="73.42298"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="15.527139" y="73.42298"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="22.907148" y="73.42298"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.679688 37.8125 L 356.054688 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="35.6152" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="42.995211" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="50.375221" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="57.755229" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="65.135236" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="72.515244" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="79.895252" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="87.275259" y="73.42305"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 955.351562 37.8125 L 999.726562 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="99.9832" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="107.363214" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="114.743215" y="73.42305"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1230.039062 37.8125 L 1274.414062 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="127.451" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="134.831014" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="142.211015" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="149.591029" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="156.97103" y="73.42305"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1652.34375 37.8125 L 1696.71875 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="169.679" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="177.059014" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="184.439015" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="191.819029" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="199.19903" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="206.579056" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="213.959082" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="221.339084" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="228.71911" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="236.099136" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-29" x="243.479161" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-21" x="250.859163" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="258.239189" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="265.619215" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-30" x="272.999241" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-24" x="280.379242" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="291.773" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="306.685918" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="313.705922" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="323.92109" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="338.0332" y="73.42305"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-3" x="344.60273" y="75.57383"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 60 KiB |
148
doc/equations/autodiff/mixed12.svg
Normal file
@@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152pt" height="23pt" viewBox="0 0 152 23" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.515625 -4 4.109375 -4.5625 3.328125 -4.5625 C 2.71875 -4.5625 2.078125 -4.390625 1.296875 -3.625 C 0.46875 -2.796875 0.40625 -1.859375 0.40625 -1.5625 C 0.40625 -0.9375 0.84375 0.21875 2.234375 0.21875 C 4.609375 0.21875 5.640625 -3.125 5.640625 -4.5625 C 5.640625 -6.140625 4.71875 -7.140625 3.484375 -7.140625 C 2.046875 -7.140625 1.578125 -5.84375 1.578125 -5.5625 C 1.578125 -5.421875 1.671875 -5.21875 1.96875 -5.21875 C 2.296875 -5.21875 2.5 -5.515625 2.5 -5.734375 C 2.5 -6.09375 2.1875 -6.09375 2.03125 -6.09375 C 2.46875 -6.828125 3.1875 -6.890625 3.46875 -6.890625 C 4.203125 -6.890625 4.890625 -6.375 4.890625 -5.078125 C 4.890625 -4.6875 4.828125 -4.1875 4.625 -3.375 Z M 2.265625 -0.0625 C 1.171875 -0.0625 1.171875 -1.09375 1.171875 -1.1875 C 1.171875 -1.453125 1.421875 -2.84375 1.828125 -3.453125 C 2.21875 -4.015625 2.71875 -4.34375 3.328125 -4.34375 C 4.421875 -4.34375 4.4375 -3.21875 4.4375 -3.015625 C 4.4375 -2.296875 3.796875 -0.0625 2.265625 -0.0625 Z M 2.265625 -0.0625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 3.65625 -3.984375 L 4.515625 -3.984375 C 4.71875 -3.984375 4.8125 -3.984375 4.8125 -4.1875 C 4.8125 -4.296875 4.71875 -4.296875 4.546875 -4.296875 L 3.71875 -4.296875 L 3.921875 -5.4375 C 3.96875 -5.640625 4.109375 -6.34375 4.171875 -6.46875 C 4.25 -6.65625 4.421875 -6.8125 4.640625 -6.8125 C 4.671875 -6.8125 4.9375 -6.8125 5.125 -6.625 C 4.6875 -6.59375 4.578125 -6.234375 4.578125 -6.09375 C 4.578125 -5.859375 4.765625 -5.734375 4.953125 -5.734375 C 5.21875 -5.734375 5.5 -5.96875 5.5 -6.34375 C 5.5 -6.796875 5.046875 -7.03125 4.640625 -7.03125 C 4.296875 -7.03125 3.671875 -6.84375 3.375 -5.859375 C 3.3125 -5.65625 3.28125 -5.546875 3.046875 -4.296875 L 2.359375 -4.296875 C 2.15625 -4.296875 2.046875 -4.296875 2.046875 -4.109375 C 2.046875 -3.984375 2.140625 -3.984375 2.328125 -3.984375 L 2.984375 -3.984375 L 2.25 -0.046875 C 2.0625 0.921875 1.890625 1.828125 1.375 1.828125 C 1.328125 1.828125 1.09375 1.828125 0.890625 1.640625 C 1.359375 1.609375 1.453125 1.25 1.453125 1.109375 C 1.453125 0.875 1.265625 0.75 1.078125 0.75 C 0.8125 0.75 0.53125 0.984375 0.53125 1.359375 C 0.53125 1.796875 0.96875 2.046875 1.375 2.046875 C 1.921875 2.046875 2.328125 1.453125 2.5 1.078125 C 2.828125 0.453125 3.046875 -0.75 3.0625 -0.828125 Z M 3.65625 -3.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 2.328125 -4.4375 C 2.328125 -4.625 2.328125 -4.625 2.125 -4.625 C 1.671875 -4.1875 1.046875 -4.1875 0.765625 -4.1875 L 0.765625 -3.9375 C 0.921875 -3.9375 1.390625 -3.9375 1.765625 -4.125 L 1.765625 -0.578125 C 1.765625 -0.34375 1.765625 -0.25 1.078125 -0.25 L 0.8125 -0.25 L 0.8125 0 C 0.9375 0 1.796875 -0.03125 2.046875 -0.03125 C 2.265625 -0.03125 3.140625 0 3.296875 0 L 3.296875 -0.25 L 3.03125 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.578125 Z M 2.328125 -4.4375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 1.90625 -2.328125 C 2.453125 -2.328125 2.84375 -1.953125 2.84375 -1.203125 C 2.84375 -0.34375 2.328125 -0.078125 1.9375 -0.078125 C 1.65625 -0.078125 1.03125 -0.15625 0.75 -0.578125 C 1.078125 -0.578125 1.15625 -0.8125 1.15625 -0.96875 C 1.15625 -1.1875 0.984375 -1.34375 0.765625 -1.34375 C 0.578125 -1.34375 0.375 -1.21875 0.375 -0.9375 C 0.375 -0.28125 1.09375 0.140625 1.9375 0.140625 C 2.90625 0.140625 3.578125 -0.515625 3.578125 -1.203125 C 3.578125 -1.75 3.140625 -2.296875 2.375 -2.453125 C 3.09375 -2.71875 3.359375 -3.234375 3.359375 -3.671875 C 3.359375 -4.21875 2.734375 -4.625 1.953125 -4.625 C 1.1875 -4.625 0.59375 -4.25 0.59375 -3.6875 C 0.59375 -3.453125 0.75 -3.328125 0.953125 -3.328125 C 1.171875 -3.328125 1.3125 -3.484375 1.3125 -3.671875 C 1.3125 -3.875 1.171875 -4.03125 0.953125 -4.046875 C 1.203125 -4.34375 1.671875 -4.421875 1.9375 -4.421875 C 2.25 -4.421875 2.6875 -4.265625 2.6875 -3.671875 C 2.6875 -3.375 2.59375 -3.046875 2.40625 -2.84375 C 2.1875 -2.578125 1.984375 -2.5625 1.640625 -2.53125 C 1.46875 -2.515625 1.453125 -2.515625 1.421875 -2.515625 C 1.40625 -2.515625 1.34375 -2.5 1.34375 -2.421875 C 1.34375 -2.328125 1.40625 -2.328125 1.53125 -2.328125 Z M 1.90625 -2.328125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 3.6875 -1.140625 L 3.6875 -1.390625 L 2.90625 -1.390625 L 2.90625 -4.5 C 2.90625 -4.640625 2.90625 -4.703125 2.765625 -4.703125 C 2.671875 -4.703125 2.640625 -4.703125 2.578125 -4.59375 L 0.265625 -1.390625 L 0.265625 -1.140625 L 2.328125 -1.140625 L 2.328125 -0.578125 C 2.328125 -0.328125 2.328125 -0.25 1.75 -0.25 L 1.5625 -0.25 L 1.5625 0 C 1.921875 -0.015625 2.359375 -0.03125 2.609375 -0.03125 C 2.875 -0.03125 3.3125 -0.015625 3.671875 0 L 3.671875 -0.25 L 3.484375 -0.25 C 2.90625 -0.25 2.90625 -0.328125 2.90625 -0.578125 L 2.90625 -1.140625 Z M 2.375 -3.9375 L 2.375 -1.390625 L 0.53125 -1.390625 Z M 2.375 -3.9375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-4">
|
||||
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-5">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 2.796875 0.0625 C 2.796875 -0.78125 2.53125 -1.390625 1.9375 -1.390625 C 1.484375 -1.390625 1.25 -1.015625 1.25 -0.703125 C 1.25 -0.390625 1.46875 0 1.953125 0 C 2.140625 0 2.296875 -0.0625 2.421875 -0.1875 C 2.453125 -0.21875 2.46875 -0.21875 2.484375 -0.21875 C 2.515625 -0.21875 2.515625 -0.015625 2.515625 0.0625 C 2.515625 0.53125 2.421875 1.46875 1.59375 2.390625 C 1.4375 2.5625 1.4375 2.59375 1.4375 2.625 C 1.4375 2.703125 1.5 2.765625 1.578125 2.765625 C 1.6875 2.765625 2.796875 1.703125 2.796875 0.0625 Z M 2.796875 0.0625 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="23.116" y="8.9121"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="28.95702" y="5.29413"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="32.926023" y="5.29413"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="37.39882" y="8.9121"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.023438 112.890625 L 655.585938 112.890625 " transform="matrix(0.1,0,0,-0.1,0,23)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="0.903906" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="6.744922" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="14.143006" y="17.36289"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="18.616056" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="24.457072" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="30.153956" y="17.36289"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="34.627006" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="40.468024" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="45.714906" y="17.36289"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="50.178966" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="56.019981" y="20.24297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="61.096166" y="17.36289"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="66.757106" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="72.220112" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="79.240116" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="86.260206" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="92.560206" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="99.580216" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="106.600006" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="112.900006" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="119.92001" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="126.939806" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="133.239806" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-4" x="140.25981" y="15.29297"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-5" x="147.279826" y="15.29297"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
179
doc/equations/autodiff/polynomial_transform.svg
Normal file
@@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="343pt" height="42pt" viewBox="0 0 343 42" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 2.640625 -5.5 C 2.640625 -5.875 2.3125 -6.1875 1.953125 -6.1875 C 1.53125 -6.1875 1.25 -5.859375 1.25 -5.5 C 1.25 -5.0625 1.609375 -4.796875 1.9375 -4.796875 C 2.328125 -4.796875 2.640625 -5.09375 2.640625 -5.5 Z M 2.640625 -0.703125 C 2.640625 -1.09375 2.3125 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.0625 1.25 -0.703125 C 1.25 -0.265625 1.609375 0 1.9375 0 C 2.328125 0 2.640625 -0.296875 2.640625 -0.703125 Z M 2.640625 -0.703125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-4">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-5">
|
||||
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 1.359375 -3.296875 C 1.453125 -3.296875 1.765625 -3.296875 1.765625 -3.578125 C 1.765625 -3.875 1.453125 -3.875 1.359375 -3.875 L 1.359375 -5.75 C 1.359375 -5.984375 1.359375 -6.25 1.078125 -6.25 C 0.78125 -6.25 0.78125 -5.984375 0.78125 -5.75 L 0.78125 -1.421875 C 0.78125 -1.1875 0.78125 -0.921875 1.078125 -0.921875 C 1.359375 -0.921875 1.359375 -1.1875 1.359375 -1.421875 Z M 1.359375 -3.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-1">
|
||||
<path style="stroke:none;" d="M 11.96875 -3.296875 C 11.171875 -2.703125 10.78125 -2.109375 10.671875 -1.921875 C 10.03125 -0.9375 9.90625 -0.03125 9.90625 -0.015625 C 9.90625 0.15625 10.078125 0.15625 10.203125 0.15625 C 10.4375 0.15625 10.453125 0.125 10.515625 -0.125 C 10.84375 -1.53125 11.6875 -2.734375 13.3125 -3.40625 C 13.484375 -3.453125 13.53125 -3.484375 13.53125 -3.578125 C 13.53125 -3.6875 13.4375 -3.734375 13.40625 -3.75 C 12.78125 -3.984375 11.046875 -4.703125 10.5 -7.109375 C 10.453125 -7.28125 10.4375 -7.328125 10.203125 -7.328125 C 10.078125 -7.328125 9.90625 -7.328125 9.90625 -7.15625 C 9.90625 -7.125 10.046875 -6.21875 10.640625 -5.265625 C 10.9375 -4.828125 11.34375 -4.328125 11.96875 -3.875 L 1.3125 -3.875 C 1.046875 -3.875 0.78125 -3.875 0.78125 -3.578125 C 0.78125 -3.296875 1.046875 -3.296875 1.3125 -3.296875 Z M 11.96875 -3.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-0">
|
||||
<path style="stroke:none;" d="M 7.53125 -5.765625 C 7.640625 -6.15625 7.8125 -6.46875 8.609375 -6.5 C 8.65625 -6.5 8.78125 -6.515625 8.78125 -6.703125 C 8.78125 -6.703125 8.78125 -6.8125 8.65625 -6.8125 C 8.328125 -6.8125 7.96875 -6.78125 7.640625 -6.78125 C 7.3125 -6.78125 6.953125 -6.8125 6.625 -6.8125 C 6.5625 -6.8125 6.453125 -6.8125 6.453125 -6.609375 C 6.453125 -6.5 6.546875 -6.5 6.625 -6.5 C 7.203125 -6.484375 7.3125 -6.28125 7.3125 -6.0625 C 7.3125 -6.03125 7.28125 -5.875 7.28125 -5.859375 L 6.15625 -1.421875 L 3.953125 -6.625 C 3.875 -6.796875 3.875 -6.8125 3.640625 -6.8125 L 2.296875 -6.8125 C 2.109375 -6.8125 2.015625 -6.8125 2.015625 -6.609375 C 2.015625 -6.5 2.109375 -6.5 2.296875 -6.5 C 2.34375 -6.5 2.96875 -6.5 2.96875 -6.40625 L 1.640625 -1.0625 C 1.53125 -0.65625 1.359375 -0.34375 0.5625 -0.3125 C 0.5 -0.3125 0.390625 -0.296875 0.390625 -0.109375 C 0.390625 -0.046875 0.4375 0 0.515625 0 C 0.84375 0 1.1875 -0.03125 1.515625 -0.03125 C 1.859375 -0.03125 2.21875 0 2.546875 0 C 2.59375 0 2.71875 0 2.71875 -0.203125 C 2.71875 -0.296875 2.625 -0.3125 2.515625 -0.3125 C 1.9375 -0.328125 1.859375 -0.546875 1.859375 -0.75 C 1.859375 -0.8125 1.875 -0.875 1.90625 -0.984375 L 3.21875 -6.234375 C 3.265625 -6.1875 3.265625 -6.15625 3.3125 -6.0625 L 5.796875 -0.1875 C 5.859375 -0.015625 5.890625 0 5.984375 0 C 6.09375 0 6.09375 -0.03125 6.140625 -0.203125 Z M 7.53125 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-1">
|
||||
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph5-0">
|
||||
<path style="stroke:none;" d="M 18.15625 20.078125 L 19.890625 15.484375 L 19.53125 15.484375 C 18.984375 16.984375 17.453125 17.953125 15.8125 18.390625 C 15.5 18.453125 14.09375 18.828125 11.34375 18.828125 L 2.703125 18.828125 L 10 10.265625 C 10.09375 10.15625 10.125 10.109375 10.125 10.046875 C 10.125 10.015625 10.125 9.96875 10.03125 9.828125 L 3.34375 0.6875 L 11.203125 0.6875 C 13.125 0.6875 14.4375 0.890625 14.5625 0.921875 C 15.328125 1.03125 16.578125 1.28125 17.71875 2 C 18.078125 2.21875 19.046875 2.875 19.53125 4.03125 L 19.890625 4.03125 L 18.15625 0 L 1.203125 0 C 0.875 0 0.859375 0.015625 0.8125 0.09375 C 0.796875 0.140625 0.796875 0.421875 0.796875 0.578125 L 8.390625 10.953125 L 0.96875 19.671875 C 0.8125 19.84375 0.8125 19.90625 0.8125 19.921875 C 0.8125 20.078125 0.953125 20.078125 1.203125 20.078125 Z M 18.15625 20.078125 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="-0.232813" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="40.303087" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="76.285087" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="84.267897" y="27.05117"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="89.748757" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="100.674957" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="139.321057" y="24.9"/>
|
||||
<use xlink:href="#glyph3-1" x="139.321057" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="191.565957" y="6.9629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="185.751897" y="11.27384"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="186.760097" y="41.60394"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="192.736267" y="41.60394"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="200.485271" y="41.60394"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="208.863967" y="24.90004"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="215.712797" y="27.05121"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="222.192877" y="24.90004"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="228.762797" y="18.97816"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="239.229997" y="24.90004"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="259.956997" y="6.96294"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="254.142937" y="11.27388"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="255.142156" y="41.60398"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="261.118326" y="41.60398"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="268.86733" y="41.60398"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="278.442926" y="15.18918"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="286.894096" y="9.98723"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="290.764016" y="9.98723"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="296.740186" y="9.98723"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="301.131986" y="15.18918"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="306.594876" y="15.18918"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="314.578076" y="17.34895"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-4" x="320.058936" y="15.18918"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2784.414062 206.914062 L 3255.234375 206.914062 " transform="matrix(0.1,0,0,-0.1,0,42)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="295.84" y="34.73711"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="304.22789" y="34.73711"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="326.71029" y="24.9"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-1" x="333.28021" y="18.97812"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="339.76927" y="24.9"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
327
doc/equations/autodiff/taylor_series.svg
Normal file
@@ -0,0 +1,327 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="345pt" height="79pt" viewBox="0 0 345 79" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 10.40625 -6.28125 C 10.40625 -8.65625 8.859375 -10.09375 6.859375 -10.09375 C 3.78125 -10.09375 0.6875 -6.796875 0.6875 -3.484375 C 0.6875 -1.234375 2.1875 0.296875 4.265625 0.296875 C 7.265625 0.296875 10.40625 -2.84375 10.40625 -6.28125 Z M 4.34375 -0.03125 C 3.171875 -0.03125 1.921875 -0.890625 1.921875 -3.125 C 1.921875 -4.4375 2.390625 -6.5625 3.578125 -8 C 4.625 -9.265625 5.828125 -9.78125 6.78125 -9.78125 C 8.046875 -9.78125 9.265625 -8.859375 9.265625 -6.796875 C 9.265625 -5.515625 8.71875 -3.53125 7.765625 -2.171875 C 6.71875 -0.703125 5.40625 -0.03125 4.34375 -0.03125 Z M 4.34375 -0.03125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-4">
|
||||
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-5">
|
||||
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-6">
|
||||
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-4">
|
||||
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-5">
|
||||
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-6">
|
||||
<path style="stroke:none;" d="M 4.078125 -2.296875 L 6.859375 -2.296875 C 7 -2.296875 7.1875 -2.296875 7.1875 -2.5 C 7.1875 -2.6875 7 -2.6875 6.859375 -2.6875 L 4.078125 -2.6875 L 4.078125 -5.484375 C 4.078125 -5.625 4.078125 -5.8125 3.875 -5.8125 C 3.671875 -5.8125 3.671875 -5.625 3.671875 -5.484375 L 3.671875 -2.6875 L 0.890625 -2.6875 C 0.75 -2.6875 0.5625 -2.6875 0.5625 -2.5 C 0.5625 -2.296875 0.75 -2.296875 0.890625 -2.296875 L 3.671875 -2.296875 L 3.671875 0.5 C 3.671875 0.640625 3.671875 0.828125 3.875 0.828125 C 4.078125 0.828125 4.078125 0.640625 4.078125 0.5 Z M 4.078125 -2.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-7">
|
||||
<path style="stroke:none;" d="M 2.9375 -6.375 C 2.9375 -6.625 2.9375 -6.640625 2.703125 -6.640625 C 2.078125 -6 1.203125 -6 0.890625 -6 L 0.890625 -5.6875 C 1.09375 -5.6875 1.671875 -5.6875 2.1875 -5.953125 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.953125 -0.3125 L 0.953125 0 C 1.296875 -0.03125 2.15625 -0.03125 2.5625 -0.03125 C 2.953125 -0.03125 3.828125 -0.03125 4.171875 0 L 4.171875 -0.3125 L 3.859375 -0.3125 C 2.953125 -0.3125 2.9375 -0.421875 2.9375 -0.78125 Z M 2.9375 -6.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph3-0">
|
||||
<path style="stroke:none;" d="M 2.515625 -4.734375 C 2.578125 -4.859375 2.609375 -4.9375 2.609375 -5.046875 C 2.609375 -5.328125 2.359375 -5.578125 2.046875 -5.578125 C 1.765625 -5.578125 1.578125 -5.390625 1.515625 -5.125 L 0.328125 -0.765625 C 0.328125 -0.75 0.296875 -0.640625 0.296875 -0.625 C 0.296875 -0.515625 0.546875 -0.453125 0.625 -0.453125 C 0.6875 -0.453125 0.703125 -0.484375 0.75 -0.609375 Z M 2.515625 -4.734375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph4-0">
|
||||
<path style="stroke:none;" d="M 2.75 -3.578125 C 2.75 -4 2.40625 -4.34375 2 -4.34375 C 1.578125 -4.34375 1.234375 -4 1.234375 -3.578125 C 1.234375 -3.171875 1.578125 -2.828125 2 -2.828125 C 2.40625 -2.828125 2.75 -3.171875 2.75 -3.578125 Z M 2.75 -3.578125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph5-0">
|
||||
<path style="stroke:none;" d="M 7.53125 -5.765625 C 7.640625 -6.15625 7.8125 -6.46875 8.609375 -6.5 C 8.65625 -6.5 8.78125 -6.515625 8.78125 -6.703125 C 8.78125 -6.703125 8.78125 -6.8125 8.65625 -6.8125 C 8.328125 -6.8125 7.96875 -6.78125 7.640625 -6.78125 C 7.3125 -6.78125 6.953125 -6.8125 6.625 -6.8125 C 6.5625 -6.8125 6.453125 -6.8125 6.453125 -6.609375 C 6.453125 -6.5 6.546875 -6.5 6.625 -6.5 C 7.203125 -6.484375 7.3125 -6.28125 7.3125 -6.0625 C 7.3125 -6.03125 7.28125 -5.875 7.28125 -5.859375 L 6.15625 -1.421875 L 3.953125 -6.625 C 3.875 -6.796875 3.875 -6.8125 3.640625 -6.8125 L 2.296875 -6.8125 C 2.109375 -6.8125 2.015625 -6.8125 2.015625 -6.609375 C 2.015625 -6.5 2.109375 -6.5 2.296875 -6.5 C 2.34375 -6.5 2.96875 -6.5 2.96875 -6.40625 L 1.640625 -1.0625 C 1.53125 -0.65625 1.359375 -0.34375 0.5625 -0.3125 C 0.5 -0.3125 0.390625 -0.296875 0.390625 -0.109375 C 0.390625 -0.046875 0.4375 0 0.515625 0 C 0.84375 0 1.1875 -0.03125 1.515625 -0.03125 C 1.859375 -0.03125 2.21875 0 2.546875 0 C 2.59375 0 2.71875 0 2.71875 -0.203125 C 2.71875 -0.296875 2.625 -0.3125 2.515625 -0.3125 C 1.9375 -0.328125 1.859375 -0.546875 1.859375 -0.75 C 1.859375 -0.8125 1.875 -0.875 1.90625 -0.984375 L 3.21875 -6.234375 C 3.265625 -6.1875 3.265625 -6.15625 3.3125 -6.0625 L 5.796875 -0.1875 C 5.859375 -0.015625 5.890625 0 5.984375 0 C 6.09375 0 6.09375 -0.03125 6.140625 -0.203125 Z M 7.53125 -5.765625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph5-1">
|
||||
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph6-0">
|
||||
<path style="stroke:none;" d="M 18.15625 20.078125 L 19.890625 15.484375 L 19.53125 15.484375 C 18.984375 16.984375 17.453125 17.953125 15.8125 18.390625 C 15.5 18.453125 14.09375 18.828125 11.34375 18.828125 L 2.703125 18.828125 L 10 10.265625 C 10.09375 10.15625 10.125 10.109375 10.125 10.046875 C 10.125 10.015625 10.125 9.96875 10.03125 9.828125 L 3.34375 0.6875 L 11.203125 0.6875 C 13.125 0.6875 14.4375 0.890625 14.5625 0.921875 C 15.328125 1.03125 16.578125 1.28125 17.71875 2 C 18.078125 2.21875 19.046875 2.875 19.53125 4.03125 L 19.890625 4.03125 L 18.15625 0 L 1.203125 0 C 0.875 0 0.859375 0.015625 0.8125 0.09375 C 0.796875 0.140625 0.796875 0.421875 0.796875 0.578125 L 8.390625 10.953125 L 0.96875 19.671875 C 0.8125 19.84375 0.8125 19.90625 0.8125 19.921875 C 0.8125 20.078125 0.953125 20.078125 1.203125 20.078125 Z M 18.15625 20.078125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph6-1">
|
||||
<path style="stroke:none;" d="M 5.921875 16.484375 C 5.921875 16.421875 5.890625 16.390625 5.859375 16.359375 C 5.203125 15.65625 4.234375 14.484375 3.625 12.15625 C 3.296875 10.84375 3.171875 9.359375 3.171875 8.03125 C 3.171875 4.265625 4.078125 1.625 5.796875 -0.25 C 5.921875 -0.375 5.921875 -0.40625 5.921875 -0.4375 C 5.921875 -0.578125 5.8125 -0.578125 5.75 -0.578125 C 5.53125 -0.578125 4.765625 0.28125 4.578125 0.5 C 3.109375 2.234375 2.1875 4.8125 2.1875 8.015625 C 2.1875 10.0625 2.53125 12.9375 4.421875 15.359375 C 4.5625 15.53125 5.5 16.625 5.75 16.625 C 5.8125 16.625 5.921875 16.625 5.921875 16.484375 Z M 5.921875 16.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph6-2">
|
||||
<path style="stroke:none;" d="M 4.375 8.03125 C 4.375 6 4.015625 3.109375 2.140625 0.6875 C 2 0.515625 1.0625 -0.578125 0.796875 -0.578125 C 0.734375 -0.578125 0.625 -0.546875 0.625 -0.4375 C 0.625 -0.375 0.65625 -0.328125 0.71875 -0.28125 C 1.40625 0.453125 2.34375 1.625 2.921875 3.90625 C 3.25 5.203125 3.390625 6.6875 3.390625 8.015625 C 3.390625 9.46875 3.25 10.9375 2.890625 12.328125 C 2.34375 14.34375 1.484375 15.484375 0.765625 16.296875 C 0.625 16.421875 0.625 16.453125 0.625 16.484375 C 0.625 16.59375 0.734375 16.625 0.796875 16.625 C 1.015625 16.625 1.8125 15.75 1.984375 15.546875 C 3.4375 13.8125 4.375 11.234375 4.375 8.03125 Z M 4.375 8.03125 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="-0.232813" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="8.218357" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="13.681247" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="21.664057" y="23.33598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="30.339837" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="44.451937" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="51.021857" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="60.471871" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="75.384757" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="83.835927" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="89.298817" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="97.282017" y="23.33598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="102.762877" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="111.411713" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="125.523777" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="133.974947" y="15.26293"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="137.223777" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="142.686667" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="150.669867" y="23.33598"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="156.142137" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="161.605027" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="171.369867" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="186.678867" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="195.130037" y="6.28091"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="197.86604" y="6.28091"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="201.114807" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="206.577697" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="214.560897" y="13.63403"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="220.032767" y="11.48286"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1866.796875 613.984375 L 2255.039062 613.984375 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-4" x="200.629" y="31.0309"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="207.649004" y="31.0309"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="226.6931" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="233.26302" y="15.26293"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="241.93919" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="257.24819" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="265.69897" y="6.28091"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="268.434985" y="6.28091"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph3-0" x="271.170976" y="6.28091"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="274.42006" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="279.88295" y="11.48286"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="287.86615" y="13.63403"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="293.34701" y="11.48286"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2572.460938 613.984375 L 2988.085938 613.984375 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-6" x="272.566" y="31.0309"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="279.586004" y="31.0309"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="299.998" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-2" x="306.56792" y="15.26293"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="315.24409" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="329.35619" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="335.73705" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph4-0" x="342.11791" y="21.1852"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-3" x="60.47219" y="61.1899"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="81.19919" y="43.2532"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-0" x="75.38552" y="47.56414"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-1" x="76.384348" y="77.89424"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-3" x="82.360518" y="77.89424"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="90.109515" y="77.89424"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="99.694518" y="51.48804"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-4" x="108.145298" y="46.2771"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-1" x="112.015218" y="46.2771"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-5" x="117.991388" y="46.2771"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-0" x="122.374198" y="51.48804"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="127.837088" y="51.48804"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-0" x="135.820288" y="53.63921"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-2" x="141.301538" y="51.48804"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 996.953125 214.023438 L 1467.734375 214.023438 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="117.082" y="71.02695"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-5" x="125.46989" y="71.02695"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="147.96089" y="61.18984"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-1" x="154.53081" y="55.26796"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="164.19683" y="61.18984"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="178.30893" y="61.18984"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-1" x="191.82693" y="49.57104"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="198.40584" y="61.18984"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph5-0" x="204.97615" y="55.26796"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-6" x="214.06599" y="55.26796"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="221.814994" y="55.26796"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph6-2" x="227.29609" y="49.57108"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="236.26015" y="61.18988"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 34 KiB |
@@ -1,13 +1,13 @@
|
||||
[book Math Toolkit
|
||||
[quickbook 1.7]
|
||||
[copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014, 2017 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang]
|
||||
[copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014, 2017 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang]
|
||||
[/purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22]
|
||||
[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 [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Murphy, Jeremy W.], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]]
|
||||
[authors [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Murphy, Jeremy W.], [Pulver, Matthew], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]]
|
||||
[/last-revision $Date$]
|
||||
[version 2.9.0]
|
||||
]
|
||||
@@ -669,6 +669,7 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22.
|
||||
[include quadrature/double_exponential.qbk]
|
||||
[include quadrature/naive_monte_carlo.qbk]
|
||||
[include differentiation/numerical_differentiation.qbk]
|
||||
[include differentiation/autodiff.qbk]
|
||||
[include differentiation/lanczos_smoothing.qbk]
|
||||
[endmathpart]
|
||||
|
||||
|
||||
@@ -137,6 +137,10 @@ test-suite examples :
|
||||
[ run cubic_b_spline_example.cpp : : : [ requires cxx11_smart_ptr cxx11_hdr_random cxx11_defaulted_functions ] ]
|
||||
[ compile naive_monte_carlo_example.cpp : [ requires cxx11_auto_declarations cxx11_lambdas cxx11_unified_initialization_syntax cxx11_hdr_thread cxx11_hdr_atomic cxx11_decltype cxx11_hdr_future cxx11_hdr_chrono cxx11_hdr_random cxx11_allocator ] ] # requires user input, can't run it, take a long time too!
|
||||
[ run catmull_rom_example.cpp : : : [ requires cxx17_if_constexpr cxx11_auto_declarations cxx17_std_apply ] ] # Actually the C++17 features used is std::size, not if constexpr; looks like there isn't yet a test for it.
|
||||
[ run autodiff_black_scholes.cpp : : : [ requires cxx11_inline_namespaces ] ]
|
||||
[ run autodiff_fourth_power.cpp : : : [ requires cxx11_inline_namespaces ] ]
|
||||
[ run autodiff_mixed_partials.cpp : : : [ requires cxx11_inline_namespaces ] ]
|
||||
[ run autodiff_multiprecision.cpp : : : [ requires cxx11_inline_namespaces ] ]
|
||||
;
|
||||
|
||||
run root_elliptic_finding.cpp /boost/timer : : : release <link>static [ requires cxx11_unified_initialization_syntax cxx11_defaulted_functions ] <target-os>freebsd:<linkflags>"-lrt" <target-os>linux:<linkflags>"-lrt -lpthread" ;
|
||||
|
||||
183
example/autodiff_black_scholes.cpp
Normal file
@@ -0,0 +1,183 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <iostream>
|
||||
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
// Equations and function/variable names are from
|
||||
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
|
||||
|
||||
// Standard normal probability density function
|
||||
template<typename X>
|
||||
X phi(const X& x)
|
||||
{
|
||||
return boost::math::constants::one_div_root_two_pi<X>()*exp(-0.5*x*x);
|
||||
}
|
||||
|
||||
// Standard normal cumulative distribution function
|
||||
template<typename X>
|
||||
X Phi(const X& x)
|
||||
{
|
||||
return 0.5*erfc(-boost::math::constants::one_div_root_two<X>()*x);
|
||||
}
|
||||
|
||||
enum CP { call, put };
|
||||
|
||||
// Assume zero annual dividend yield (q=0).
|
||||
template<typename Price,typename Sigma,typename Tau,typename Rate>
|
||||
promote<Price,Sigma,Tau,Rate>
|
||||
black_scholes_option_price(CP cp, double K, const Price& S, const Sigma& sigma, const Tau& tau, const Rate& r)
|
||||
{
|
||||
using namespace std;
|
||||
const auto d1 = (log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau));
|
||||
const auto d2 = (log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau));
|
||||
if (cp == call)
|
||||
return S*Phi(d1) - exp(-r*tau)*K*Phi(d2);
|
||||
else
|
||||
return exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
const double K = 100.0; // Strike price.
|
||||
const auto S = make_fvar<double,3>(105); // Stock price.
|
||||
const auto sigma = make_fvar<double,0,3>(5); // Volatility.
|
||||
const auto tau = make_fvar<double,0,0,1>(30.0/365); // Time to expiration in years. (30 days).
|
||||
const auto r = make_fvar<double,0,0,0,1>(1.25/100); // Interest rate.
|
||||
const auto call_price = black_scholes_option_price(call, K, S, sigma, tau, r);
|
||||
const auto put_price = black_scholes_option_price(put, K, S, sigma, tau, r);
|
||||
|
||||
// Compare automatically calculated greeks by autodiff with formulas for greeks.
|
||||
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
|
||||
const double d1 = static_cast<double>((log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau)));
|
||||
const double d2 = static_cast<double>((log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau)));
|
||||
const double formula_call_delta = +Phi(+d1);
|
||||
const double formula_put_delta = -Phi(-d1);
|
||||
const double formula_vega = static_cast<double>(S*phi(d1)*sqrt(tau));
|
||||
const double formula_call_theta = static_cast<double>(-S*phi(d1)*sigma/(2*sqrt(tau))-r*K*exp(-r*tau)*Phi(+d2));
|
||||
const double formula_put_theta = static_cast<double>(-S*phi(d1)*sigma/(2*sqrt(tau))+r*K*exp(-r*tau)*Phi(-d2));
|
||||
const double formula_call_rho = static_cast<double>(+K*tau*exp(-r*tau)*Phi(+d2));
|
||||
const double formula_put_rho = static_cast<double>(-K*tau*exp(-r*tau)*Phi(-d2));
|
||||
const double formula_gamma = static_cast<double>(phi(d1)/(S*sigma*sqrt(tau)));
|
||||
const double formula_vanna = static_cast<double>(-phi(d1)*d2/sigma);
|
||||
const double formula_charm = static_cast<double>(phi(d1)*(d2*sigma*sqrt(tau)-2*r*tau)/(2*tau*sigma*sqrt(tau)));
|
||||
const double formula_vomma = static_cast<double>(S*phi(d1)*sqrt(tau)*d1*d2/sigma);
|
||||
const double formula_veta = static_cast<double>(-S*phi(d1)*sqrt(tau)*(r*d1/(sigma*sqrt(tau))-(1+d1*d2)/(2*tau)));
|
||||
const double formula_speed = static_cast<double>(-phi(d1)*(d1/(sigma*sqrt(tau))+1)/(S*S*sigma*sqrt(tau)));
|
||||
const double formula_zomma = static_cast<double>(phi(d1)*(d1*d2-1)/(S*sigma*sigma*sqrt(tau)));
|
||||
const double formula_color =
|
||||
static_cast<double>(-phi(d1)/(2*S*tau*sigma*sqrt(tau))*(1+(2*r*tau-d2*sigma*sqrt(tau))*d1/(sigma*sqrt(tau))));
|
||||
const double formula_ultima = -formula_vega*static_cast<double>((d1*d2*(1-d1*d2)+d1*d1+d2*d2)/(sigma*sigma));
|
||||
|
||||
std::cout << std::setprecision(std::numeric_limits<double>::digits10)
|
||||
<< "autodiff black-scholes call price = " << call_price.derivative(0,0,0,0) << '\n'
|
||||
<< "autodiff black-scholes put price = " << put_price.derivative(0,0,0,0) << '\n'
|
||||
<< "\n## First-order Greeks\n"
|
||||
<< "autodiff call delta = " << call_price.derivative(1,0,0,0) << '\n'
|
||||
<< " formula call delta = " << formula_call_delta << '\n'
|
||||
<< "autodiff call vega = " << call_price.derivative(0,1,0,0) << '\n'
|
||||
<< " formula call vega = " << formula_vega << '\n'
|
||||
<< "autodiff call theta = " << -call_price.derivative(0,0,1,0) << '\n' // minus sign due to tau = T-time
|
||||
<< " formula call theta = " << formula_call_theta << '\n'
|
||||
<< "autodiff call rho = " << call_price.derivative(0,0,0,1) << '\n'
|
||||
<< " formula call rho = " << formula_call_rho << '\n'
|
||||
<< '\n'
|
||||
<< "autodiff put delta = " << put_price.derivative(1,0,0,0) << '\n'
|
||||
<< " formula put delta = " << formula_put_delta << '\n'
|
||||
<< "autodiff put vega = " << put_price.derivative(0,1,0,0) << '\n'
|
||||
<< " formula put vega = " << formula_vega << '\n'
|
||||
<< "autodiff put theta = " << -put_price.derivative(0,0,1,0) << '\n'
|
||||
<< " formula put theta = " << formula_put_theta << '\n'
|
||||
<< "autodiff put rho = " << put_price.derivative(0,0,0,1) << '\n'
|
||||
<< " formula put rho = " << formula_put_rho << '\n'
|
||||
<< "\n## Second-order Greeks\n"
|
||||
<< "autodiff call gamma = " << call_price.derivative(2,0,0,0) << '\n'
|
||||
<< "autodiff put gamma = " << put_price.derivative(2,0,0,0) << '\n'
|
||||
<< " formula gamma = " << formula_gamma << '\n'
|
||||
<< "autodiff call vanna = " << call_price.derivative(1,1,0,0) << '\n'
|
||||
<< "autodiff put vanna = " << put_price.derivative(1,1,0,0) << '\n'
|
||||
<< " formula vanna = " << formula_vanna << '\n'
|
||||
<< "autodiff call charm = " << -call_price.derivative(1,0,1,0) << '\n'
|
||||
<< "autodiff put charm = " << -put_price.derivative(1,0,1,0) << '\n'
|
||||
<< " formula charm = " << formula_charm << '\n'
|
||||
<< "autodiff call vomma = " << call_price.derivative(0,2,0,0) << '\n'
|
||||
<< "autodiff put vomma = " << put_price.derivative(0,2,0,0) << '\n'
|
||||
<< " formula vomma = " << formula_vomma << '\n'
|
||||
<< "autodiff call veta = " << call_price.derivative(0,1,1,0) << '\n'
|
||||
<< "autodiff put veta = " << put_price.derivative(0,1,1,0) << '\n'
|
||||
<< " formula veta = " << formula_veta << '\n'
|
||||
<< "\n## Third-order Greeks\n"
|
||||
<< "autodiff call speed = " << call_price.derivative(3,0,0,0) << '\n'
|
||||
<< "autodiff put speed = " << put_price.derivative(3,0,0,0) << '\n'
|
||||
<< " formula speed = " << formula_speed << '\n'
|
||||
<< "autodiff call zomma = " << call_price.derivative(2,1,0,0) << '\n'
|
||||
<< "autodiff put zomma = " << put_price.derivative(2,1,0,0) << '\n'
|
||||
<< " formula zomma = " << formula_zomma << '\n'
|
||||
<< "autodiff call color = " << call_price.derivative(2,0,1,0) << '\n'
|
||||
<< "autodiff put color = " << put_price.derivative(2,0,1,0) << '\n'
|
||||
<< " formula color = " << formula_color << '\n'
|
||||
<< "autodiff call ultima = " << call_price.derivative(0,3,0,0) << '\n'
|
||||
<< "autodiff put ultima = " << put_price.derivative(0,3,0,0) << '\n'
|
||||
<< " formula ultima = " << formula_ultima << '\n'
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
Output:
|
||||
autodiff black-scholes call price = 56.5136030677739
|
||||
autodiff black-scholes put price = 51.4109161009333
|
||||
|
||||
## First-order Greeks
|
||||
autodiff call delta = 0.773818444921273
|
||||
formula call delta = 0.773818444921274
|
||||
autodiff call vega = 9.05493427705736
|
||||
formula call vega = 9.05493427705736
|
||||
autodiff call theta = -275.73013426444
|
||||
formula call theta = -275.73013426444
|
||||
autodiff call rho = 2.03320550539396
|
||||
formula call rho = 2.03320550539396
|
||||
|
||||
autodiff put delta = -0.226181555078726
|
||||
formula put delta = -0.226181555078726
|
||||
autodiff put vega = 9.05493427705736
|
||||
formula put vega = 9.05493427705736
|
||||
autodiff put theta = -274.481417851526
|
||||
formula put theta = -274.481417851526
|
||||
autodiff put rho = -6.17753255212599
|
||||
formula put rho = -6.17753255212599
|
||||
|
||||
## Second-order Greeks
|
||||
autodiff call gamma = 0.00199851912993254
|
||||
autodiff put gamma = 0.00199851912993254
|
||||
formula gamma = 0.00199851912993254
|
||||
autodiff call vanna = 0.0410279463126531
|
||||
autodiff put vanna = 0.0410279463126531
|
||||
formula vanna = 0.0410279463126531
|
||||
autodiff call charm = -1.2505564233679
|
||||
autodiff put charm = -1.2505564233679
|
||||
formula charm = -1.2505564233679
|
||||
autodiff call vomma = -0.928114149313108
|
||||
autodiff put vomma = -0.928114149313108
|
||||
formula vomma = -0.928114149313107
|
||||
autodiff call veta = 26.7947073115641
|
||||
autodiff put veta = 26.7947073115641
|
||||
formula veta = 26.7947073115641
|
||||
|
||||
## Third-order Greeks
|
||||
autodiff call speed = -2.90117322380992e-05
|
||||
autodiff put speed = -2.90117322380992e-05
|
||||
formula speed = -2.90117322380992e-05
|
||||
autodiff call zomma = -0.000604548369901419
|
||||
autodiff put zomma = -0.000604548369901419
|
||||
formula zomma = -0.000604548369901419
|
||||
autodiff call color = -0.0184014426606065
|
||||
autodiff put color = -0.0184014426606065
|
||||
formula color = -0.0184014426606065
|
||||
autodiff call ultima = -0.0922426864775683
|
||||
autodiff put ultima = -0.0922426864775683
|
||||
formula ultima = -0.0922426864775685
|
||||
**/
|
||||
35
example/autodiff_fourth_power.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <iostream>
|
||||
|
||||
template<typename T>
|
||||
T fourth_power(T x)
|
||||
{
|
||||
x *= x;
|
||||
return x *= x;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
constexpr int Order=5; // The highest order derivative to be calculated.
|
||||
const autodiff_fvar<double,Order> x = make_fvar<double,Order>(2.0); // Find derivatives at x=2.
|
||||
const autodiff_fvar<double,Order> y = fourth_power(x);
|
||||
for (int i=0 ; i<=Order ; ++i)
|
||||
std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << std::endl;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
Output:
|
||||
y.derivative(0) = 16
|
||||
y.derivative(1) = 32
|
||||
y.derivative(2) = 48
|
||||
y.derivative(3) = 48
|
||||
y.derivative(4) = 24
|
||||
y.derivative(5) = 0
|
||||
**/
|
||||
54
example/autodiff_mixed_partials.cpp
Normal file
46
example/autodiff_multiprecision.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <boost/multiprecision/cpp_bin_float.hpp>
|
||||
#include <iostream>
|
||||
|
||||
template<typename T>
|
||||
T f(const T& w, const T& x, const T& y, const T& z)
|
||||
{
|
||||
using namespace std;
|
||||
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
using cpp_bin_float_50 = boost::multiprecision::cpp_bin_float_50;
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
constexpr int Nw=3; // Max order of derivative to calculate for w
|
||||
constexpr int Nx=2; // Max order of derivative to calculate for x
|
||||
constexpr int Ny=4; // Max order of derivative to calculate for y
|
||||
constexpr int Nz=3; // Max order of derivative to calculate for z
|
||||
using var = autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>;
|
||||
const var w = make_fvar<cpp_bin_float_50,Nw>(11);
|
||||
const var x = make_fvar<cpp_bin_float_50,0,Nx>(12);
|
||||
const var y = make_fvar<cpp_bin_float_50,0,0,Ny>(13);
|
||||
const var z = make_fvar<cpp_bin_float_50,0,0,0,Nz>(14);
|
||||
const var v = f(w,x,y,z);
|
||||
// Calculated from Mathematica symbolic differentiation.
|
||||
const cpp_bin_float_50 answer("1976.319600747797717779881875290418720908121189218755");
|
||||
std::cout << std::setprecision(std::numeric_limits<cpp_bin_float_50>::digits10)
|
||||
<< "mathematica : " << answer << '\n'
|
||||
<< "autodiff : " << v.derivative(Nw,Nx,Ny,Nz) << '\n'
|
||||
<< "relative error: " << std::setprecision(3) << (v.derivative(Nw,Nx,Ny,Nz)/answer-1)
|
||||
<< std::endl;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
Output:
|
||||
mathematica : 1976.3196007477977177798818752904187209081211892188
|
||||
autodiff : 1976.3196007477977177798818752904187209081211892188
|
||||
relative error: 2.67e-50
|
||||
**/
|
||||
1632
include/boost/math/differentiation/autodiff.hpp
Normal file
224
include/boost/math/differentiation/autodiff_cpp11.hpp
Normal file
@@ -0,0 +1,224 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// Contributors:
|
||||
// * Kedar R. Bhat - C++11 compatibility.
|
||||
|
||||
// Notes:
|
||||
// * Any changes to this file should always be downstream from autodiff.cpp.
|
||||
// C++17 is a higher-level language and is easier to maintain. For example, a number of functions which are
|
||||
// lucidly read in autodiff.cpp are forced to be split into multiple structs/functions in this file for C++11.
|
||||
// * Use of typename RootType and SizeType is a hack to prevent Visual Studio 2015 from compiling functions
|
||||
// that are never called, that would otherwise produce compiler errors.
|
||||
|
||||
#ifndef BOOST_MATH_DIFFERENTIATION_AUTODIFF_HPP
|
||||
# error "Do not #include this file directly. This should only be #included by autodiff.hpp for C++11 compatibility."
|
||||
#endif
|
||||
|
||||
namespace boost { namespace math { namespace differentiation { inline namespace autodiff_v1 {
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order>::fvar(const root_type& ca, const bool is_variable)
|
||||
{
|
||||
fvar_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, ca, is_variable);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
void fvar<RealType,Order>::fvar_cpp11(std::true_type, const RootType& ca, const bool is_variable)
|
||||
{
|
||||
v.front() = RealType(ca, is_variable);
|
||||
if (0 < Order)
|
||||
std::fill(v.begin()+1, v.end(), static_cast<RealType>(0));
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
void fvar<RealType,Order>::fvar_cpp11(std::false_type, const RootType& ca, const bool is_variable)
|
||||
{
|
||||
v.front() = ca;
|
||||
if (0 < Order)
|
||||
{
|
||||
v[1] = static_cast<root_type>(static_cast<int>(is_variable));
|
||||
if (1 < Order)
|
||||
std::fill(v.begin()+2, v.end(), static_cast<RealType>(0));
|
||||
}
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename... Orders>
|
||||
get_type_at<RealType, sizeof...(Orders)>
|
||||
fvar<RealType,Order>::at_cpp11(std::true_type, size_t order, Orders... orders) const
|
||||
{
|
||||
return v.at(order);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename... Orders>
|
||||
get_type_at<RealType, sizeof...(Orders)>
|
||||
fvar<RealType,Order>::at_cpp11(std::false_type, size_t order, Orders... orders) const
|
||||
{
|
||||
return v.at(order).at(orders...);
|
||||
}
|
||||
|
||||
// Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)"
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename... Orders>
|
||||
get_type_at<RealType,sizeof...(Orders)> fvar<RealType,Order>::at(size_t order, Orders... orders) const
|
||||
{
|
||||
return at_cpp11(std::integral_constant<bool,sizeof...(orders)==0>{}, order, orders...);
|
||||
}
|
||||
|
||||
template<typename T, typename... Ts>
|
||||
constexpr T product(Ts... factors)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
template<typename T, typename... Ts>
|
||||
constexpr T product(T factor, Ts... factors)
|
||||
{
|
||||
return factor * product<T>(factors...);
|
||||
}
|
||||
|
||||
// Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)"
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename... Orders>
|
||||
get_type_at<fvar<RealType,Order>,sizeof...(Orders)> fvar<RealType,Order>::derivative(Orders... orders) const
|
||||
{
|
||||
static_assert(sizeof...(Orders) <= depth, "Number of parameters to derivative(...) cannot exceed fvar::depth.");
|
||||
return at(orders...) * product(boost::math::factorial<root_type>(orders)...);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename SizeType>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::true_type,
|
||||
SizeType z0, size_t isum0, const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
|
||||
{
|
||||
const RealType zero(0);
|
||||
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
|
||||
const size_t m1 = order_sum + isum1 < Order + z1 ? Order + z1 - (order_sum + isum1) : 0;
|
||||
const size_t i_max = m0 + m1 < Order ? Order - (m0 + m1) : 0;
|
||||
fvar<RealType,Order> retval = fvar<RealType,Order>();
|
||||
for (size_t i=0, j=Order ; i<=i_max ; ++i, --j)
|
||||
retval.v[j] = epsilon_inner_product(z0, isum0, m0, cr, z1, isum1, m1, j);
|
||||
return retval;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename SizeType>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::false_type,
|
||||
SizeType z0, size_t isum0, const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
|
||||
{
|
||||
const RealType zero(0);
|
||||
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
|
||||
const size_t m1 = order_sum + isum1 < Order + z1 ? Order + z1 - (order_sum + isum1) : 0;
|
||||
const size_t i_max = m0 + m1 < Order ? Order - (m0 + m1) : 0;
|
||||
fvar<RealType,Order> retval = fvar<RealType,Order>();
|
||||
for (size_t i=0, j=Order ; i<=i_max ; ++i, --j)
|
||||
retval.v[j] = std::inner_product(v.cbegin()+m0, v.cend()-(i+m1), cr.v.crbegin()+(i+m0), zero);
|
||||
return retval;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply(size_t z0, size_t isum0,
|
||||
const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
|
||||
{
|
||||
return epsilon_multiply_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{},
|
||||
z0, isum0, cr, z1, isum1);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename SizeType>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::true_type,
|
||||
SizeType z0, size_t isum0, const root_type& ca) const
|
||||
{
|
||||
fvar<RealType,Order> retval(*this);
|
||||
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
|
||||
for (size_t i=m0 ; i<=Order ; ++i)
|
||||
retval.v[i] = retval.v[i].epsilon_multiply(z0, isum0+i, ca);
|
||||
return retval;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename SizeType>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::false_type,
|
||||
SizeType z0, size_t isum0, const root_type& ca) const
|
||||
{
|
||||
fvar<RealType,Order> retval(*this);
|
||||
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
|
||||
for (size_t i=m0 ; i<=Order ; ++i)
|
||||
if (retval.v[i] != static_cast<RealType>(0))
|
||||
retval.v[i] *= ca;
|
||||
return retval;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply(size_t z0, size_t isum0,
|
||||
const root_type& ca) const
|
||||
{
|
||||
return epsilon_multiply_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, z0, isum0, ca);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type_cpp11(std::true_type,
|
||||
bool is_root, const RootType& ca)
|
||||
{
|
||||
auto itr = v.begin();
|
||||
itr->multiply_assign_by_root_type(is_root, ca);
|
||||
for (++itr ; itr!=v.end() ; ++itr)
|
||||
itr->multiply_assign_by_root_type(false, ca);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type_cpp11(std::false_type,
|
||||
bool is_root, const RootType& ca)
|
||||
{
|
||||
auto itr = v.begin();
|
||||
if (is_root || *itr != 0)
|
||||
*itr *= ca; // Skip multiplication of 0 by ca=inf to avoid nan. Exception: root value is always multiplied.
|
||||
for (++itr ; itr!=v.end() ; ++itr)
|
||||
if (*itr != 0)
|
||||
*itr *= ca;
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type(bool is_root, const root_type& ca)
|
||||
{
|
||||
return multiply_assign_by_root_type_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{},
|
||||
is_root, ca);
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::set_root_cpp11(std::true_type, const RootType& root)
|
||||
{
|
||||
v.front().set_root(root);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
template<typename RootType>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::set_root_cpp11(std::false_type, const RootType& root)
|
||||
{
|
||||
v.front() = root;
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<typename RealType, size_t Order>
|
||||
fvar<RealType,Order>& fvar<RealType,Order>::set_root(const root_type& root)
|
||||
{
|
||||
return set_root_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, root);
|
||||
}
|
||||
|
||||
} // namespace detail
|
||||
|
||||
} } } } // namespace boost::math::differentiation::autodiff_v1
|
||||
@@ -1241,6 +1241,10 @@ test-suite quadrature :
|
||||
[ run test_numerical_differentiation.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_auto_declarations cxx11_constexpr ] ]
|
||||
[ run compile_test/numerical_differentiation_incl_test.cpp compile_test_main : : : [ requires cxx11_auto_declarations cxx11_constexpr ] ]
|
||||
[ compile compile_test/numerical_differentiation_concept_test.cpp : [ requires cxx11_auto_declarations cxx11_constexpr ] ]
|
||||
[ run test_autodiff_1.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
|
||||
[ run test_autodiff_2.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
|
||||
[ run test_autodiff_3.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
|
||||
[ run test_autodiff_4.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
|
||||
;
|
||||
|
||||
build-project ../example ;
|
||||
|
||||
72
test/test_autodiff.hpp
Normal file
@@ -0,0 +1,72 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/fusion/include/algorithm.hpp>
|
||||
#include <boost/fusion/include/vector.hpp>
|
||||
#include <boost/math/differentiation/autodiff.hpp>
|
||||
#include <boost/math/special_functions/factorials.hpp>
|
||||
#include <boost/math/special_functions/fpclassify.hpp> // isnan
|
||||
#include <boost/math/special_functions/round.hpp> // iround
|
||||
#include <boost/math/special_functions/trunc.hpp> // itrunc
|
||||
//#include <boost/multiprecision/cpp_bin_float.hpp>
|
||||
|
||||
#define BOOST_TEST_MODULE test_autodiff
|
||||
#include <boost/test/included/unit_test.hpp>
|
||||
|
||||
#include <sstream>
|
||||
|
||||
//boost::fusion::vector<float,double,long double,boost::multiprecision::cpp_bin_float_50> bin_float_types;
|
||||
boost::fusion::vector<float,double,long double> bin_float_types; // cpp_bin_float_50 is fixed in boost 1.70
|
||||
// cpp_dec_float_50 cannot be used with close_at_tolerance
|
||||
//boost::fusion::vector<boost::multiprecision::cpp_dec_float_50>
|
||||
boost::fusion::vector<> multiprecision_float_types;
|
||||
|
||||
using namespace boost::math::differentiation;
|
||||
|
||||
template<typename W,typename X,typename Y,typename Z>
|
||||
promote<W,X,Y,Z> mixed_partials_f(const W& w, const X& x, const Y& y, const Z& z)
|
||||
{
|
||||
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
|
||||
}
|
||||
|
||||
// Equations and function/variable names are from
|
||||
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
|
||||
//
|
||||
// Standard normal probability density function
|
||||
template<typename T>
|
||||
T phi(const T& x)
|
||||
{
|
||||
return boost::math::constants::one_div_root_two_pi<T>()*exp(-0.5*x*x);
|
||||
}
|
||||
|
||||
// Standard normal cumulative distribution function
|
||||
template<typename T>
|
||||
T Phi(const T& x)
|
||||
{
|
||||
return 0.5*erfc(-boost::math::constants::one_div_root_two<T>()*x);
|
||||
}
|
||||
|
||||
enum CP { call, put };
|
||||
|
||||
// Assume zero annual dividend yield (q=0).
|
||||
template<typename Price,typename Sigma,typename Tau,typename Rate>
|
||||
promote<Price,Sigma,Tau,Rate>
|
||||
black_scholes_option_price(CP cp, double K, const Price& S, const Sigma& sigma, const Tau& tau, const Rate& r)
|
||||
{
|
||||
const auto d1 = (log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau));
|
||||
const auto d2 = (log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau));
|
||||
static_assert(std::is_same<decltype(S*Phi(d1) - exp(-r*tau)*K*Phi(d2)),
|
||||
decltype(exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1))>::value, "decltype(call) != decltype(put)");
|
||||
if (cp == call)
|
||||
return S*Phi(d1) - exp(-r*tau)*K*Phi(d2);
|
||||
else
|
||||
return exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T uncast_return(const T& x)
|
||||
{
|
||||
return x == 0 ? 0 : 1;
|
||||
}
|
||||
917
test/test_autodiff_1.cpp
Normal file
@@ -0,0 +1,917 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include "test_autodiff.hpp"
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(test_autodiff_1)
|
||||
|
||||
struct constructors_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
// Verify value-initialized instance has all 0 entries.
|
||||
const autodiff_fvar<T,m> empty1 = autodiff_fvar<T,m>();
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
BOOST_REQUIRE(empty1.derivative(i) == 0.0);
|
||||
const auto empty2 = autodiff_fvar<T,m,n>();
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(empty2.derivative(i,j) == 0.0);
|
||||
// Single variable
|
||||
constexpr float cx = 10.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
if (i==0)
|
||||
BOOST_REQUIRE(x.derivative(i) == cx);
|
||||
else if (i==1)
|
||||
BOOST_REQUIRE(x.derivative(i) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(x.derivative(i) == 0.0);
|
||||
const autodiff_fvar<T,n> xn = x;
|
||||
for (int i=0 ; i<=n ; ++i)
|
||||
if (i==0)
|
||||
BOOST_REQUIRE(xn.derivative(i) == cx);
|
||||
else if (i==1)
|
||||
BOOST_REQUIRE(xn.derivative(i) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(xn.derivative(i) == 0.0);
|
||||
// Second independent variable
|
||||
constexpr float cy = 100.0;
|
||||
const auto y = make_fvar<T,m,n>(cy);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(y.derivative(i,j) == cy);
|
||||
else if (i==0 && j==1)
|
||||
BOOST_REQUIRE(y.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(y.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(constructors)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, constructors_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, constructors_test());
|
||||
}
|
||||
|
||||
struct implicit_constructors_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
const autodiff_fvar<T,m> x = 3;
|
||||
const autodiff_fvar<T,m> one = uncast_return(x);
|
||||
const autodiff_fvar<T,m> two_and_a_half = 2.5;
|
||||
BOOST_REQUIRE(static_cast<T>(x) == 3.0);
|
||||
BOOST_REQUIRE(static_cast<T>(one) == 1.0);
|
||||
BOOST_REQUIRE(static_cast<T>(two_and_a_half) == 2.5);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(implicit_constructors)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, implicit_constructors_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, implicit_constructors_test());
|
||||
}
|
||||
|
||||
struct assignment_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
constexpr float cy = 10.0;
|
||||
autodiff_fvar<T,m,n> empty; // Uninitialized variable<> may have non-zero values.
|
||||
// Single variable
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
empty = static_cast<decltype(empty)>(x); // Test static_cast of single-variable to double-variable type.
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == cx);
|
||||
else if (i==1 && j==0)
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
|
||||
auto y = make_fvar<T,m,n>(cy);
|
||||
empty = y; // default assignment operator
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == cy);
|
||||
else if (i==0 && j==1)
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
|
||||
empty = cx; // set a constant
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == cx);
|
||||
else
|
||||
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(assignment)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, assignment_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, assignment_test());
|
||||
}
|
||||
|
||||
struct ostream_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
const T cx = 10;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
std::ostringstream ss;
|
||||
ss << "x = " << x;
|
||||
BOOST_REQUIRE(ss.str() == "x = depth(1)(10,1,0,0)");
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ostream)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, ostream_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, ostream_test());
|
||||
}
|
||||
|
||||
struct addition_assignment_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
auto sum = autodiff_fvar<T,m,n>(); // zero-initialized
|
||||
// Single variable
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
sum += x;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == cx);
|
||||
else if (i==1 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
|
||||
// Arithmetic constant
|
||||
constexpr float cy = 11.0;
|
||||
sum = 0;
|
||||
sum += cy;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == cy);
|
||||
else
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(addition_assignment)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, addition_assignment_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, addition_assignment_test());
|
||||
}
|
||||
|
||||
struct subtraction_assignment_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
auto sum = autodiff_fvar<T,m,n>(); // zero-initialized
|
||||
// Single variable
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
sum -= x;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == -cx);
|
||||
else if (i==1 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == -1.0);
|
||||
else
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
|
||||
// Arithmetic constant
|
||||
constexpr float cy = 11.0;
|
||||
sum = 0;
|
||||
sum -= cy;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == -cy);
|
||||
else
|
||||
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(subtraction_assignment)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, subtraction_assignment_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, subtraction_assignment_test());
|
||||
}
|
||||
|
||||
// Try explicit bracing based on feedback. Doesn't add very much except 26 extra lines.
|
||||
struct multiplication_assignment_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
auto product = autodiff_fvar<T,m,n>(1); // unit constant
|
||||
// Single variable
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
product *= x;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
{
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
{
|
||||
if (i==0 && j==0)
|
||||
{
|
||||
BOOST_REQUIRE(product.derivative(i,j) == cx);
|
||||
}
|
||||
else if (i==1 && j==0)
|
||||
{
|
||||
BOOST_REQUIRE(product.derivative(i,j) == 1.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_REQUIRE(product.derivative(i,j) == 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Arithmetic constant
|
||||
constexpr float cy = 11.0;
|
||||
product = 1;
|
||||
product *= cy;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
{
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
{
|
||||
if (i==0 && j==0)
|
||||
{
|
||||
BOOST_REQUIRE(product.derivative(i,j) == cy);
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_REQUIRE(product.derivative(i,j) == 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 0 * inf = nan
|
||||
x = make_fvar<T,m>(0.0);
|
||||
x *= std::numeric_limits<T>::infinity();
|
||||
//std::cout << "x = " << x << std::endl;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
{
|
||||
if (i==0)
|
||||
{
|
||||
BOOST_REQUIRE(boost::math::isnan(static_cast<T>(x))); // Correct
|
||||
//BOOST_REQUIRE(x.derivative(i) == 0.0); // Wrong. See multiply_assign_by_root_type().
|
||||
}
|
||||
else if (i==1)
|
||||
{
|
||||
BOOST_REQUIRE(boost::math::isinf(x.derivative(i)));
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_REQUIRE(x.derivative(i) == 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiplication_assignment)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, multiplication_assignment_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, multiplication_assignment_test());
|
||||
}
|
||||
|
||||
struct division_assignment_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 16.0;
|
||||
auto quotient = autodiff_fvar<T,m,n>(1); // unit constant
|
||||
// Single variable
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
quotient /= x;
|
||||
BOOST_REQUIRE(quotient.derivative(0,0) == 1/cx);
|
||||
BOOST_REQUIRE(quotient.derivative(1,0) == -1/std::pow(cx,2));
|
||||
BOOST_REQUIRE(quotient.derivative(2,0) == 2/std::pow(cx,3));
|
||||
BOOST_REQUIRE(quotient.derivative(3,0) == -6/std::pow(cx,4));
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=1 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(quotient.derivative(i,j) == 0.0);
|
||||
// Arithmetic constant
|
||||
constexpr float cy = 32.0;
|
||||
quotient = 1;
|
||||
quotient /= cy;
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(quotient.derivative(i,j) == 1/cy);
|
||||
else
|
||||
BOOST_REQUIRE(quotient.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(division_assignment)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, division_assignment_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, division_assignment_test());
|
||||
}
|
||||
|
||||
struct unary_signs_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 16.0;
|
||||
autodiff_fvar<T,m,n> lhs;
|
||||
// Single variable
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
lhs = static_cast<decltype(lhs)>(-x);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == -cx);
|
||||
else if (i==1 && j==0)
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == -1.0);
|
||||
else
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == 0.0);
|
||||
lhs = static_cast<decltype(lhs)>(+x);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
if (i==0 && j==0)
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == cx);
|
||||
else if (i==1 && j==0)
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(lhs.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(unary_signs)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, unary_signs_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, unary_signs_test());
|
||||
}
|
||||
|
||||
// TODO 3 tests for 3 operator+() definitions.
|
||||
|
||||
struct cast_double_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr float ca = 13.0;
|
||||
constexpr int i = 12;
|
||||
constexpr int m = 3;
|
||||
const auto x = make_fvar<T,m>(ca);
|
||||
BOOST_REQUIRE(i < x);
|
||||
BOOST_REQUIRE(i*x == i*ca);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cast_double)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, cast_double_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, cast_double_test());
|
||||
}
|
||||
|
||||
struct int_double_casting_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr float ca = 3.0;
|
||||
const auto x0 = make_fvar<T,0>(ca);
|
||||
BOOST_REQUIRE(static_cast<T>(x0) == ca);
|
||||
const auto x1 = make_fvar<T,1>(ca);
|
||||
BOOST_REQUIRE(static_cast<T>(x1) == ca);
|
||||
const auto x2 = make_fvar<T,2>(ca);
|
||||
BOOST_REQUIRE(static_cast<T>(x2) == ca);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(int_double_casting)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, int_double_casting_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, int_double_casting_test());
|
||||
}
|
||||
|
||||
struct scalar_addition_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr float ca = 3.0;
|
||||
constexpr float cb = 4.0;
|
||||
const auto sum0 = autodiff_fvar<T,0>(ca) + autodiff_fvar<T,0>(cb);
|
||||
BOOST_REQUIRE(ca+cb == static_cast<T>(sum0));
|
||||
const auto sum1 = autodiff_fvar<T,0>(ca) + cb;
|
||||
BOOST_REQUIRE(ca+cb == static_cast<T>(sum1));
|
||||
const auto sum2 = ca + autodiff_fvar<T,0>(cb);
|
||||
BOOST_REQUIRE(ca+cb == static_cast<T>(sum2));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(scalar_addition)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, scalar_addition_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, scalar_addition_test());
|
||||
}
|
||||
|
||||
struct power8_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int n = 8;
|
||||
constexpr float ca = 3.0;
|
||||
auto x = make_fvar<T,n>(ca);
|
||||
// Test operator*=()
|
||||
x *= x;
|
||||
x *= x;
|
||||
x *= x;
|
||||
const T power_factorial = boost::math::factorial<T>(n);
|
||||
for (int i=0 ; i<=n ; ++i)
|
||||
BOOST_CHECK(static_cast<T>(x.derivative(i)) == static_cast<T>(power_factorial/boost::math::factorial<T>(n-i)*std::pow(ca,n-i)));
|
||||
x = make_fvar<T,n>(ca);
|
||||
// Test operator*()
|
||||
x = x*x*x*x * x*x*x*x;
|
||||
for (int i=0 ; i<=n ; ++i)
|
||||
BOOST_REQUIRE(x.derivative(i) == power_factorial/boost::math::factorial<T>(n-i)*std::pow(ca,n-i));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(power8)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, power8_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, power8_test());
|
||||
}
|
||||
|
||||
struct dim1_multiplication_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 2;
|
||||
constexpr int n = 3;
|
||||
constexpr float cy = 4.0;
|
||||
auto y0 = make_fvar<T,m>(cy);
|
||||
auto y = make_fvar<T,n>(cy);
|
||||
y *= y0;
|
||||
BOOST_REQUIRE(y.derivative(0) == cy*cy);
|
||||
BOOST_REQUIRE(y.derivative(1) == 2*cy);
|
||||
BOOST_REQUIRE(y.derivative(2) == 2.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
y = y * cy;
|
||||
BOOST_REQUIRE(y.derivative(0) == cy*cy*cy);
|
||||
BOOST_REQUIRE(y.derivative(1) == 2*cy*cy);
|
||||
BOOST_REQUIRE(y.derivative(2) == 2.0*cy);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(dim1_multiplication)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, dim1_multiplication_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, dim1_multiplication_test());
|
||||
}
|
||||
|
||||
struct dim1and2_multiplication_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 2;
|
||||
constexpr int n = 3;
|
||||
constexpr float cx = 3.0;
|
||||
constexpr float cy = 4.0;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = make_fvar<T,m,n>(cy);
|
||||
y *= x;
|
||||
BOOST_REQUIRE(y.derivative(0,0) == cx*cy);
|
||||
BOOST_REQUIRE(y.derivative(0,1) == cx);
|
||||
BOOST_REQUIRE(y.derivative(1,0) == cy);
|
||||
BOOST_REQUIRE(y.derivative(1,1) == 1.0);
|
||||
for (int i=1 ; i<m ; ++i)
|
||||
for (int j=1 ; j<n ; ++j)
|
||||
if (i==1 && j==1)
|
||||
BOOST_REQUIRE(y.derivative(i,j) == 1.0);
|
||||
else
|
||||
BOOST_REQUIRE(y.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(dim1and2_multiplication)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, dim1and2_multiplication_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, dim1and2_multiplication_test());
|
||||
}
|
||||
|
||||
struct dim2_addition_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 2;
|
||||
constexpr int n = 3;
|
||||
constexpr float cx = 3.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
BOOST_REQUIRE(x.derivative(0) == cx);
|
||||
BOOST_REQUIRE(x.derivative(1) == 1.0);
|
||||
BOOST_REQUIRE(x.derivative(2) == 0.0);
|
||||
constexpr float cy = 4.0;
|
||||
const auto y = make_fvar<T,m,n>(cy);
|
||||
BOOST_REQUIRE(static_cast<T>(y.derivative(0)) == cy);
|
||||
BOOST_REQUIRE(static_cast<T>(y.derivative(1)) == 0.0); // partial of y w.r.t. x.
|
||||
|
||||
BOOST_REQUIRE(y.derivative(0,0) == cy);
|
||||
BOOST_REQUIRE(y.derivative(0,1) == 1.0);
|
||||
BOOST_REQUIRE(y.derivative(1,0) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(1,1) == 0.0);
|
||||
const auto z = x + y;
|
||||
BOOST_REQUIRE(z.derivative(0,0) == cx + cy);
|
||||
BOOST_REQUIRE(z.derivative(0,1) == 1.0);
|
||||
BOOST_REQUIRE(z.derivative(1,0) == 1.0);
|
||||
BOOST_REQUIRE(z.derivative(1,1) == 0.0);
|
||||
// The following 4 are unnecessarily more expensive than the previous 4.
|
||||
BOOST_REQUIRE(z.derivative(0).derivative(0) == cx + cy);
|
||||
BOOST_REQUIRE(z.derivative(0).derivative(1) == 1.0);
|
||||
BOOST_REQUIRE(z.derivative(1).derivative(0) == 1.0);
|
||||
BOOST_REQUIRE(z.derivative(1).derivative(1) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(dim2_addition)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, dim2_addition_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, dim2_addition_test());
|
||||
}
|
||||
|
||||
struct dim2_multiplication_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 6.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
constexpr float cy = 5.0;
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
const auto z = x*x * y*y*y;
|
||||
BOOST_REQUIRE(z.derivative(0,0) == cx*cx * cy*cy*cy); // x^2 * y^3
|
||||
BOOST_REQUIRE(z.derivative(0,1) == cx*cx * 3*cy*cy); // x^2 * 3y^2
|
||||
BOOST_REQUIRE(z.derivative(0,2) == cx*cx * 6*cy); // x^2 * 6y
|
||||
BOOST_REQUIRE(z.derivative(0,3) == cx*cx * 6); // x^2 * 6
|
||||
BOOST_REQUIRE(z.derivative(0,4) == 0.0); // x^2 * 0
|
||||
BOOST_REQUIRE(z.derivative(1,0) == 2*cx * cy*cy*cy); // 2x * y^3
|
||||
BOOST_REQUIRE(z.derivative(1,1) == 2*cx * 3*cy*cy); // 2x * 3y^2
|
||||
BOOST_REQUIRE(z.derivative(1,2) == 2*cx * 6*cy); // 2x * 6y
|
||||
BOOST_REQUIRE(z.derivative(1,3) == 2*cx * 6); // 2x * 6
|
||||
BOOST_REQUIRE(z.derivative(1,4) == 0.0); // 2x * 0
|
||||
BOOST_REQUIRE(z.derivative(2,0) == 2 * cy*cy*cy); // 2 * y^3
|
||||
BOOST_REQUIRE(z.derivative(2,1) == 2 * 3*cy*cy); // 2 * 3y^2
|
||||
BOOST_REQUIRE(z.derivative(2,2) == 2 * 6*cy); // 2 * 6y
|
||||
BOOST_REQUIRE(z.derivative(2,3) == 2 * 6); // 2 * 6
|
||||
BOOST_REQUIRE(z.derivative(2,4) == 0.0); // 2 * 0
|
||||
BOOST_REQUIRE(z.derivative(3,0) == 0.0); // 0 * y^3
|
||||
BOOST_REQUIRE(z.derivative(3,1) == 0.0); // 0 * 3y^2
|
||||
BOOST_REQUIRE(z.derivative(3,2) == 0.0); // 0 * 6y
|
||||
BOOST_REQUIRE(z.derivative(3,3) == 0.0); // 0 * 6
|
||||
BOOST_REQUIRE(z.derivative(3,4) == 0.0); // 0 * 0
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(dim2_multiplication)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, dim2_multiplication_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, dim2_multiplication_test());
|
||||
}
|
||||
|
||||
struct dim2_multiplication_and_subtraction_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 6.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
constexpr float cy = 5.0;
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
const auto z = x*x - y*y;
|
||||
BOOST_REQUIRE(z.derivative(0,0) == cx*cx - cy*cy);
|
||||
BOOST_REQUIRE(z.derivative(0,1) == -2*cy);
|
||||
BOOST_REQUIRE(z.derivative(0,2) == -2.0);
|
||||
BOOST_REQUIRE(z.derivative(0,3) == 0.0);
|
||||
BOOST_REQUIRE(z.derivative(0,4) == 0.0);
|
||||
BOOST_REQUIRE(z.derivative(1,0) == 2*cx);
|
||||
BOOST_REQUIRE(z.derivative(2,0) == 2.0);
|
||||
for (int i=1 ; i<=m ; ++i)
|
||||
for (int j=1 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(dim2_multiplication_and_subtraction)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, dim2_multiplication_and_subtraction_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, dim2_multiplication_and_subtraction_test());
|
||||
}
|
||||
|
||||
struct inverse_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr float cx = 4.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto xinv = x.inverse();
|
||||
BOOST_REQUIRE(xinv.derivative(0) == 1/cx);
|
||||
BOOST_REQUIRE(xinv.derivative(1) == -1/std::pow(cx,2));
|
||||
BOOST_REQUIRE(xinv.derivative(2) == 2/std::pow(cx,3));
|
||||
BOOST_REQUIRE(xinv.derivative(3) == -6/std::pow(cx,4));
|
||||
const auto zero = make_fvar<T,m>(0);
|
||||
const auto inf = zero.inverse();
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
BOOST_REQUIRE(inf.derivative(i) == (i&1?-1:1)*std::numeric_limits<T>::infinity());
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(inverse)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, inverse_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, inverse_test());
|
||||
}
|
||||
|
||||
struct division_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 16.0;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
constexpr float cy = 4.0;
|
||||
auto y = make_fvar<T,1,n>(cy);
|
||||
auto z = x*x / (y*y);
|
||||
BOOST_REQUIRE(z.derivative(0,0) == cx*cx / (cy*cy)); // x^2 * y^-2
|
||||
BOOST_REQUIRE(z.derivative(0,1) == cx*cx * (-2)*std::pow(cy,-3));
|
||||
BOOST_REQUIRE(z.derivative(0,2) == cx*cx * (6)*std::pow(cy,-4));
|
||||
BOOST_REQUIRE(z.derivative(0,3) == cx*cx * (-24)*std::pow(cy,-5));
|
||||
BOOST_REQUIRE(z.derivative(0,4) == cx*cx * (120)*std::pow(cy,-6));
|
||||
BOOST_REQUIRE(z.derivative(1,0) == 2*cx / (cy*cy));
|
||||
BOOST_REQUIRE(z.derivative(1,1) == 2*cx * (-2)*std::pow(cy,-3));
|
||||
BOOST_REQUIRE(z.derivative(1,2) == 2*cx * (6)*std::pow(cy,-4));
|
||||
BOOST_REQUIRE(z.derivative(1,3) == 2*cx * (-24)*std::pow(cy,-5));
|
||||
BOOST_REQUIRE(z.derivative(1,4) == 2*cx * (120)*std::pow(cy,-6));
|
||||
BOOST_REQUIRE(z.derivative(2,0) == 2 / (cy*cy));
|
||||
BOOST_REQUIRE(z.derivative(2,1) == 2 * (-2)*std::pow(cy,-3));
|
||||
BOOST_REQUIRE(z.derivative(2,2) == 2 * (6)*std::pow(cy,-4));
|
||||
BOOST_REQUIRE(z.derivative(2,3) == 2 * (-24)*std::pow(cy,-5));
|
||||
BOOST_REQUIRE(z.derivative(2,4) == 2 * (120)*std::pow(cy,-6));
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z.derivative(3,j) == 0.0);
|
||||
|
||||
auto x1 = make_fvar<T,m>(cx);
|
||||
auto z1 = x1/cy;
|
||||
BOOST_REQUIRE(z1.derivative(0) == cx/cy);
|
||||
BOOST_REQUIRE(z1.derivative(1) == 1/cy);
|
||||
BOOST_REQUIRE(z1.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(z1.derivative(3) == 0.0);
|
||||
auto y2 = make_fvar<T,m,n>(cy);
|
||||
auto z2 = cx/y2;
|
||||
BOOST_REQUIRE(z2.derivative(0,0) == cx/cy);
|
||||
BOOST_REQUIRE(z2.derivative(0,1) == -cx/std::pow(cy,2));
|
||||
BOOST_REQUIRE(z2.derivative(0,2) == 2*cx/std::pow(cy,3));
|
||||
BOOST_REQUIRE(z2.derivative(0,3) == -6*cx/std::pow(cy,4));
|
||||
BOOST_REQUIRE(z2.derivative(0,4) == 24*cx/std::pow(cy,5));
|
||||
for (int i=1 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z2.derivative(i,j) == 0.0);
|
||||
|
||||
const auto z3 = y / x;
|
||||
BOOST_REQUIRE(z3.derivative(0,0) == cy / cx);
|
||||
BOOST_REQUIRE(z3.derivative(0,1) == 1 / cx);
|
||||
BOOST_REQUIRE(z3.derivative(1,0) == -cy / std::pow(cx,2));
|
||||
BOOST_REQUIRE(z3.derivative(1,1) == -1 / std::pow(cx,2));
|
||||
BOOST_REQUIRE(z3.derivative(2,0) == 2*cy / std::pow(cx,3));
|
||||
BOOST_REQUIRE(z3.derivative(2,1) == 2 / std::pow(cx,3));
|
||||
BOOST_REQUIRE(z3.derivative(3,0) == -6*cy / std::pow(cx,4));
|
||||
BOOST_REQUIRE(z3.derivative(3,1) == -6 / std::pow(cx,4));
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
for (int j=2 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z3.derivative(i,j) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(division)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, division_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, division_test());
|
||||
}
|
||||
|
||||
struct equality_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
constexpr float cy = 10.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
BOOST_REQUIRE((x == y));
|
||||
BOOST_REQUIRE((x == cy));
|
||||
BOOST_REQUIRE((cx == y));
|
||||
BOOST_REQUIRE((cy == x));
|
||||
BOOST_REQUIRE((y == cx));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(equality)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, equality_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, equality_test());
|
||||
}
|
||||
|
||||
struct inequality_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
constexpr float cy = 11.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
BOOST_REQUIRE((x != y));
|
||||
BOOST_REQUIRE((x != cy));
|
||||
BOOST_REQUIRE((cx != y));
|
||||
BOOST_REQUIRE((cy != x));
|
||||
BOOST_REQUIRE((y != cx));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(inequality)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, inequality_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, inequality_test());
|
||||
}
|
||||
|
||||
struct less_than_or_equal_to_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 10.0;
|
||||
constexpr float cy = 11.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
BOOST_REQUIRE((x <= y));
|
||||
BOOST_REQUIRE((x <= y-1));
|
||||
BOOST_REQUIRE((x < y));
|
||||
BOOST_REQUIRE((x <= cy));
|
||||
BOOST_REQUIRE((x <= cy-1));
|
||||
BOOST_REQUIRE((x < cy));
|
||||
BOOST_REQUIRE((cx <= y));
|
||||
BOOST_REQUIRE((cx <= y-1));
|
||||
BOOST_REQUIRE((cx < y));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(less_than_or_equal_to)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, less_than_or_equal_to_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, less_than_or_equal_to_test());
|
||||
}
|
||||
|
||||
struct greater_than_or_equal_to_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr int n = 4;
|
||||
constexpr float cx = 11.0;
|
||||
constexpr float cy = 10.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,0,n>(cy);
|
||||
BOOST_REQUIRE((x >= y));
|
||||
BOOST_REQUIRE((x >= y+1));
|
||||
BOOST_REQUIRE((x > y));
|
||||
BOOST_REQUIRE((x >= cy));
|
||||
BOOST_REQUIRE((x >= cy+1));
|
||||
BOOST_REQUIRE((x > cy));
|
||||
BOOST_REQUIRE((cx >= y));
|
||||
BOOST_REQUIRE((cx >= y+1));
|
||||
BOOST_REQUIRE((cx > y));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(greater_than_or_equal_to)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, greater_than_or_equal_to_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, greater_than_or_equal_to_test());
|
||||
}
|
||||
|
||||
struct abs_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr float cx = 11.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto a = abs(x);
|
||||
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
|
||||
BOOST_REQUIRE(a.derivative(1) == 1.0);
|
||||
BOOST_REQUIRE(a.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(a.derivative(3) == 0.0);
|
||||
a = abs(-x);
|
||||
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
|
||||
BOOST_REQUIRE(a.derivative(1) == 1.0); // abs(-x) = abs(x)
|
||||
BOOST_REQUIRE(a.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(a.derivative(3) == 0.0);
|
||||
const auto xneg = make_fvar<T,m>(-cx);
|
||||
a = abs(xneg);
|
||||
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
|
||||
BOOST_REQUIRE(a.derivative(1) == -1.0);
|
||||
BOOST_REQUIRE(a.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(a.derivative(3) == 0.0);
|
||||
const auto zero = make_fvar<T,m>(0);
|
||||
a = abs(zero);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
BOOST_REQUIRE(a.derivative(i) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(abs_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, abs_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, abs_test_test());
|
||||
}
|
||||
|
||||
struct ceil_and_floor_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
float tests[] { -1.5, 0.0, 1.5 };
|
||||
for (unsigned t=0 ; t<sizeof(tests)/sizeof(*tests) ; ++t)
|
||||
{
|
||||
const auto x = make_fvar<T,m>(tests[t]);
|
||||
auto c = ceil(x);
|
||||
auto f = floor(x);
|
||||
BOOST_REQUIRE(c.derivative(0) == std::ceil(tests[t]));
|
||||
BOOST_REQUIRE(f.derivative(0) == std::floor(tests[t]));
|
||||
for (int i=1 ; i<=m ; ++i)
|
||||
{
|
||||
BOOST_REQUIRE(c.derivative(i) == 0.0);
|
||||
BOOST_REQUIRE(f.derivative(i) == 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ceil_and_floor)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, ceil_and_floor_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, ceil_and_floor_test());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
462
test/test_autodiff_2.cpp
Normal file
@@ -0,0 +1,462 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include "test_autodiff.hpp"
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(test_autodiff_2)
|
||||
|
||||
struct one_over_one_plus_x_squared_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 4;
|
||||
constexpr float cx = 1.0;
|
||||
auto f = make_fvar<T,m>(cx);
|
||||
//f = 1 / ((f *= f) += 1);
|
||||
f = ((f *= f) += 1).inverse();
|
||||
BOOST_REQUIRE(f.derivative(0) == 0.5);
|
||||
BOOST_REQUIRE(f.derivative(1) == -0.5);
|
||||
BOOST_REQUIRE(f.derivative(2) == 0.5);
|
||||
BOOST_REQUIRE(f.derivative(3) == 0.0);
|
||||
BOOST_REQUIRE(f.derivative(4) == -3.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(one_over_one_plus_x_squared)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, one_over_one_plus_x_squared_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, one_over_one_plus_x_squared_test());
|
||||
}
|
||||
|
||||
struct exp_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::exp;
|
||||
constexpr int m = 4;
|
||||
const T cx = 2.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto y = exp(x);
|
||||
for (int i=0 ; i<=m ; ++i)
|
||||
{
|
||||
//std::cout.precision(100);
|
||||
//std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << ", std::exp(cx) = " << std::exp(cx) << std::endl;
|
||||
BOOST_REQUIRE(y.derivative(i) == exp(cx));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(exp_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, exp_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, exp_test_test());
|
||||
}
|
||||
|
||||
struct pow_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 201*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::exp;
|
||||
using std::log;
|
||||
using std::pow;
|
||||
constexpr int m = 5;
|
||||
constexpr int n = 4;
|
||||
const T cx = 2.0;
|
||||
const T cy = 3.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,m,n>(cy);
|
||||
auto z0 = pow(x,cy);
|
||||
BOOST_REQUIRE(z0.derivative(0) == pow(cx,cy));
|
||||
BOOST_REQUIRE(z0.derivative(1) == cy*pow(cx,cy-1));
|
||||
BOOST_REQUIRE(z0.derivative(2) == cy*(cy-1)*pow(cx,cy-2));
|
||||
BOOST_REQUIRE(z0.derivative(3) == cy*(cy-1)*(cy-2)*pow(cx,cy-3));
|
||||
BOOST_REQUIRE(z0.derivative(4) == 0.0);
|
||||
BOOST_REQUIRE(z0.derivative(5) == 0.0);
|
||||
auto z1 = pow(cx,y);
|
||||
BOOST_REQUIRE_CLOSE(z1.derivative(0,0), pow(cx,cy), eps);
|
||||
for (int j=1 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE_CLOSE(z1.derivative(0,j), pow(log(cx),j)*exp(cy*log(cx)), eps);
|
||||
for (int i=1 ; i<=m ; ++i)
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z1.derivative(i,j) == 0.0);
|
||||
auto z2 = pow(x,y);
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(0,j), pow(cx,cy)*pow(log(cx),j), eps);
|
||||
for (int j=0 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(1,j), pow(cx,cy-1)*pow(log(cx),j-1)*(cy*log(cx)+j), eps);
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(2,0), pow(cx,cy-2)*cy*(cy-1), eps);
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(2,1), pow(cx,cy-2)*(cy*(cy-1)*log(cx)+2*cy-1), eps);
|
||||
for (int j=2 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(2,j), pow(cx,cy-2)*pow(log(cx),j-2)*(j*(2*cy-1)*log(cx)+(j-1)*j+(cy-1)*cy*pow(log(cx),2)), eps);
|
||||
BOOST_REQUIRE_CLOSE(z2.derivative(2,4), pow(cx,cy-2)*pow(log(cx),2)*(4*(2*cy-1)*log(cx)+(4-1)*4+(cy-1)*cy*pow(log(cx),2)), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(pow_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, pow_test_test());
|
||||
}
|
||||
|
||||
struct sqrt_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::sqrt;
|
||||
using std::pow;
|
||||
constexpr int m = 5;
|
||||
constexpr float cx = 4.0;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = sqrt(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == sqrt(cx));
|
||||
BOOST_REQUIRE(y.derivative(1) == 0.5*pow(cx,-0.5));
|
||||
BOOST_REQUIRE(y.derivative(2) == -0.5*0.5*pow(cx,-1.5));
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.5*0.5*1.5*pow(cx,-2.5));
|
||||
BOOST_REQUIRE(y.derivative(4) == -0.5*0.5*1.5*2.5*pow(cx,-3.5));
|
||||
BOOST_REQUIRE(y.derivative(5) == 0.5*0.5*1.5*2.5*3.5*pow(cx,-4.5));
|
||||
x = make_fvar<T,m>(0);
|
||||
y = sqrt(x);
|
||||
//std::cout << "sqrt(0) = " << y << std::endl; // (0,inf,-inf,inf,-inf,inf)
|
||||
BOOST_REQUIRE(y.derivative(0) == 0.0);
|
||||
for (int i=1; i<=m ; ++i)
|
||||
BOOST_REQUIRE(y.derivative(i) == (i&1?1:-1)*std::numeric_limits<T>::infinity());
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(sqrt_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, sqrt_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, sqrt_test_test());
|
||||
}
|
||||
|
||||
struct log_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::log;
|
||||
using std::pow;
|
||||
constexpr int m = 5;
|
||||
const T cx = 2.0;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = log(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == log(cx));
|
||||
BOOST_REQUIRE(y.derivative(1) == 1/cx);
|
||||
BOOST_REQUIRE(y.derivative(2) == -1/pow(cx,2));
|
||||
BOOST_REQUIRE(y.derivative(3) == 2/pow(cx,3));
|
||||
BOOST_REQUIRE(y.derivative(4) == -6/pow(cx,4));
|
||||
BOOST_REQUIRE(y.derivative(5) == 24/pow(cx,5));
|
||||
x = make_fvar<T,m>(0);
|
||||
y = log(x);
|
||||
//std::cout << "log(0) = " << y << std::endl; // log(0) = depth(1)(-inf,inf,-inf,inf,-inf,inf)
|
||||
for (int i=0; i<=m ; ++i)
|
||||
BOOST_REQUIRE(y.derivative(i) == (i&1?1:-1)*std::numeric_limits<T>::infinity());
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(log_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, log_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, log_test_test());
|
||||
}
|
||||
|
||||
struct ylogx_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::log;
|
||||
using std::pow;
|
||||
const T eps = 100*std::numeric_limits<T>::epsilon(); // percent
|
||||
constexpr int m = 5;
|
||||
constexpr int n = 4;
|
||||
const T cx = 2.0;
|
||||
const T cy = 3.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
const auto y = make_fvar<T,m,n>(cy);
|
||||
auto z = y*log(x);
|
||||
BOOST_REQUIRE(z.derivative(0,0) == cy*log(cx));
|
||||
BOOST_REQUIRE(z.derivative(0,1) == log(cx));
|
||||
BOOST_REQUIRE(z.derivative(0,2) == 0.0);
|
||||
BOOST_REQUIRE(z.derivative(0,3) == 0.0);
|
||||
BOOST_REQUIRE(z.derivative(0,4) == 0.0);
|
||||
for (size_t i=1 ; i<=m ; ++i)
|
||||
BOOST_REQUIRE_CLOSE(z.derivative(i,0), pow(-1,i-1)*boost::math::factorial<T>(i-1)*cy/pow(cx,i), eps);
|
||||
for (size_t i=1 ; i<=m ; ++i)
|
||||
BOOST_REQUIRE_CLOSE(z.derivative(i,1), pow(-1,i-1)*boost::math::factorial<T>(i-1)/pow(cx,i), eps);
|
||||
for (size_t i=1 ; i<=m ; ++i)
|
||||
for (size_t j=2 ; j<=n ; ++j)
|
||||
BOOST_REQUIRE(z.derivative(i,j) == 0.0);
|
||||
auto z1 = exp(z);
|
||||
// RHS is confirmed by
|
||||
// https://www.wolframalpha.com/input/?i=D%5Bx%5Ey,%7Bx,2%7D,%7By,4%7D%5D+%2F.+%7Bx-%3E2.0,+y-%3E3.0%7D
|
||||
BOOST_REQUIRE_CLOSE(z1.derivative(2,4),
|
||||
pow(cx,cy-2)*pow(log(cx),2)*(4*(2*cy-1)*log(cx)+(4-1)*4+(cy-1)*cy*pow(log(cx),2)), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ylogx)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, ylogx_test());
|
||||
}
|
||||
|
||||
struct frexp_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::frexp;
|
||||
using std::exp2;
|
||||
constexpr int m = 3;
|
||||
const T cx = 3.5;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
int exp, testexp;
|
||||
auto y = frexp(x,&exp);
|
||||
BOOST_REQUIRE(y.derivative(0) == frexp(cx,&testexp));
|
||||
BOOST_REQUIRE(exp == testexp);
|
||||
BOOST_REQUIRE(y.derivative(1) == exp2(-exp));
|
||||
BOOST_REQUIRE(y.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(frexp_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, frexp_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, frexp_test_test());
|
||||
}
|
||||
|
||||
struct ldexp_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::ldexp;
|
||||
using std::exp2;
|
||||
constexpr int m = 3;
|
||||
const T cx = 3.5;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
constexpr int exp = 3;
|
||||
auto y = ldexp(x,exp);
|
||||
BOOST_REQUIRE(y.derivative(0) == ldexp(cx,exp));
|
||||
BOOST_REQUIRE(y.derivative(1) == exp2(exp));
|
||||
BOOST_REQUIRE(y.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ldexp_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, ldexp_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, ldexp_test_test());
|
||||
}
|
||||
|
||||
struct cos_and_sin_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::cos;
|
||||
using std::sin;
|
||||
const T eps = 200*std::numeric_limits<T>::epsilon(); // percent
|
||||
constexpr int m = 5;
|
||||
const T cx = boost::math::constants::third_pi<T>();
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto cos5 = cos(x);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(0), cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(1), -sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(2), -cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(3), sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(4), cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(cos5.derivative(5), -sin(cx), eps);
|
||||
auto sin5 = sin(x);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(0), sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(1), cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(2), -sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(3), -cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(4), sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(sin5.derivative(5), cos(cx), eps);
|
||||
// Test Order = 0 for codecov
|
||||
auto cos0 = cos(make_fvar<T,0>(cx));
|
||||
BOOST_REQUIRE_CLOSE(cos0.derivative(0), cos(cx), eps);
|
||||
auto sin0 = sin(make_fvar<T,0>(cx));
|
||||
BOOST_REQUIRE_CLOSE(sin0.derivative(0), sin(cx), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cos_and_sin)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, cos_and_sin_test());
|
||||
}
|
||||
|
||||
struct acos_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::acos;
|
||||
using std::pow;
|
||||
using std::sqrt;
|
||||
constexpr int m = 5;
|
||||
const T cx = 0.5;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = acos(x);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), acos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), -1/sqrt(1-cx*cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), -cx/pow(1-cx*cx,1.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), -(2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), -3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), -(24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(acos_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, acos_test_test());
|
||||
}
|
||||
|
||||
struct acosh_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::acosh;
|
||||
constexpr int m = 5;
|
||||
const T cx = 2;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = acosh(x);
|
||||
//BOOST_REQUIRE(y.derivative(0) == acosh(cx)); // FAILS! acosh(2) is overloaded for integral types
|
||||
BOOST_REQUIRE(y.derivative(0) == acosh(static_cast<T>(x)));
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/boost::math::constants::root_three<T>(), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), -2/(3*boost::math::constants::root_three<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 1/boost::math::constants::root_three<T>(), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), -22/(9*boost::math::constants::root_three<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), 227/(27*boost::math::constants::root_three<T>()), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(acosh_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, acosh_test_test());
|
||||
}
|
||||
|
||||
struct asin_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::asin;
|
||||
using std::pow;
|
||||
using std::sqrt;
|
||||
constexpr int m = 5;
|
||||
const T cx = 0.5;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = asin(x);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), asin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/sqrt(1-cx*cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), cx/pow(1-cx*cx,1.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), (2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), 3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), (24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(asin_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, asin_test_test());
|
||||
}
|
||||
|
||||
struct asin_infinity_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 100*std::numeric_limits<T>::epsilon(); // percent
|
||||
constexpr int m = 5;
|
||||
auto x = make_fvar<T,m>(1);
|
||||
auto y = asin(x);
|
||||
//std::cout << "asin(1) = " << y << std::endl; // depth(1)(1.5707963267949,inf,inf,-nan,-nan,-nan)
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), boost::math::constants::half_pi<T>(), eps); // MacOS is not exact
|
||||
BOOST_REQUIRE(y.derivative(1) == std::numeric_limits<T>::infinity());
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(asin_infinity)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, asin_infinity_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, asin_infinity_test());
|
||||
}
|
||||
|
||||
struct asin_derivative_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::pow;
|
||||
using std::sqrt;
|
||||
constexpr int m = 4;
|
||||
const T cx = 0.5;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = 1-x*x;
|
||||
BOOST_REQUIRE(y.derivative(0) == 1-cx*cx);
|
||||
BOOST_REQUIRE(y.derivative(1) == -2*cx);
|
||||
BOOST_REQUIRE(y.derivative(2) == -2);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0);
|
||||
BOOST_REQUIRE(y.derivative(4) == 0);
|
||||
y = sqrt(y);
|
||||
BOOST_REQUIRE(y.derivative(0) == sqrt(1-cx*cx));
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), -cx/sqrt(1-cx*cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), -1/pow(1-cx*cx,1.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), -3*cx/pow(1-cx*cx,2.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), -(12*cx*cx+3)/pow(1-cx*cx,3.5), eps);
|
||||
y = y.inverse(); // asin'(x) = 1 / sqrt(1-x*x).
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), 1/sqrt(1-cx*cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), cx/pow(1-cx*cx,1.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), (2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), (24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(asin_derivative)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, asin_derivative_test());
|
||||
}
|
||||
|
||||
struct asinh_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::asinh;
|
||||
constexpr int m = 5;
|
||||
const T cx = 1;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = asinh(x);
|
||||
//BOOST_REQUIRE(y.derivative(0) == asinh(cx)); // Fails for gcc-mingw - similar to acosh()?
|
||||
BOOST_REQUIRE(y.derivative(0) == asinh(static_cast<T>(x)));
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/boost::math::constants::root_two<T>(), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), -1/(2*boost::math::constants::root_two<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 1/(4*boost::math::constants::root_two<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), 3/(8*boost::math::constants::root_two<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), -39/(16*boost::math::constants::root_two<T>()), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(asinh_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, asinh_test_test());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
254
test/test_autodiff_3.cpp
Normal file
@@ -0,0 +1,254 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include "test_autodiff.hpp"
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(test_autodiff_3)
|
||||
|
||||
struct atanh_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::atanh;
|
||||
constexpr int m = 5;
|
||||
const T cx = 0.5;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = atanh(x);
|
||||
// BOOST_REQUIRE(y.derivative(0) == atanh(cx)); // fails due to overload
|
||||
BOOST_REQUIRE(y.derivative(0) == atanh(static_cast<T>(x)));
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), static_cast<T>(4)/3, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), static_cast<T>(16)/9, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), static_cast<T>(224)/27, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), static_cast<T>(1280)/27, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), static_cast<T>(31232)/81, eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(atanh_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, atanh_test_test());
|
||||
}
|
||||
|
||||
struct atan_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 5;
|
||||
constexpr float cx = 1.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto y = atan(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == boost::math::constants::pi<T>()/4);
|
||||
BOOST_REQUIRE(y.derivative(1) == 0.5);
|
||||
BOOST_REQUIRE(y.derivative(2) == -0.5);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.5);
|
||||
BOOST_REQUIRE(y.derivative(4) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(5) == -3.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(atan_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, atan_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, atan_test_test());
|
||||
}
|
||||
|
||||
struct erf_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::erf;
|
||||
using namespace boost;
|
||||
constexpr int m = 5;
|
||||
constexpr float cx = 1.0;
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto y = erf(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == erf(static_cast<T>(x)));
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), 2/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), -4/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 4/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), 8/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), -40/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(erf_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, erf_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, erf_test_test());
|
||||
}
|
||||
|
||||
struct sinc_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 20000*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::sin;
|
||||
using std::cos;
|
||||
constexpr int m = 5;
|
||||
const T cx = 1;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = sinc(x);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), cos(cx)-sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), sin(cx)-2*cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 5*cos(cx)-3*sin(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), 13*sin(cx)-20*cos(cx), eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), 101*cos(cx)-65*sin(cx), eps);
|
||||
// Test at x = 0
|
||||
auto y2 = sinc(make_fvar<T,10>(0));
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(0), 1, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(1), 0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(2), -cx/3, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(3), 0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(4), cx/5, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(5), 0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(6), -cx/7, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(7), 0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(8), cx/9, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(9), 0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y2.derivative(10), -cx/11, eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(sinc_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, sinc_test_test());
|
||||
}
|
||||
|
||||
struct sinh_and_cosh_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::sinh;
|
||||
using std::cosh;
|
||||
constexpr int m = 5;
|
||||
const T cx = 1;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto s = sinh(x);
|
||||
auto c = cosh(x);
|
||||
BOOST_REQUIRE_CLOSE(s.derivative(0), sinh(static_cast<T>(x)), eps);
|
||||
BOOST_REQUIRE_CLOSE(c.derivative(0), cosh(static_cast<T>(x)), eps);
|
||||
for (size_t i=0 ; i<=m ; ++i)
|
||||
{
|
||||
BOOST_REQUIRE_CLOSE(s.derivative(i), static_cast<T>(i&1?c:s), eps);
|
||||
BOOST_REQUIRE_CLOSE(c.derivative(i), static_cast<T>(i&1?s:c), eps);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(sinh_and_cosh)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, sinh_and_cosh_test());
|
||||
}
|
||||
|
||||
struct tan_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 800*std::numeric_limits<T>::epsilon(); // percent
|
||||
using std::sqrt;
|
||||
constexpr int m = 5;
|
||||
const T cx = boost::math::constants::third_pi<T>();
|
||||
const T root_three = boost::math::constants::root_three<T>();
|
||||
const auto x = make_fvar<T,m>(cx);
|
||||
auto y = tan(x);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(0), root_three, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(1), 4.0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(2), 8*root_three, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(3), 80.0, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(4), 352*root_three, eps);
|
||||
BOOST_REQUIRE_CLOSE(y.derivative(5), 5824.0, eps);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(tan_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, tan_test_test());
|
||||
}
|
||||
|
||||
struct fmod_test_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
constexpr int m = 3;
|
||||
constexpr float cx = 3.25;
|
||||
const T cy = 0.5;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = fmod(x,autodiff_fvar<T,m>(cy));
|
||||
BOOST_REQUIRE(y.derivative(0) == 0.25);
|
||||
BOOST_REQUIRE(y.derivative(1) == 1.0);
|
||||
BOOST_REQUIRE(y.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(fmod_test)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, fmod_test_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, fmod_test_test());
|
||||
}
|
||||
|
||||
struct round_and_trunc_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::round;
|
||||
using std::trunc;
|
||||
constexpr int m = 3;
|
||||
constexpr float cx = 3.25;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
auto y = round(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == round(cx));
|
||||
BOOST_REQUIRE(y.derivative(1) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
y = trunc(x);
|
||||
BOOST_REQUIRE(y.derivative(0) == trunc(cx));
|
||||
BOOST_REQUIRE(y.derivative(1) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(2) == 0.0);
|
||||
BOOST_REQUIRE(y.derivative(3) == 0.0);
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(round_and_trunc)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, round_and_trunc_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, round_and_trunc_test());
|
||||
}
|
||||
|
||||
struct iround_and_itrunc_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using namespace boost::math;
|
||||
constexpr int m = 3;
|
||||
constexpr float cx = 3.25;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
int y = iround(x);
|
||||
BOOST_REQUIRE(y == iround(cx));
|
||||
y = itrunc(x);
|
||||
BOOST_REQUIRE(y == itrunc(cx));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(iround_and_itrunc)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, iround_and_itrunc_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, iround_and_itrunc_test());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
64
test/test_autodiff_4.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
// Copyright Matthew Pulver 2018 - 2019.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// https://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include "test_autodiff.hpp"
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(test_autodiff_4)
|
||||
|
||||
struct lround_llround_truncl_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
using std::lround;
|
||||
using std::llround;
|
||||
//using std::truncl; // truncl not supported by boost::multiprecision types.
|
||||
constexpr int m = 3;
|
||||
const T cx = 3.25;
|
||||
auto x = make_fvar<T,m>(cx);
|
||||
long yl = lround(x);
|
||||
BOOST_REQUIRE(yl == lround(cx));
|
||||
long long yll = llround(x);
|
||||
BOOST_REQUIRE(yll == llround(cx));
|
||||
//long double yld = truncl(x);
|
||||
//BOOST_REQUIRE(yld == truncl(cx));
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(lround_llround_truncl)
|
||||
{
|
||||
boost::fusion::for_each(bin_float_types, lround_llround_truncl_test());
|
||||
boost::fusion::for_each(multiprecision_float_types, lround_llround_truncl_test());
|
||||
}
|
||||
|
||||
struct multiprecision_test
|
||||
{
|
||||
template<typename T>
|
||||
void operator()(const T&) const
|
||||
{
|
||||
const T eps = 4000*std::numeric_limits<T>::epsilon(); // percent
|
||||
constexpr int Nw=3;
|
||||
constexpr int Nx=2;
|
||||
constexpr int Ny=4;
|
||||
constexpr int Nz=3;
|
||||
const auto w = make_fvar<T,Nw>(11);
|
||||
const auto x = make_fvar<T,0,Nx>(12);
|
||||
const auto y = make_fvar<T,0,0,Ny>(13);
|
||||
const auto z = make_fvar<T,0,0,0,Nz>(14);
|
||||
const auto v = mixed_partials_f(w,x,y,z); // auto = autodiff_fvar<T,Nw,Nx,Ny,Nz>
|
||||
// Calculated from Mathematica symbolic differentiation.
|
||||
const T answer = boost::lexical_cast<T>("1976.3196007477977177798818752904187209081211892187"
|
||||
"5499076582535951111845769110560421820940516423255314");
|
||||
BOOST_REQUIRE_CLOSE(v.derivative(Nw,Nx,Ny,Nz), answer, eps); // Doesn't work for cpp_dec_float
|
||||
}
|
||||
};
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiprecision)
|
||||
{
|
||||
//multiprecision_test()(boost::multiprecision::cpp_bin_float_50());
|
||||
boost::fusion::for_each(bin_float_types, multiprecision_test());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||