aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2023-05-12 17:50:19 -0700
committerEric Kunze <eric.kunze@arm.com>2023-05-22 20:43:44 -0700
commit277a4f17f13ac882075e109c339cdeda03f8eedd (patch)
tree86c121c64f8cea5f8acf1947b426ec73f2ca70b9
parentb351aea93d369cfc082f2db0df6ac181d3821908 (diff)
downloadspecification-277a4f17f13ac882075e109c339cdeda03f8eedd.tar.gz
Update descriptions for activation functions.
Provide the mathematical formulas for sigmoid and tanh. Define the operation function for sigmoid and tanh for floating-point numbers. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ib949d2e8e06309e5c5292aa0192746ad0f9b1f11
-rw-r--r--chapters/activation_funcs.adoc49
-rw-r--r--chapters/introduction.adoc12
-rw-r--r--figures/sigmoid.svg120
-rw-r--r--figures/tanh.svg129
4 files changed, 300 insertions, 10 deletions
diff --git a/chapters/activation_funcs.adoc b/chapters/activation_funcs.adoc
index 3bbeb30..46fa19d 100644
--- a/chapters/activation_funcs.adoc
+++ b/chapters/activation_funcs.adoc
@@ -30,17 +30,24 @@ for_each(index in shape) {
==== SIGMOID
-Sigmoid function: output = 1 / (1 + exp(-input))
+Applies the sigmoid logistic function to each element of the input tensor.
-For quantized integer data types, the TABLE operator should be used instead with
-the following definition.
+// sigmoid(x) = \frac{1}{1 + e^{-x}}
-The sigmoid table has 513 entries each of 16-bit precision and covering the input range -16.0 to +16.0 in steps of 1/16.
+.Calculation for the sigmoid function
+image::sigmoid.svg["Sigmoid definition"]
+For quantized integer data types, the TABLE operator should be used instead.
+Each implementation may choose an appropriate TABLE given the scale and zero point of the input data.
+Eight or sixteen bit precision tables may be used based on the input tensor to the sigmoid function.
+Below we give an example table generation for 16-bit sigmoid.
+This sigmoid table has 513 entries each of 16-bit precision and covering the input range -16.0 to +16.0 in steps of 1/16.
+
+.Code for generating 16-bit sigmoid table
[source,c++]
----
int16_t sigmoid_reference(int16_t x) { // input x range is -256 to + 256 inclusive
- F64 v = (double)x / (double)16;
+ fp64_t v = (fp64_t)x / (fp64_t)16;
v = 1.0/(1.0 + exp(-v));
return round_to_nearest_int(32768.0 * v);
}
@@ -50,19 +57,34 @@ generate_lookup_table(&sigmoid_table, &sigmoid_reference);
include::{generated}/operators/SIGMOID.adoc[]
+[source,c++]
+----
+for_each(index in shape) {
+ in_out_t value1 = tensor_read<in_out_t>(input, shape, index);
+ value = sigmoid<in_out_t>(value1);
+ tensor_write<in_out_t>(output, shape, index, value);
+}
+----
+
==== TANH
Parameterized hyperbolic tangent.
+// tanh(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}}
-For quantized integer data types, the TABLE operator should be used instead with
-the following definition.
+.Calculation for the sigmoid function
+image::tanh.svg["Hyperbolic tangent definition"]
-The tanh_table has 513 entries each of 16-bit precision and covering the input range -8.0 to +8.0 in steps of 1/32. The table is specified by:
+For quantized integer data types, the TABLE operator should be used instead.
+Each implementation may choose an appropriate TABLE given the scale and zero point of the input data.
+Eight or sixteen bit precision tables may be used based on the input tensor to the sigmoid function.
+Below we give an example table generation for 16-bit hyperbolic tangent.
+This tanh_table has 513 entries each of 16-bit precision and covering the input range -8.0 to +8.0 in steps of 1/32.
+.Calculation of an example 16-bit tanh table
[source,c++]
----
int16_t tanh_reference(int16_t x) { // input x range is -256 to +256 inclusive
- F64 v = (double)x/(double)32;
+ fp64_t v = (fp64_t)x/(fp64_t)32;
v = exp(-2.0*v);
v = (1.0-v)/(1.0+v);
return round_to_nearest_int(32768.0 * v);
@@ -72,3 +94,12 @@ generate_lookup_table(&tanh_table, &tanh_reference);
----
include::{generated}/operators/TANH.adoc[]
+
+[source,c++]
+----
+for_each(index in shape) {
+ in_out_t value1 = tensor_read<in_out_t>(input, shape, index);
+ value = tanh<in_out_t>(value1);
+ tensor_write<in_out_t>(output, shape, index, value);
+}
+----
diff --git a/chapters/introduction.adoc b/chapters/introduction.adoc
index c0b0874..9cfccb7 100644
--- a/chapters/introduction.adoc
+++ b/chapters/introduction.adoc
@@ -480,7 +480,17 @@ Signed zero must be supported.
|fp32_t
| -infinity
| +infinity
-| 16-bit single-precision floating-point defined by <<Other publications>>[1]. +
+| 32-bit single-precision floating-point defined by <<Other publications>>[1]. +
+Normal values must be supported. +
+Denormal values must either be supported or flushed to zero. +
+Positive and negative infinity must be supported. +
+At least one NaN encoding must be supported. +
+Signed zero must be supported.
+
+|fp64_t
+| -infinity
+| + infinity
+| 64-bit double-precision floating-point defined by <<Other publications>>[1]. +
Normal values must be supported. +
Denormal values must either be supported or flushed to zero. +
Positive and negative infinity must be supported. +
diff --git a/figures/sigmoid.svg b/figures/sigmoid.svg
new file mode 100644
index 0000000..fdd53ba
--- /dev/null
+++ b/figures/sigmoid.svg
@@ -0,0 +1,120 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="124.770913pt" height="27.392703pt" viewBox="0 0 124.770913 27.392703" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 0.421875 -1.796875 L 1.03125 -1.796875 C 1.019531 -1.679688 1.015625 -1.578125 1.015625 -1.484375 C 1.015625 -0.765625 1.5 -0.40625 2.46875 -0.40625 C 3.4375 -0.40625 3.988281 -0.765625 4.125 -1.484375 C 4.132812 -1.546875 4.140625 -1.640625 4.140625 -1.765625 C 4.140625 -1.890625 4.070312 -2.023438 3.9375 -2.171875 C 3.8125 -2.316406 3.46875 -2.484375 2.90625 -2.671875 L 2.171875 -2.9375 C 1.671875 -3.113281 1.335938 -3.3125 1.171875 -3.53125 C 1.015625 -3.75 0.9375 -3.988281 0.9375 -4.25 C 0.9375 -4.34375 0.945312 -4.453125 0.96875 -4.578125 C 1.082031 -5.140625 1.378906 -5.582031 1.859375 -5.90625 C 2.335938 -6.238281 2.925781 -6.40625 3.625 -6.40625 C 4.3125 -6.40625 5.019531 -6.234375 5.75 -5.890625 L 5.484375 -4.53125 L 4.859375 -4.53125 C 4.878906 -4.625 4.890625 -4.707031 4.890625 -4.78125 C 4.890625 -5.070312 4.789062 -5.316406 4.59375 -5.515625 C 4.394531 -5.710938 4.066406 -5.8125 3.609375 -5.8125 C 2.691406 -5.8125 2.171875 -5.492188 2.046875 -4.859375 C 2.023438 -4.796875 2.015625 -4.703125 2.015625 -4.578125 C 2.015625 -4.460938 2.078125 -4.332031 2.203125 -4.1875 C 2.335938 -4.050781 2.648438 -3.90625 3.140625 -3.75 L 3.953125 -3.484375 C 4.503906 -3.296875 4.882812 -3.066406 5.09375 -2.796875 C 5.238281 -2.597656 5.3125 -2.398438 5.3125 -2.203125 C 5.3125 -1.390625 4.984375 -0.769531 4.328125 -0.34375 C 3.804688 0 3.148438 0.171875 2.359375 0.171875 C 1.578125 0.171875 0.835938 0 0.140625 -0.34375 Z M 0.421875 -1.796875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 1.890625 -8.15625 C 1.929688 -8.34375 2.03125 -8.5 2.1875 -8.625 C 2.34375 -8.757812 2.507812 -8.828125 2.6875 -8.828125 C 2.863281 -8.828125 3.007812 -8.757812 3.125 -8.625 C 3.195312 -8.53125 3.234375 -8.421875 3.234375 -8.296875 C 3.234375 -8.253906 3.226562 -8.207031 3.21875 -8.15625 C 3.1875 -7.976562 3.09375 -7.820312 2.9375 -7.6875 C 2.78125 -7.5625 2.609375 -7.5 2.421875 -7.5 C 2.242188 -7.5 2.101562 -7.5625 2 -7.6875 C 1.914062 -7.789062 1.875 -7.90625 1.875 -8.03125 C 1.875 -8.070312 1.878906 -8.113281 1.890625 -8.15625 Z M 1.8125 -0.625 L 2.828125 -0.625 L 2.703125 0 L 0.609375 0 L 1.6875 -5.609375 L 0.65625 -5.609375 L 0.78125 -6.234375 L 2.890625 -6.234375 Z M 1.8125 -0.625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 7.171875 -6.234375 L 5.984375 -0.140625 C 5.796875 0.796875 5.414062 1.488281 4.84375 1.9375 C 4.207031 2.425781 3.457031 2.671875 2.59375 2.671875 C 2.175781 2.671875 1.785156 2.628906 1.421875 2.546875 C 1.066406 2.472656 0.734375 2.363281 0.421875 2.21875 L 0.6875 0.921875 L 1.25 0.921875 C 1.226562 1.328125 1.332031 1.625 1.5625 1.8125 C 1.789062 2 2.148438 2.09375 2.640625 2.09375 C 3.273438 2.09375 3.769531 1.910156 4.125 1.546875 C 4.488281 1.191406 4.75 0.628906 4.90625 -0.140625 L 5.0625 -0.96875 C 4.78125 -0.582031 4.457031 -0.296875 4.09375 -0.109375 C 3.726562 0.078125 3.316406 0.171875 2.859375 0.171875 C 2.171875 0.171875 1.65625 -0.0625 1.3125 -0.53125 C 1.09375 -0.820312 0.96875 -1.171875 0.9375 -1.578125 C 0.925781 -1.816406 0.945312 -2.078125 1 -2.359375 C 1.269531 -3.734375 1.882812 -4.773438 2.84375 -5.484375 C 3.65625 -6.085938 4.539062 -6.394531 5.5 -6.40625 C 6.375 -6.40625 6.929688 -6.347656 7.171875 -6.234375 Z M 5.96875 -5.609375 C 5.96875 -5.734375 5.753906 -5.796875 5.328125 -5.796875 C 4.566406 -5.796875 3.898438 -5.503906 3.328125 -4.921875 C 2.753906 -4.328125 2.363281 -3.5 2.15625 -2.4375 C 2.09375 -2.113281 2.070312 -1.832031 2.09375 -1.59375 C 2.101562 -1.351562 2.15625 -1.148438 2.25 -0.984375 C 2.445312 -0.660156 2.796875 -0.5 3.296875 -0.5 C 3.835938 -0.5 4.289062 -0.695312 4.65625 -1.09375 C 5.019531 -1.488281 5.273438 -2.0625 5.421875 -2.8125 L 5.53125 -3.421875 Z M 5.96875 -5.609375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d="M 6.5625 -5.015625 C 6.863281 -5.472656 7.195312 -5.816406 7.5625 -6.046875 C 7.925781 -6.285156 8.328125 -6.40625 8.765625 -6.40625 C 9.410156 -6.40625 9.859375 -6.203125 10.109375 -5.796875 C 10.242188 -5.546875 10.3125 -5.222656 10.3125 -4.828125 C 10.3125 -4.578125 10.28125 -4.289062 10.21875 -3.96875 L 9.578125 -0.625 L 10.546875 -0.625 L 10.4375 0 L 8.375 0 L 9.125 -3.84375 C 9.1875 -4.144531 9.21875 -4.40625 9.21875 -4.625 C 9.21875 -4.863281 9.179688 -5.054688 9.109375 -5.203125 C 8.972656 -5.472656 8.6875 -5.609375 8.25 -5.609375 C 7.769531 -5.609375 7.367188 -5.425781 7.046875 -5.0625 C 6.722656 -4.695312 6.492188 -4.164062 6.359375 -3.46875 L 5.6875 0 L 4.609375 0 L 5.375 -3.875 C 5.425781 -4.164062 5.453125 -4.421875 5.453125 -4.640625 C 5.453125 -4.878906 5.414062 -5.066406 5.34375 -5.203125 C 5.207031 -5.472656 4.921875 -5.609375 4.484375 -5.609375 C 4.003906 -5.609375 3.601562 -5.425781 3.28125 -5.0625 C 2.957031 -4.695312 2.726562 -4.164062 2.59375 -3.46875 L 1.921875 0 L 0.84375 0 L 1.9375 -5.609375 L 0.90625 -5.609375 L 1.015625 -6.234375 L 3.125 -6.234375 L 2.921875 -5.125 C 3.191406 -5.539062 3.503906 -5.859375 3.859375 -6.078125 C 4.210938 -6.296875 4.582031 -6.40625 4.96875 -6.40625 C 5.457031 -6.40625 5.835938 -6.28125 6.109375 -6.03125 C 6.390625 -5.789062 6.539062 -5.453125 6.5625 -5.015625 Z M 6.5625 -5.015625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 3.078125 -0.40625 C 3.660156 -0.40625 4.144531 -0.632812 4.53125 -1.09375 C 4.914062 -1.550781 5.191406 -2.226562 5.359375 -3.125 C 5.441406 -3.53125 5.484375 -3.890625 5.484375 -4.203125 C 5.484375 -4.578125 5.425781 -4.890625 5.3125 -5.140625 C 5.101562 -5.585938 4.707031 -5.8125 4.125 -5.8125 C 3.550781 -5.8125 3.070312 -5.582031 2.6875 -5.125 C 2.300781 -4.675781 2.023438 -4.007812 1.859375 -3.125 C 1.773438 -2.71875 1.734375 -2.359375 1.734375 -2.046875 C 1.734375 -1.660156 1.789062 -1.34375 1.90625 -1.09375 C 2.113281 -0.632812 2.503906 -0.40625 3.078125 -0.40625 Z M 2.96875 0.171875 C 2.0625 0.171875 1.394531 -0.128906 0.96875 -0.734375 C 0.664062 -1.148438 0.515625 -1.65625 0.515625 -2.25 C 0.515625 -2.519531 0.539062 -2.8125 0.59375 -3.125 C 0.789062 -4.113281 1.222656 -4.90625 1.890625 -5.5 C 2.554688 -6.101562 3.34375 -6.40625 4.25 -6.40625 C 5.15625 -6.40625 5.828125 -6.101562 6.265625 -5.5 C 6.554688 -5.082031 6.703125 -4.578125 6.703125 -3.984375 C 6.703125 -3.710938 6.675781 -3.425781 6.625 -3.125 C 6.425781 -2.125 5.992188 -1.320312 5.328125 -0.71875 C 4.671875 -0.125 3.882812 0.171875 2.96875 0.171875 Z M 2.96875 0.171875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 7.203125 -9.125 L 5.4375 0 L 4.359375 0 L 4.546875 -0.96875 C 4.253906 -0.582031 3.925781 -0.296875 3.5625 -0.109375 C 3.207031 0.078125 2.785156 0.171875 2.296875 0.171875 C 1.535156 0.171875 0.972656 -0.128906 0.609375 -0.734375 C 0.359375 -1.140625 0.234375 -1.625 0.234375 -2.1875 C 0.234375 -2.476562 0.265625 -2.789062 0.328125 -3.125 C 0.523438 -4.09375 0.921875 -4.878906 1.515625 -5.484375 C 2.117188 -6.097656 2.804688 -6.40625 3.578125 -6.40625 C 4.054688 -6.40625 4.441406 -6.3125 4.734375 -6.125 C 5.023438 -5.9375 5.238281 -5.644531 5.375 -5.25 L 6 -8.5 L 4.984375 -8.5 L 5.109375 -9.125 Z M 4.90625 -2.8125 L 5.015625 -3.421875 C 5.078125 -3.722656 5.109375 -4 5.109375 -4.25 C 5.109375 -4.601562 5.046875 -4.898438 4.921875 -5.140625 C 4.710938 -5.523438 4.332031 -5.71875 3.78125 -5.71875 C 3.226562 -5.71875 2.765625 -5.5 2.390625 -5.0625 C 2.023438 -4.625 1.757812 -3.976562 1.59375 -3.125 C 1.519531 -2.726562 1.484375 -2.375 1.484375 -2.0625 C 1.484375 -1.707031 1.535156 -1.410156 1.640625 -1.171875 C 1.835938 -0.722656 2.210938 -0.5 2.765625 -0.5 C 3.316406 -0.5 3.769531 -0.695312 4.125 -1.09375 C 4.488281 -1.488281 4.75 -2.0625 4.90625 -2.8125 Z M 4.90625 -2.8125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-7">
+<path style="stroke:none;" d="M 0.765625 0 L 0.03125 0 L 2.78125 -2.984375 L 1.40625 -5.609375 L 0.640625 -5.609375 L 0.75 -6.234375 L 2.328125 -6.234375 L 3.625 -3.796875 L 5.859375 -6.234375 L 6.59375 -6.234375 L 3.890625 -3.296875 L 5.328125 -0.625 L 6.140625 -0.625 L 6.015625 0 L 4.390625 0 L 3.0625 -2.484375 Z M 0.765625 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-8">
+<path style="stroke:none;" d="M 1.765625 -2.390625 C 1.742188 -2.242188 1.734375 -2.101562 1.734375 -1.96875 C 1.734375 -1.601562 1.800781 -1.300781 1.9375 -1.0625 C 2.164062 -0.625 2.585938 -0.40625 3.203125 -0.40625 C 3.660156 -0.40625 4 -0.472656 4.21875 -0.609375 C 4.613281 -0.859375 4.859375 -1.140625 4.953125 -1.453125 L 5.75 -1.453125 C 5.59375 -0.960938 5.222656 -0.539062 4.640625 -0.1875 C 4.234375 0.0507812 3.628906 0.171875 2.828125 0.171875 C 2.023438 0.171875 1.40625 -0.128906 0.96875 -0.734375 C 0.664062 -1.148438 0.515625 -1.660156 0.515625 -2.265625 C 0.515625 -2.523438 0.539062 -2.804688 0.59375 -3.109375 C 0.789062 -4.097656 1.21875 -4.894531 1.875 -5.5 C 2.53125 -6.101562 3.328125 -6.40625 4.265625 -6.40625 C 5.796875 -6.40625 6.5625 -5.863281 6.5625 -4.78125 C 6.5625 -3.988281 6.160156 -3.394531 5.359375 -3 C 4.546875 -2.613281 3.347656 -2.410156 1.765625 -2.390625 Z M 4.765625 -3.703125 C 5.203125 -3.960938 5.421875 -4.332031 5.421875 -4.8125 C 5.421875 -5.476562 4.976562 -5.8125 4.09375 -5.8125 C 3.570312 -5.8125 3.128906 -5.613281 2.765625 -5.21875 C 2.398438 -4.820312 2.101562 -4.085938 1.875 -3.015625 C 3.132812 -3.066406 4.097656 -3.296875 4.765625 -3.703125 Z M 4.765625 -3.703125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d="M 1.328125 0 L 1.328125 -6.25 L 6.671875 -6.25 L 6.671875 0 Z M 6.5 -0.15625 L 6.5 -6.09375 L 1.5 -6.09375 L 1.5 -0.15625 Z M 6.5 -0.15625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 4.171875 11.578125 C 3.296875 10.878906 2.648438 10.003906 2.234375 8.953125 C 1.828125 7.910156 1.625 6.789062 1.625 5.59375 C 1.625 4.394531 1.828125 3.269531 2.234375 2.21875 C 2.648438 1.164062 3.296875 0.300781 4.171875 -0.375 C 4.171875 -0.394531 4.1875 -0.40625 4.21875 -0.40625 L 4.359375 -0.40625 C 4.378906 -0.40625 4.394531 -0.394531 4.40625 -0.375 C 4.425781 -0.351562 4.4375 -0.332031 4.4375 -0.3125 C 4.4375 -0.28125 4.429688 -0.257812 4.421875 -0.25 C 4.035156 0.125 3.707031 0.539062 3.4375 1 C 3.175781 1.457031 2.96875 1.929688 2.8125 2.421875 C 2.664062 2.921875 2.5625 3.4375 2.5 3.96875 C 2.4375 4.507812 2.40625 5.054688 2.40625 5.609375 C 2.40625 8.191406 3.078125 10.132812 4.421875 11.4375 C 4.429688 11.445312 4.4375 11.46875 4.4375 11.5 C 4.4375 11.519531 4.425781 11.539062 4.40625 11.5625 C 4.382812 11.582031 4.367188 11.59375 4.359375 11.59375 L 4.21875 11.59375 C 4.1875 11.59375 4.171875 11.585938 4.171875 11.578125 Z M 4.171875 11.578125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d="M 0.53125 11.59375 C 0.46875 11.59375 0.4375 11.5625 0.4375 11.5 C 0.4375 11.46875 0.441406 11.445312 0.453125 11.4375 C 0.960938 10.9375 1.363281 10.367188 1.65625 9.734375 C 1.957031 9.109375 2.164062 8.445312 2.28125 7.75 C 2.40625 7.050781 2.46875 6.332031 2.46875 5.59375 C 2.46875 3 1.796875 1.050781 0.453125 -0.25 C 0.441406 -0.257812 0.4375 -0.28125 0.4375 -0.3125 C 0.4375 -0.375 0.46875 -0.40625 0.53125 -0.40625 L 0.65625 -0.40625 C 0.675781 -0.40625 0.695312 -0.394531 0.71875 -0.375 C 1.59375 0.300781 2.234375 1.164062 2.640625 2.21875 C 3.046875 3.269531 3.25 4.394531 3.25 5.59375 C 3.25 6.789062 3.046875 7.910156 2.640625 8.953125 C 2.234375 10.003906 1.59375 10.878906 0.71875 11.578125 C 0.695312 11.585938 0.675781 11.59375 0.65625 11.59375 Z M 0.53125 11.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-0">
+<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-1">
+<path style="stroke:none;" d="M 1.265625 -5.421875 L 8.78125 -5.421875 L 8.78125 -4.484375 L 1.265625 -4.484375 Z M 1.265625 -3.03125 L 8.78125 -3.03125 L 8.78125 -2.09375 L 1.265625 -2.09375 Z M 1.265625 -3.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-2">
+<path style="stroke:none;" d="M 1.703125 0 L 1.703125 -0.625 L 3.234375 -0.625 L 3.234375 -7.90625 L 1.46875 -6.75 L 1.46875 -7.53125 L 3.59375 -8.90625 L 4.40625 -8.90625 L 4.40625 -0.625 L 5.9375 -0.625 L 5.9375 0 Z M 1.703125 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-3">
+<path style="stroke:none;" d="M 5.5 -7.53125 L 5.5 -4.234375 L 8.78125 -4.234375 L 8.78125 -3.28125 L 5.5 -3.28125 L 5.5 0 L 4.5625 0 L 4.5625 -3.28125 L 1.265625 -3.28125 L 1.265625 -4.234375 L 4.5625 -4.234375 L 4.5625 -7.53125 Z M 5.5 -7.53125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-0">
+<path style="stroke:none;" d="M 0.421875 1.5 L 0.421875 -6 L 4.6875 -6 L 4.6875 1.5 Z M 0.90625 1.03125 L 4.203125 1.03125 L 4.203125 -5.53125 L 0.90625 -5.53125 Z M 0.90625 1.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-1">
+<path style="stroke:none;" d="M 0.90625 -3 L 6.234375 -3 L 6.234375 -2.328125 L 0.90625 -2.328125 Z M 0.90625 -3 "/>
+</symbol>
+<symbol overflow="visible" id="glyph4-0">
+<path style="stroke:none;" d="M 0.421875 1.5 L 0.421875 -6 L 4.6875 -6 L 4.6875 1.5 Z M 0.90625 1.03125 L 4.203125 1.03125 L 4.203125 -5.53125 L 0.90625 -5.53125 Z M 0.90625 1.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph4-1">
+<path style="stroke:none;" d="M 0.546875 0 L 0.03125 0 L 1.96875 -2.125 L 1 -3.96875 L 0.453125 -3.96875 L 0.53125 -4.421875 L 1.65625 -4.421875 L 2.578125 -2.703125 L 4.15625 -4.421875 L 4.671875 -4.421875 L 2.765625 -2.34375 L 3.78125 -0.4375 L 4.359375 -0.4375 L 4.265625 0 L 3.109375 0 L 2.171875 -1.765625 Z M 0.546875 0 "/>
+</symbol>
+</g>
+</defs>
+<g id="surface1">
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-1" x="0.53125" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-2" x="7.003906" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-3" x="11.15625" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-4" x="18.8125" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-5" x="30.179688" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-2" x="37.613281" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-6" x="41.953125" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph1-1" x="48.867188" y="9.240381"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-7" x="54.605469" y="18.599609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph1-2" x="62.09375" y="9.240381"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-1" x="68.742188" y="18.603516"/>
+</g>
+<path style="fill:none;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 82.859375 -3.760805 L 123.4375 -3.760805 " transform="matrix(1,0,0,1,0,18.600648)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-2" x="99.453125" y="8.904297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-2" x="82.0625" y="27.224609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-3" x="90.71875" y="27.220703"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-8" x="102.992188" y="27.224609"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph3-1" x="111.128906" y="23.462891"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph4-1" x="118.285156" y="23.462891"/>
+</g>
+</g>
+</svg>
diff --git a/figures/tanh.svg b/figures/tanh.svg
new file mode 100644
index 0000000..0220450
--- /dev/null
+++ b/figures/tanh.svg
@@ -0,0 +1,129 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="107.45977pt" height="29.539187pt" viewBox="0 0 107.45977 29.539187" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 1.609375 -5.609375 L 0.65625 -5.609375 L 0.78125 -6.234375 L 1.734375 -6.234375 L 2.109375 -8.15625 L 3.1875 -8.15625 L 2.8125 -6.234375 L 4.84375 -6.234375 L 4.71875 -5.609375 L 2.6875 -5.609375 L 1.921875 -1.640625 C 1.859375 -1.335938 1.828125 -1.097656 1.828125 -0.921875 C 1.828125 -0.796875 1.84375 -0.703125 1.875 -0.640625 C 1.945312 -0.484375 2.117188 -0.40625 2.390625 -0.40625 C 2.671875 -0.40625 2.894531 -0.488281 3.0625 -0.65625 C 3.226562 -0.820312 3.347656 -1.09375 3.421875 -1.46875 L 4.234375 -1.46875 C 4.097656 -0.894531 3.863281 -0.476562 3.53125 -0.21875 C 3.207031 0.0390625 2.757812 0.171875 2.1875 0.171875 C 1.570312 0.171875 1.160156 0.03125 0.953125 -0.25 C 0.828125 -0.414062 0.765625 -0.65625 0.765625 -0.96875 C 0.765625 -1.164062 0.789062 -1.390625 0.84375 -1.640625 Z M 1.609375 -5.609375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 4.359375 -0.96875 C 3.835938 -0.207031 3.160156 0.171875 2.328125 0.171875 C 1.640625 0.171875 1.117188 -0.0625 0.765625 -0.53125 C 0.523438 -0.851562 0.40625 -1.25 0.40625 -1.71875 C 0.40625 -1.914062 0.425781 -2.128906 0.46875 -2.359375 C 0.738281 -3.734375 1.351562 -4.773438 2.3125 -5.484375 C 3.125 -6.097656 4.023438 -6.40625 5.015625 -6.40625 C 5.679688 -6.40625 6.128906 -6.347656 6.359375 -6.234375 L 5.265625 -0.625 L 6.1875 -0.625 L 6.078125 0 L 4.171875 0 Z M 1.546875 -1.765625 C 1.546875 -0.921875 1.945312 -0.5 2.75 -0.5 C 3.25 -0.5 3.664062 -0.695312 4 -1.09375 C 4.332031 -1.488281 4.570312 -2.0625 4.71875 -2.8125 L 5.265625 -5.625 C 5.265625 -5.738281 5.109375 -5.796875 4.796875 -5.796875 C 4.046875 -5.796875 3.378906 -5.503906 2.796875 -4.921875 C 2.210938 -4.328125 1.820312 -3.5 1.625 -2.4375 C 1.570312 -2.1875 1.546875 -1.960938 1.546875 -1.765625 Z M 1.546875 -1.765625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 0.84375 0 L 1.9375 -5.609375 L 0.90625 -5.609375 L 1.015625 -6.234375 L 3.125 -6.234375 L 2.921875 -5.125 C 3.203125 -5.539062 3.519531 -5.859375 3.875 -6.078125 C 4.238281 -6.296875 4.628906 -6.40625 5.046875 -6.40625 C 5.734375 -6.40625 6.203125 -6.207031 6.453125 -5.8125 C 6.609375 -5.570312 6.6875 -5.253906 6.6875 -4.859375 C 6.6875 -4.585938 6.648438 -4.289062 6.578125 -3.96875 L 5.9375 -0.625 L 6.890625 -0.625 L 6.78125 0 L 4.734375 0 L 5.4375 -3.625 C 5.507812 -4.019531 5.546875 -4.351562 5.546875 -4.625 C 5.546875 -4.863281 5.515625 -5.050781 5.453125 -5.1875 C 5.316406 -5.46875 5.015625 -5.609375 4.546875 -5.609375 C 4.046875 -5.609375 3.628906 -5.425781 3.296875 -5.0625 C 2.960938 -4.695312 2.726562 -4.164062 2.59375 -3.46875 L 1.921875 0 Z M 0.84375 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d="M 0.578125 0 L 2.234375 -8.5 L 1.203125 -8.5 L 1.3125 -9.125 L 3.421875 -9.125 L 2.65625 -5.125 C 2.9375 -5.539062 3.253906 -5.859375 3.609375 -6.078125 C 3.972656 -6.296875 4.363281 -6.40625 4.78125 -6.40625 C 5.46875 -6.40625 5.9375 -6.207031 6.1875 -5.8125 C 6.34375 -5.570312 6.421875 -5.253906 6.421875 -4.859375 C 6.421875 -4.585938 6.382812 -4.289062 6.3125 -3.96875 L 5.671875 -0.625 L 6.625 -0.625 L 6.515625 0 L 4.46875 0 L 5.171875 -3.625 C 5.242188 -4.019531 5.28125 -4.351562 5.28125 -4.625 C 5.28125 -4.863281 5.25 -5.050781 5.1875 -5.1875 C 5.0625 -5.46875 4.757812 -5.609375 4.28125 -5.609375 C 3.78125 -5.609375 3.363281 -5.425781 3.03125 -5.0625 C 2.695312 -4.695312 2.460938 -4.164062 2.328125 -3.46875 L 1.65625 0 Z M 0.578125 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 0.765625 0 L 0.03125 0 L 2.78125 -2.984375 L 1.40625 -5.609375 L 0.640625 -5.609375 L 0.75 -6.234375 L 2.328125 -6.234375 L 3.625 -3.796875 L 5.859375 -6.234375 L 6.59375 -6.234375 L 3.890625 -3.296875 L 5.328125 -0.625 L 6.140625 -0.625 L 6.015625 0 L 4.390625 0 L 3.0625 -2.484375 Z M 0.765625 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 1.765625 -2.390625 C 1.742188 -2.242188 1.734375 -2.101562 1.734375 -1.96875 C 1.734375 -1.601562 1.800781 -1.300781 1.9375 -1.0625 C 2.164062 -0.625 2.585938 -0.40625 3.203125 -0.40625 C 3.660156 -0.40625 4 -0.472656 4.21875 -0.609375 C 4.613281 -0.859375 4.859375 -1.140625 4.953125 -1.453125 L 5.75 -1.453125 C 5.59375 -0.960938 5.222656 -0.539062 4.640625 -0.1875 C 4.234375 0.0507812 3.628906 0.171875 2.828125 0.171875 C 2.023438 0.171875 1.40625 -0.128906 0.96875 -0.734375 C 0.664062 -1.148438 0.515625 -1.660156 0.515625 -2.265625 C 0.515625 -2.523438 0.539062 -2.804688 0.59375 -3.109375 C 0.789062 -4.097656 1.21875 -4.894531 1.875 -5.5 C 2.53125 -6.101562 3.328125 -6.40625 4.265625 -6.40625 C 5.796875 -6.40625 6.5625 -5.863281 6.5625 -4.78125 C 6.5625 -3.988281 6.160156 -3.394531 5.359375 -3 C 4.546875 -2.613281 3.347656 -2.410156 1.765625 -2.390625 Z M 4.765625 -3.703125 C 5.203125 -3.960938 5.421875 -4.332031 5.421875 -4.8125 C 5.421875 -5.476562 4.976562 -5.8125 4.09375 -5.8125 C 3.570312 -5.8125 3.128906 -5.613281 2.765625 -5.21875 C 2.398438 -4.820312 2.101562 -4.085938 1.875 -3.015625 C 3.132812 -3.066406 4.097656 -3.296875 4.765625 -3.703125 Z M 4.765625 -3.703125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d="M 1.328125 0 L 1.328125 -6.25 L 6.671875 -6.25 L 6.671875 0 Z M 6.5 -0.15625 L 6.5 -6.09375 L 1.5 -6.09375 L 1.5 -0.15625 Z M 6.5 -0.15625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 4.171875 11.578125 C 3.296875 10.878906 2.648438 10.003906 2.234375 8.953125 C 1.828125 7.910156 1.625 6.789062 1.625 5.59375 C 1.625 4.394531 1.828125 3.269531 2.234375 2.21875 C 2.648438 1.164062 3.296875 0.300781 4.171875 -0.375 C 4.171875 -0.394531 4.1875 -0.40625 4.21875 -0.40625 L 4.359375 -0.40625 C 4.378906 -0.40625 4.394531 -0.394531 4.40625 -0.375 C 4.425781 -0.351562 4.4375 -0.332031 4.4375 -0.3125 C 4.4375 -0.28125 4.429688 -0.257812 4.421875 -0.25 C 4.035156 0.125 3.707031 0.539062 3.4375 1 C 3.175781 1.457031 2.96875 1.929688 2.8125 2.421875 C 2.664062 2.921875 2.5625 3.4375 2.5 3.96875 C 2.4375 4.507812 2.40625 5.054688 2.40625 5.609375 C 2.40625 8.191406 3.078125 10.132812 4.421875 11.4375 C 4.429688 11.445312 4.4375 11.46875 4.4375 11.5 C 4.4375 11.519531 4.425781 11.539062 4.40625 11.5625 C 4.382812 11.582031 4.367188 11.59375 4.359375 11.59375 L 4.21875 11.59375 C 4.1875 11.59375 4.171875 11.585938 4.171875 11.578125 Z M 4.171875 11.578125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d="M 0.53125 11.59375 C 0.46875 11.59375 0.4375 11.5625 0.4375 11.5 C 0.4375 11.46875 0.441406 11.445312 0.453125 11.4375 C 0.960938 10.9375 1.363281 10.367188 1.65625 9.734375 C 1.957031 9.109375 2.164062 8.445312 2.28125 7.75 C 2.40625 7.050781 2.46875 6.332031 2.46875 5.59375 C 2.46875 3 1.796875 1.050781 0.453125 -0.25 C 0.441406 -0.257812 0.4375 -0.28125 0.4375 -0.3125 C 0.4375 -0.375 0.46875 -0.40625 0.53125 -0.40625 L 0.65625 -0.40625 C 0.675781 -0.40625 0.695312 -0.394531 0.71875 -0.375 C 1.59375 0.300781 2.234375 1.164062 2.640625 2.21875 C 3.046875 3.269531 3.25 4.394531 3.25 5.59375 C 3.25 6.789062 3.046875 7.910156 2.640625 8.953125 C 2.234375 10.003906 1.59375 10.878906 0.71875 11.578125 C 0.695312 11.585938 0.675781 11.59375 0.65625 11.59375 Z M 0.53125 11.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-0">
+<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-1">
+<path style="stroke:none;" d="M 1.265625 -5.421875 L 8.78125 -5.421875 L 8.78125 -4.484375 L 1.265625 -4.484375 Z M 1.265625 -3.03125 L 8.78125 -3.03125 L 8.78125 -2.09375 L 1.265625 -2.09375 Z M 1.265625 -3.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-2">
+<path style="stroke:none;" d="M 1.703125 0 L 1.703125 -0.625 L 3.234375 -0.625 L 3.234375 -7.90625 L 1.46875 -6.75 L 1.46875 -7.53125 L 3.59375 -8.90625 L 4.40625 -8.90625 L 4.40625 -0.625 L 5.9375 -0.625 L 5.9375 0 Z M 1.703125 0 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-3">
+<path style="stroke:none;" d="M 1.265625 -4.234375 L 8.78125 -4.234375 L 8.78125 -3.28125 L 1.265625 -3.28125 Z M 1.265625 -4.234375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-4">
+<path style="stroke:none;" d="M 5.5 -7.53125 L 5.5 -4.234375 L 8.78125 -4.234375 L 8.78125 -3.28125 L 5.5 -3.28125 L 5.5 0 L 4.5625 0 L 4.5625 -3.28125 L 1.265625 -3.28125 L 1.265625 -4.234375 L 4.5625 -4.234375 L 4.5625 -7.53125 Z M 5.5 -7.53125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-0">
+<path style="stroke:none;" d="M 0.421875 1.5 L 0.421875 -6 L 4.6875 -6 L 4.6875 1.5 Z M 0.90625 1.03125 L 4.203125 1.03125 L 4.203125 -5.53125 L 0.90625 -5.53125 Z M 0.90625 1.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-1">
+<path style="stroke:none;" d="M 0.90625 -3 L 6.234375 -3 L 6.234375 -2.328125 L 0.90625 -2.328125 Z M 0.90625 -3 "/>
+</symbol>
+<symbol overflow="visible" id="glyph3-2">
+<path style="stroke:none;" d="M 1.09375 -4.734375 L 0.625 -4.734375 L 0.625 -5.828125 C 0.914062 -5.992188 1.210938 -6.113281 1.515625 -6.1875 C 1.816406 -6.269531 2.113281 -6.3125 2.40625 -6.3125 C 3.050781 -6.3125 3.5625 -6.15625 3.9375 -5.84375 C 4.3125 -5.53125 4.5 -5.109375 4.5 -4.578125 C 4.5 -3.960938 4.070312 -3.234375 3.21875 -2.390625 C 3.15625 -2.328125 3.109375 -2.28125 3.078125 -2.25 L 1.5 -0.6875 L 4.09375 -0.6875 L 4.09375 -1.453125 L 4.578125 -1.453125 L 4.578125 0 L 0.578125 0 L 0.578125 -0.453125 L 2.46875 -2.328125 C 2.875 -2.742188 3.164062 -3.125 3.34375 -3.46875 C 3.53125 -3.820312 3.625 -4.191406 3.625 -4.578125 C 3.625 -4.992188 3.515625 -5.316406 3.296875 -5.546875 C 3.078125 -5.785156 2.773438 -5.90625 2.390625 -5.90625 C 1.992188 -5.90625 1.6875 -5.804688 1.46875 -5.609375 C 1.25 -5.410156 1.125 -5.117188 1.09375 -4.734375 Z M 1.09375 -4.734375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph4-0">
+<path style="stroke:none;" d="M 0.421875 1.5 L 0.421875 -6 L 4.6875 -6 L 4.6875 1.5 Z M 0.90625 1.03125 L 4.203125 1.03125 L 4.203125 -5.53125 L 0.90625 -5.53125 Z M 0.90625 1.03125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph4-1">
+<path style="stroke:none;" d="M 0.546875 0 L 0.03125 0 L 1.96875 -2.125 L 1 -3.96875 L 0.453125 -3.96875 L 0.53125 -4.421875 L 1.65625 -4.421875 L 2.578125 -2.703125 L 4.15625 -4.421875 L 4.671875 -4.421875 L 2.765625 -2.34375 L 3.78125 -0.4375 L 4.359375 -0.4375 L 4.265625 0 L 3.109375 0 L 2.171875 -1.765625 Z M 0.546875 0 "/>
+</symbol>
+</g>
+</defs>
+<g id="surface1">
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-1" x="0.0117188" y="19.779297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-2" x="5.777344" y="19.779297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-3" x="12.621094" y="19.779297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-4" x="20.265625" y="19.779297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph1-1" x="26.601562" y="10.420068"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-5" x="32.339844" y="19.779297"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph1-2" x="39.828125" y="10.420068"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-1" x="46.476562" y="19.783203"/>
+</g>
+<path style="fill:none;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 60.597656 -3.759828 L 106.125 -3.759828 " transform="matrix(1,0,0,1,0,19.779359)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-2" x="59.796875" y="10.083984"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-3" x="68.453125" y="10.083984"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-6" x="80.730469" y="10.083984"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph3-1" x="88.863281" y="6.326172"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph3-2" x="95.46875" y="6.322266"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph4-1" x="100.972656" y="6.322266"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-2" x="59.796875" y="29.369141"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph2-4" x="68.453125" y="29.369141"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph0-6" x="80.730469" y="29.369141"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph3-1" x="88.863281" y="25.611328"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph3-2" x="95.46875" y="25.607422"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+ <use xlink:href="#glyph4-1" x="100.972656" y="25.607422"/>
+</g>
+</g>
+</svg>