Index: doc/theses/andrew_beach_MMath/cfalab.sty
===================================================================
--- doc/theses/andrew_beach_MMath/cfalab.sty	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/andrew_beach_MMath/cfalab.sty	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,3 +1,4 @@
 % Package for CFA Research Lab.
+% (Now more a personal collection and testing grounds for common.sty.)
 %
 % This is a collection of commands everyone working on CFA related documents
@@ -23,7 +24,9 @@
 % space and '{}<whatever-follows>' to force remove one.
 %
+% \CFA
 % Cforall with the forall symbol.
 \newrobustcmd\CFA{\textsf{C\raisebox{\depth}{\rotatebox{180}{A}}}\xspace}
-% C++ with kerning. You may optionally append a standard number.
+% \Cpp[<std>]
+% C++ symbol name. You may optionally provide <std> to specify a standard.
 \newrobustcmd\Cpp[1][\xspace]{C++#1}
 
@@ -45,11 +48,10 @@
 \newcommand*\colour[2]{{\color{#1}#2}}
 
-% \code*{<code>}
-% Use the listings package to format a snipit of <code>.
-\newrobustcmd*\codeCFA[1]{\lstinline[language=CFA]{#1}}
-\newrobustcmd*\codeC[1]{\lstinline[language=C]{#1}}
-\newrobustcmd*\codeCpp[1]{\lstinline[language=C++]{#1}}
-\newrobustcmd*\codePy[1]{\lstinline[language=Python]{#1}}
+% \code{<language>}{<code>}
+% Use the listings package to format the snipit of <code> in <language>.
+\newrobustcmd*\code[2]{\lstinline[language=#1]{#2}}
 
+% \begin{cfa}[<options>]
+% \end{cfa}
 % Use the listings package to format a block of CFA code.
 % Extra listings options can be passed in as an optional argument.
Index: doc/theses/andrew_beach_MMath/features.tex
===================================================================
--- doc/theses/andrew_beach_MMath/features.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/andrew_beach_MMath/features.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -24,7 +24,7 @@
 
 Some well known examples include the @throw@ statements of \Cpp and Java and
-the \codePy{raise} statement from Python. In real systems a raise may preform
-some other work (such as memory management) but for the purposes of this
-overview that can be ignored.
+the \code{Python}{raise} statement from Python. In real systems a raise may
+preform some other work (such as memory management) but for the
+purposes of this overview that can be ignored.
 
 \subparagraph{Handle}
@@ -93,5 +93,5 @@
 A handler labelled with any given exception can handle exceptions of that
 type or any child type of that exception. The root of the exception hierarchy
-(here \codeC{exception}) acts as a catch-all, leaf types catch single types
+(here \code{C}{exception}) acts as a catch-all, leaf types catch single types
 and the exceptions in the middle can be used to catch different groups of
 related exceptions.
@@ -182,5 +182,5 @@
 While much of the virtual infrastructure is created, it is currently only used
 internally for exception handling. The only user-level feature is the virtual
-cast, which is the same as the \Cpp \codeCpp{dynamic_cast}.
+cast, which is the same as the \Cpp \code{C++}{dynamic_cast}.
 \label{p:VirtualCast}
 \begin{cfa}
Index: doc/theses/andrew_beach_MMath/implement.tex
===================================================================
--- doc/theses/andrew_beach_MMath/implement.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/andrew_beach_MMath/implement.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -15,117 +15,134 @@
 \subsection{Virtual Type}
 Virtual types only have one change to their structure: the addition of a
-pointer to the virtual table, called the \emph{virtual-table pointer}.
-Internally, the field is called
-@virtual_table@.
-This constant pointer is always the first field of the table so when
-casting to a supertype, the field's location is always known.
-The field is initialized as part of all generated constructors.
-\todo{They only come as part exceptions and don't work.}
-%After the object is created the field is constant.
-Dereferencing it gives the virtual table and access to the
-type's virtual members.
+pointer to the virtual table, which is called the \emph{virtual-table pointer}.
+Internally, the field is called @virtual_table@.
+The field is fixed after construction. It is always the first field in the
+structure so that its location is always known.
+\todo{Talk about constructors for virtual types (after they are working).}
+
+This is what binds an instance of a virtual type to a virtual table. This
+pointer can be used as an identity check. It can also be used to access the
+virtual table and the virtual members there.
+
+\subsection{Type Id}
+Every virtual type has a unique id.
+Type ids can be compared for equality (the types reperented are the same)
+or used to access the type's type information.
+The type information currently is only the parent's type id or, if the
+type has no parent, zero.
+
+The id's are implemented as pointers to the type's type information instance.
+Derefencing the pointer gets the type information.
+By going back-and-forth between the type id and
+the type info one can find every ancestor of a virtual type.
+It also pushes the issue of creating a unique value (for
+the type id) to the problem of creating a unique instance (for type
+information) which the linker can solve.
+
+Advanced linker support is required because there is no place that appears
+only once to attach the type information to. There should be one structure
+definition but it is included in multiple translation units. Each virtual
+table definition should be unique but there are an arbitrary number of thoses.
+So the special section prefix \texttt{.gnu.linkonce} is used.
+With a unique suffix (making the entire section name unique) the linker will
+remove multiple definition making sure only one version exists after linking.
+Then it is just a matter of making sure there is a unique name for each type.
+
+This is done in three phases.
+The first phase is to generate a new structure definition to store the type
+information. The layout is the same in each case, just the parent's type id,
+but the types are changed.
+The structure's name is change, it is based off the virtual type's name, and
+the type of the parent's type id.
+If the virtual type is polymorphic then the type information structure is
+polymorphic as well, with the same polymorphic arguments.
+
+The second phase is to generate an instance of the type information with a
+almost unique name, generated by mangling the virtual type name.
+
+The third phase is implicit with \CFA's overloading scheme. \CFA mangles
+names with type information so that all of the symbols exported to the linker
+are unique even if in \CFA code they are the same. Having two declarations
+with the same name and same type is forbidden because it is impossible for
+overload resolution to pick between them. This is why a unique type is
+generated for each virtual type.
+Polymorphic information is included in this mangling so polymorphic
+types will have seperate instances for each set of polymorphic arguments.
+
+\begin{cfa}
+struct /* type name */ {
+	/* parent type name */ const * parent;
+};
+
+__attribute__((section(".gnu.linkonce./* instance name */")))
+/* type name */ const /* instance name */ = {
+	&/* parent instance name */,
+};
+\end{cfa}
 
 \subsection{Virtual Table}
-% PAB: These 2 paragraphs are repeated below, and maybe some of the paragraph above, too.
-\begin{comment}
-Every time a virtual type is defined, a new virtual table-type is
-instantiated.
-The uniqueness of the virtual-table
-instance is important because its address
-is used as the identifier for the virtual type. Hence, a pointer to the
-virtual table and the ID for the virtual type are interchangeable.
-\todo{Unique instances might be going so we will have to talk about the new
-system instead.}
-
-The first step is creating the virtual-table type.
-The virtual-table type is a structure and is described in terms of
-its fields. The first field contains the parent-type ID (or a pointer to
-the parent virtual-table) or 0 (null pointer).
-Next are repeated fields from on the parent virtual-table.
-Finally, the fields used to store any new virtual members of the new
-the virtual type.
-\end{comment}
-
-%The virtual system is accessed through a private constant field inserted at the
-%beginning of every virtual type. This field
-The virtual-table pointer
-points at a type's virtual table (see Figure~\vref{f:VirtualTableLayout}).
-%and is assigned during the object's
-%construction.
-The address of a virtual table acts as the unique identifier for
-the virtual type, and the first field of a virtual table is a pointer to the
-parent virtual-table or @0p@ (null pointer). The remaining fields are duplicated from the
-parent tables in this type's inheritance chain, followed by any fields this type
-introduces. Parent fields are duplicated so they can be changed, \ie all virtual
-members are overridable, while the parent pointer allows access to the original values.
-Hence, references to the dispatched type
-are replaced with the current virtual type.
-% These are always taken by pointer or reference.
+Each virtual type has a virtual table type that stores its type id and
+virtual members.
+Each virtual type instance is bound to a table instance that is filled with
+the values of virtual members.
+Both the layout of the fields and their value are decided by the rules given
+below.
+
+The layout always comes in three parts.
+The first section is just the type id at the head of the table. It is always
+there to ensure that
+The second section are all the virtual members of the parent, in the same
+order as they appear in the parent's virtual table. Note that the type may
+change slightly as references to the ``this" will change. This is limited to
+inside pointers/references and via function pointers so that the size (and
+hence the offsets) are the same.
+The third section is similar to the second except that it is the new virtual
+members introduced at this level in the hierarchy.
 
 \begin{figure}
-% Simple ascii diragram:
 \begin{cfa}
-parent_pointer  // \C{parent pointer to access its fields}
-parent_field0   // \C{same layout as parent to allow replacement}
+type_id
+parent_field0
 ...
 parent_fieldN
-child_field0    // \C{new types for this virtual table}
+child_field0
 ...
 child_fieldN
-size
-alignment
 \end{cfa}
-%\todo{Refine the diagram}
 \caption{Virtual Table Layout}
 \label{f:VirtualTableLayout}
+\todo*{Improve the Virtual Table Layout diagram.}
 \end{figure}
 
-% For each virtual type, a virtual table is constructed. This is both a new type
-% and an instance of that type. Other instances of the type could be created
-% but the system doesn't use them. So this section will go over the creation of
-% the type and the instance.
-
-\begin{comment}
-PAB: seems to be said already.
-A virtual table is created when a virtual type is created. The name of the
-type is created by mangling the name of the base type. The name of the instance
-is also generated by name mangling. The fields are initialized automatically.
-The parent field is initialized by getting the type of the parent field and
-using that to calculate the mangled name of the parent's virtual-table type.
-\end{comment}
-There are two special fields that are included like normal fields but have
-special initialization rules: the @size@ field is the type's size and is
-initialized with a @sizeof@ expression, the @align@ field is the type's
-alignment and uses an @alignof@ expression. The remaining fields are resolved
-to a name matching the field's name and type using the normal visibility and
-overload resolution rules of the type system.
-
-These operations are split up into several groups depending on where they take
-place, which varies for monomorphic and polymorphic types. The first devision is
-between the declarations and the definitions. Declarations, such as a function
-signature or an aggregate's name, must always be visible but may be repeated in
-the form of forward declarations in headers. Definitions, such as function
-bodies and a aggregate's layout, can be separately compiled but must occur
-exactly once in a source file.
-
-The declarations include the virtual-type definition and forward declarations
-of the virtual-table instance, constructor, message function and
-@get_exception_vtable@. The definition includes the storage and initialization
-of the virtual table instance and the bodies of the three functions.
-
-Monomorphic instances put all of these two groups in one place.
-Polymorphic instances split out the core declarations and definitions from
-the per-instance information. The virtual-table type and most of the functions
-are polymorphic so they are all part of the core. The virtual-table instance
-and the @get_exception_vtable@ function \PAB{ are ...}.
-
+The first and second sections together mean that every virtual table has a
+prefix that has the same layout and types as its parent virtual table.
+This, combined with the fixed offset to the virtual table pointer, means that
+for any virtual type it doesn't matter if we have it or any of its
+descendants, it is still always safe to access the virtual table through
+the virtual table pointer.
+From there it is safe to check the type id to identify the exact type of the
+underlying object, access any of the virtual members and pass the object to
+any of the method-like virtual members.
+\todo{Introduce method-like virtual members.}
+
+When a virtual table is declared the user decides where to declare it and its
+name. The initialization of the virtual table is entirely automatic based on
+the context of the declaration.
+
+The type id is always fixed, each virtual table type will always have one
+exactly one possible type id.
+The virtual members are usually filled in by resolution. The best match for
+a given name and type at the declaration site is filled in.
+There are two exceptions to that rule: the @size@ field is the type's size
+and is set to the result of a @sizeof@ expression, the @align@ field is the
+type's alignment and similarly uses an @alignof@ expression.
+
+\subsubsection{Concurrency Integration}
 Coroutines and threads need instances of @CoroutineCancelled@ and
 @ThreadCancelled@ respectively to use all of their functionality. When a new
-data type is declared with @coroutine@ or @thread@, the forward declaration for
+data type is declared with @coroutine@ or @thread@ the forward declaration for
 the instance is created as well. The definition of the virtual table is created
 at the definition of the main function.
-
-\PAB{You need an example here to show what happens for this case.}
-
+\todo{Add an example with code snipits.}
 
 \subsection{Virtual Cast}
@@ -134,35 +151,25 @@
 % The C-cast is just to make sure the generated code is correct so the rest of
 % the section is about that function.
-The function is
+The function is implemented in the standard library and has the following
+signature:
 \begin{cfa}
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
+void * __cfa__virtual_cast(
+	struct __cfa__parent_vtable const * parent,
 	struct __cfa__parent_vtable const * const * child );
 \end{cfa}
-and it is implemented in the standard library. The structure represents the
-head of a virtual table, which is the pointer to the parent virtual table. The
-@parent@ points directly at the parent-type virtual-table, while the @child@
-points at the object of the (possible) child type.
-
-\PAB{Need a figure to show this relationship.}
-
-In terms of the virtual-cast expression, @parent@ comes from looking up the
-type being cast to and @child@ is the result of the expression being cast.
-Because the complier outputs C code, some C-type casts are also used.
-The last bit of glue is a map that saves every virtual type the compiler
-sees. This table is used to check the type used in a virtual cast is a virtual
-type and to get its virtual table.
-(It also checks for conflicting definitions.)
-
-\PAB{Can this be rolled into the figure above?}
-
-Inside the function is a simple conditional. If the type represented by
-@parent@ is an ancestor of the type represented by @*child@ (it
-requires one more level of dereference to pass through the object) then @child@
-is returned, otherwise the null pointer is returned.
-
-The check is a simple linear search (like \Cpp RTTI). If the child
-virtual table or any of its ancestors (which are retrieved through the first
-field of every virtual table) are the same as the parent virtual-table then
-the cast succeeds.
+\todo{Get rid of \_\_cfa\_\_parent\_vtable in the standard library and then
+the document.}
+The type id of target type of the virtual cast is passed in as @parent@ and
+the cast target is passed in as @child@.
+
+For C generation both arguments and the result are wrapped with type casts.
+There is also an internal store inside the compiler to make sure that the
+target type is a virtual type.
+% It also checks for conflicting definitions.
+
+The virtual cast either returns the original pointer as a new type or null.
+So the function just does the parent check and returns the approprate value.
+The parent check is a simple linear search of child's ancestors using the
+type information.
 
 \section{Exceptions}
@@ -174,35 +181,30 @@
 % resumption doesn't as well.
 
-% Many modern languages work with an internal stack that function push and pop
+% Many modern languages work with an interal stack that function push and pop
 % their local data to. Stack unwinding removes large sections of the stack,
 % often across functions.
 
 Stack unwinding is the process of removing stack frames (activations) from the
-stack. On function entry and return, unwinding is handled directly by the call/return code
-embedded in a function. Usually, the stack-frame size is known statically
-based on parameter and local variable declarations. For dynamically-sized
-local variables.
-(Often called a variable-length array or VLA, even when the variable type is an aggregate.)
-For VLAs, a runtime computation is necessary to know the frame
-size. Finally, a function's frame-size may change during execution as local
-variables (static or dynamic sized) go in and out of scope, which is a form of VLA.
+stack. On function entry and return, unwinding is handled directly by the
+call/return code embedded in the function.
+In many cases the position of the instruction pointer (relative to parameter
+and local declarations) is enough to know the current size of the stack
+frame.
+
+Usually, the stack-frame size is known statically based on parameter and
+local variable declarations. Even with dynamic stack-size the information
+to determain how much of the stack has to be removed is still contained
+within the function.
 Allocating/deallocating stack space is usually an $O(1)$ operation achieved by
 bumping the hardware stack-pointer up or down as needed.
-
-Unwinding across multiple stack frames is more complex because individual stack-management
-code associated with each frame can be bypassed. That is, the location
-of a function's frame-management code is largely unknown and dispersed
-throughout the function, hence the current frame size managed by that code is
-also unknown. Hence, code unwinding across frames does not have direct
-knowledge about what is on the stack, and hence, how much of the stack needs to
-be removed.
-
-% At a very basic level this can be done with @setjmp@ \& @longjmp@ which simply
-% move the top of the stack, discarding everything on the stack above a certain
-% point. However this ignores all the cleanup code that should be run when
-% certain sections of the stack are removed (for \CFA these are from destructors
-% and finally clauses) and also requires that the point to which the stack is
-% being unwound is known ahead of time. libunwind is used to address both of
-% these problems.
+Constructing/destructing values on the stack takes longer put in terms of
+figuring out what needs to be done is of similar complexity.
+
+Unwinding across multiple stack frames is more complex because that
+information is no longer contained within the current function.
+With seperate compilation a function has no way of knowing what its callers
+are so it can't know how large those frames are.
+Without altering the main code path it is also hard to pass that work off
+to the caller.
 
 The traditional unwinding mechanism for C is implemented by saving a snap-shot
@@ -211,22 +213,18 @@
 reseting to a snap-shot of an arbitrary but existing function frame on the
 stack. It is up to the programmer to ensure the snap-shot is valid when it is
-reset and that unwound frames do not have side-effects.
-Hence, this unwinding approach is fragile with potential errors that are
-difficult to debug because the stack becomes corrupted.
-
-With respect to stack side-effects, many languages define cleanup actions that must be taken when objects
-are deallocated from the stack, when the function of blocks within the function end, such as running a variable's
-destructor or a @try@ statement's @finally@ clause.
-The purpose of these side-effects is to reestablish the global state of the program, such as dynamic memory-allocation or file access.
-Handling these side-effect mechanisms
-requires walking the stack and checking each stack frame for these potential
-actions, where a frame can be any block with declarations.
-
-In languages like \Cpp and Java, it must be possible to walk the stack frames in search of @try@
-statements to match and execute a handler. For termination exceptions, it must
-also be possible to unwind all stack frames from the throw to the matching
-catch (including the @try@ block), and each of these frames must be checked for cleanup actions. Stack
-walking is where most of the complexity and expense of exception handling
-appears.
+reset and that all required clean-up from the unwound stacks is preformed.
+This approach is fragile and forces a work onto the surounding code.
+
+With respect to that work forced onto the surounding code,
+many languages define clean-up actions that must be taken when certain
+sections of the stack are removed. Such as when the storage for a variable
+is removed from the stack or when a try statement with a finally clause is
+(conceptually) popped from the stack.
+None of these should be handled by the user, that would contradict the
+intention of these features, so they need to be handled automatically.
+
+To safely remove sections of the stack the language must be able to find and
+run these clean-up actions even when removing multiple functions unknown at
+the beginning of the unwinding.
 
 One of the most popular tools for stack management is libunwind, a low-level
@@ -261,8 +259,6 @@
 
 The GCC compilation flag @-fexceptions@ causes the generation of an LSDA and
-attaches its personality function.
-It attaches a series of opaque directives (@.cfi_personality@ directive)
-used internally and not part of this work.
-However, this
+attaches a personality function to each function.
+In plain C (which \CFA currently compiles down to) this
 flag only handles the cleanup attribute:
 \begin{cfa}
@@ -270,8 +266,12 @@
 int avar __attribute__(( cleanup(clean_up) ));
 \end{cfa}
-that is used on a variable and specifies a function, in this case @clean_up@,
-run when the variable goes out of scope, which is used to mimic destructors.
-However, this feature cannot be used to mimic @try@ statements as it cannot
-control the unwinding.
+The attribue is used on a variable and specifies a function,
+in this case @clean_up@, run when the variable goes out of scope.
+This is enough to mimic destructors, but not try statements which can effect
+the unwinding.
+
+To get full unwinding support all of this has to be done directly with
+assembly and assembler directives. Partiularly the cfi directives
+\texttt{.cfi\_lsda} and \texttt{.cfi\_personality}.
 
 \subsection{Personality Functions}
@@ -279,5 +279,5 @@
 section covers some of the important parts of the interface.
 
-A personality function can perform different actions depending on how it is
+A personality function can preform different actions depending on how it is
 called.
 \begin{lstlisting}[language=C,{moredelim=**[is][\color{red}]{@}{@}}]
@@ -313,16 +313,18 @@
 @_UA_FORCE_UNWIND@ specifies a forced unwind call. Forced unwind only performs
 the cleanup phase and uses a different means to decide when to stop
-(see Section~\vref{s:ForcedUnwind}).
+(see \vref{s:ForcedUnwind}).
 \end{enumerate}
 
 The @exception_class@ argument is a copy of the
-\lstinline[language=C]|exception|'s @exception_class@ field.
-\PAB{Say more.}
-
-The \lstinline[language=C]|exception| argument is a pointer to the user
-provided storage object. It has two public fields, the exception class, which
-is just a number, identifying the exception handling mechanism that
-created it, and the cleanup function. The cleanup function is called if
-required by the exception.
+\code{C}{exception}'s @exception_class@ field.
+This a number that identifies the exception handling mechanism that created
+the
+
+The \code{C}{exception} argument is a pointer to the user
+provided storage object. It has two public fields: the @exception_class@,
+which is described above, and the @exception_cleanup@ function.
+The clean-up function is used by the EHM to clean-up the exception if it
+should need to be freed at an unusual time, it takes an argument that says
+why it had to be cleaned up.
 
 The @context@ argument is a pointer to an opaque type passed to helper
@@ -347,6 +349,6 @@
 @_URC_END_OF_STACK@.
 
-Second, when a handler is matched, raise exception walks the stack again performing the cleanup
-phase.
+Second, when a handler is matched, raise exception moves to the clean-up
+phase and walks the stack a second time.
 Once again, it calls the personality functions of each stack frame from newest
 to oldest. This pass stops at the stack frame containing the matching handler.
@@ -403,9 +405,9 @@
 Each stack must have its own exception context. In a sequential \CFA program,
 there is only one stack with a single global exception-context. However, when
-the library @libcfathread@ is linked, there are multiple stacks, where each
+the library @libcfathread@ is linked, there are multiple stacks and each
 needs its own exception context.
 
-The function @this_exception_context@ provides general access to the exception context.
-For sequential execution, this function is defined as
+The exception context should be retrieved by calling the function
+@this_exception_context@. For sequential execution, this function is defined as
 a weak symbol in the \CFA system-library, @libcfa@. When a \CFA program is
 concurrent, it links with @libcfathread@, where this function is defined with a
@@ -422,5 +424,5 @@
 % catches. Talk about GCC nested functions.
 
-Termination exceptions use libunwind heavily because \CFA termination exceptions match
+\CFA termination exceptions use libunwind heavily because they match \Cpp
 \Cpp exceptions closely. The main complication for \CFA is that the
 compiler generates C code, making it very difficult to generate the assembly to
@@ -430,5 +432,5 @@
 The first step of a termination raise is to copy the exception into memory
 managed by the exception system. Currently, the system uses @malloc@, rather
-than reserved memory or the stack top. The exception-handling mechanism manages
+than reserved memory or the stack top. The exception handling mechanism manages
 memory for the exception as well as memory for libunwind and the system's own
 per-exception storage.
@@ -446,7 +448,8 @@
 \label{f:ExceptionLayout}
 \end{figure}
-
-Exceptions are stored in variable-sized blocks (see Figure~\vref{f:ExceptionLayout}).
-The first component is a fixed-sized data-structure that contains the
+\todo*{Convert the exception layout to an actual diagram.}
+
+Exceptions are stored in variable-sized blocks (see \vref{f:ExceptionLayout}).
+The first component is a fixed-sized data structure that contains the
 information for libunwind and the exception system. The second component is an
 area of memory big enough to store the exception. Macros with pointer arthritic
@@ -454,29 +457,39 @@
 @_Unwind_Exception@ to the entire node.
 
-Multiple exceptions can exist because handlers can call functions that raise
-exceptions.  Figure~\vref{f:MultipleExceptions} shows a \Cpp program where
-exceptions are handled, and then a function is called from the handler that
-raises a new exception. The previous exception must persist because it is
-unhandled, and hence, control can return to the handler and that exception is
-reraised.
+Multipe exceptions can exist at the same time because exceptions can be
+raised inside handlers, destructors and finally blocks.
+Figure~\vref{f:MultipleExceptions} shows a program that has multiple
+exceptions active at one time.
+Each time an exception is thrown and caught the stack unwinds and the finally
+clause runs. This will throw another exception (until @num_exceptions@ gets
+high enough) which must be allocated. The previous exceptions may not be
+freed because the handler/catch clause has not been run.
+So the EHM must keep them alive while it allocates exceptions for new throws.
 
 \begin{figure}
 \centering
+% Andrew: Figure out what these do and give them better names.
 \newsavebox{\myboxA}
 \newsavebox{\myboxB}
 \begin{lrbox}{\myboxA}
-\begin{lstlisting}[language=C++,{moredelim=**[is][\color{red}]{@}{@}}]
-struct E {};
-int cnt = 3;
-void f( int i ) {
-	if ( i == 0 ) @throw E();@
-	try {
-		@f( i - 1 );@
-	} catch( E ) { // handler h
-		cnt -= 1;
-		if ( cnt > 0 ) @f( 2 );@
-	}
+\begin{lstlisting}[language=CFA,{moredelim=**[is][\color{red}]{@}{@}}]
+unsigned num_exceptions = 0;
+void throws() {
+    try {
+        try {
+            ++num_exceptions;
+            throw (Example){table};
+        } finally {
+            if (num_exceptions < 3) {
+                throws();
+            }
+        }
+    } catch (exception_t *) {
+        --num_exceptions;
+    }
 }
-int main() { @f( 2 );@ }
+int main() {
+    throws();
+}
 \end{lstlisting}
 \end{lrbox}
@@ -484,13 +497,4 @@
 \begin{lrbox}{\myboxB}
 \begin{lstlisting}
-h  $\makebox[0pt][l]{\textbackslash}f$
-   f
-   f
-h  $\makebox[0pt][l]{\textbackslash}f$  throw E$\(_2\)$
-   f
-   f
-h  $\makebox[0pt][l]{\textbackslash}f$  throw E$\(_1\)$
-   f
-   f
 \end{lstlisting}
 \end{lrbox}
@@ -503,6 +507,8 @@
 \label{f:MultipleExceptions}
 \end{figure}
-
-In this case, the exception nodes are linked together in a list, one list per stack, with the
+\todo*{Work on multiple exceptions code sample.}
+
+All exceptions are stored in nodes which are then linked together in lists,
+one list per stack, with the
 list head stored in the exception context. Within each linked list, the most
 recently thrown exception is at the head followed by older thrown
@@ -515,11 +521,11 @@
 exception, the copy function, and the free function, so they are specific to an
 exception type. The size and copy function are used immediately to copy an
-exception into managed memory. After the exception is handled, the free function
-is used to clean up the exception and then the entire node is passed to free
-so the memory can be given back to the heap.
+exception into managed memory. After the exception is handled, the free
+function is used to clean up the exception and then the entire node is
+passed to free so the memory can be given back to the heap.
 
 \subsection{Try Statements and Catch Clauses}
 The try statement with termination handlers is complex because it must
-compensate for the lack of assembly code generated from \CFA. Libunwind
+compensate for the lack of assembly-code generated from \CFA. Libunwind
 requires an LSDA and personality function for control to unwind across a
 function. The LSDA in particular is hard to mimic in generated C code.
@@ -530,10 +536,11 @@
 calls them.
 Because this function is known and fixed (and not an arbitrary function that
-happens to contain a try statement), this means the LSDA can be generated ahead
+happens to contain a try statement), the LSDA can be generated ahead
 of time.
 
 Both the LSDA and the personality function are set ahead of time using
-embedded assembly. This assembly code is handcrafted using C @asm@ statements and contains
-enough information for the single try statement the function represents.
+embedded assembly. This assembly code is handcrafted using C @asm@ statements
+and contains
+enough information for the single try statement the function repersents.
 
 The three functions passed to try terminate are:
@@ -563,30 +570,41 @@
 nested functions and all other functions besides @__cfaehm_try_terminate@ in
 \CFA use the GCC personality function and the @-fexceptions@ flag to generate
-the LSDA. Through this mechanism, \CFA destructors are implemented via the cleanup attribute.
-
-\PAB{Try to put together an example try statement illustrating these components.}
+the LSDA.
+Using this pattern, \CFA implements destructors with the cleanup attribute.
+\todo{Add an example of the conversion from try statement to functions.}
 
 \section{Resumption}
 % The stack-local data, the linked list of nodes.
 
-Resumption is simpler to implement than termination because there is no stack
-unwinding.  \PAB{You need to explain how the \lstinline{catchResume} clauses are
-handled. Do you use the personality mechanism in libunwind or do you roll your
-own mechanism?}
-
-The
-resumption raise uses a list of nodes for its stack traversal. The head of the
-list is stored in the exception context. The nodes in the list have a pointer
-to the next node and a pointer to the handler function.
-A resumption raise traverses this list. At each node the handler function is
-called, passing the exception by pointer. It returns true if the exception is
-handled and false otherwise.
-
-The handler function does both the matching and handling. It computes the
-condition of each @catchResume@ in top-to-bottom order, until it finds a
-handler that matches. If no handler matches then the function returns
-false. Otherwise the matching handler is run; if it completes successfully, the
-function returns true. Rethrowing, through the @throwResume;@ statement,
-causes the function to return true.
+Resumption simpler to implement than termination
+because there is no stack unwinding.
+Instead of storing the data in a special area using assembly,
+there is just a linked list of possible handlers for each stack,
+with each node on the list reperenting a try statement on the stack.
+
+The head of the list is stored in the exception context.
+The nodes are stored in order, with the more recent try statements closer
+to the head of the list.
+Instead of traversing the stack resumption handling traverses the list.
+At each node the EHM checks to see if the try statement the node repersents
+can handle the exception. If it can, then the exception is handled and
+the operation finishes, otherwise the search continues to the next node.
+If the search reaches the end of the list without finding a try statement
+that can handle the exception the default handler is executed and the
+operation finishes.
+
+In each node is a handler function which does most of the work there.
+The handler function is passed the raised the exception and returns true
+if the exception is handled and false if it cannot be handled here.
+
+For each @catchResume@ clause the handler function will:
+check to see if the raised exception is a descendant type of the declared
+exception type, if it is and there is a conditional expression then it will
+run the test, if both checks pass the handling code for the clause is run
+and the function returns true, otherwise it moves onto the next clause.
+If this is the last @catchResume@ clause then instead of moving onto
+the next clause the function returns false as no handler could be found.
+
+\todo{Diagram showing a try statement being converted into resumption handlers.}
 
 % Recursive Resumption Stuff:
@@ -603,10 +621,9 @@
 the other handler checked up to this point are not checked again.
 
-This structure also supports new handlers added while the resumption is being
+This structure also supports new handler added while the resumption is being
 handled. These are added to the front of the list, pointing back along the
 stack -- the first one points over all the checked handlers -- and the ordering
 is maintained.
-
-\PAB{Again, a figure to show how this works would be helpful.}
+\todo{Add a diagram for resumption marking.}
 
 \label{p:zero-cost}
@@ -623,12 +640,11 @@
 % that unwind is required knowledge for that chapter.
 
-\PAB{This paragraph needs to be moved to the start of this Section, where I have have my other comment.}
-
 \section{Finally}
 % Uses destructors and GCC nested functions.
-A finally clause is placed into a GCC nested-function with a unique mangled name, and no
-arguments or return values. This nested function is then set as the cleanup
+A finally clause is placed into a GCC nested-function with a unique name,
+and no arguments or return values.
+This nested function is then set as the cleanup
 function of an empty object that is declared at the beginning of a block placed
-around the context of an associated @try@ statement.
+around the context of the associated @try@ statement.
 
 The rest is handled by GCC. The try block and all handlers are inside this
@@ -640,20 +656,18 @@
 
 Cancellation also uses libunwind to do its stack traversal and unwinding,
-however it uses a different primary function, @_Unwind_ForcedUnwind@. Details
-of its interface can be found in Section~\vref{s:ForcedUnwind}.
+however it uses a different primary function: @_Unwind_ForcedUnwind@. Details
+of its interface can be found in the Section~\vref{s:ForcedUnwind}.
 
 The first step of cancellation is to find the cancelled stack and its type:
-coroutine or thread. Fortunately, the thread library stores the program-main thread
-pointer and the current-thread pointer, and every thread stores a pointer to
-the current coroutine it is executing.
-
-\PAB{I don't know if my corrections in the previous paragraph are correct.}
-
-When the active thread and coroutine are the same, the current stack is the thread stack, otherwise it is a coroutine
-stack.
-% PAB: repeated?
-% If it is a thread stack, then an equality check with the stored main
-% thread pointer and current thread pointer is enough to tell if the current
-% thread is the main thread or not.
+coroutine or thread. Fortunately, the thread library stores the main thread
+pointer and the current thread pointer, and every thread stores a pointer to
+its main coroutine and the coroutine it is currently executing.
+\todo*{Consider adding a description of how threads are coroutines.}
+
+If a the current thread's main and current coroutines are the same then the
+current stack is a thread stack. Furthermore it is easy to compare the
+current thread to the main thread to see if they are the same. And if this
+is not a thread stack then it must be a coroutine stack.
+
 However, if the threading library is not linked, the sequential execution is on
 the main stack. Hence, the entire check is skipped because the weak-symbol
@@ -663,10 +677,10 @@
 Regardless of how the stack is chosen, the stop function and parameter are
 passed to the forced-unwind function. The general pattern of all three stop
-functions is the same: continue unwinding until the end of stack.
-%when they
-%do there primary work.
+functions is the same: they continue unwinding until the end of stack and
+then preform their transfer.
+
 For main stack cancellation, the transfer is just a program abort.
 
-For coroutine cancellation, the exception is stored in the coroutine's stack,
+For coroutine cancellation, the exception is stored on the coroutine's stack,
 and the coroutine context switches to its last resumer. The rest is handled on
 the backside of the resume, which check if the resumed coroutine is
Index: doc/theses/andrew_beach_MMath/intro.tex
===================================================================
--- doc/theses/andrew_beach_MMath/intro.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
+++ doc/theses/andrew_beach_MMath/intro.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -0,0 +1,44 @@
+\chapter{Introduction}
+
+% Talk about Cforall and exceptions generally.
+This thesis goes over the design and implementation of the exception handling
+mechanism (EHM) of
+\CFA (pernounced sea-for-all, can also be written Cforall or CFA).
+Exception handling provides dynamic inter-function control flow. Although
+a powerful feature they tend to be expensive to use so they are often limited
+to unusual or ``exceptional" cases.
+The classic example of this is error handling, exceptions can be used to
+remove error handling logic from the main execution path and paying most of
+the cost only when the error actually occurs.
+
+% Overview of exceptions in Cforall.
+The \CFA EHM implements all of the common exception features (or an
+equivalent) found in most other EHMs and adds some features of its own.
+The design of all the features had to be adapted to \CFA's feature set as
+some of the underlying tools used to implement and express exception handling
+in other languages are absent in \CFA.
+Still the resulting syntax resembles that of other languages:
+\begin{cfa}
+try {
+	...
+	T * object = malloc(request_size);
+	if (!object) {
+		throw OutOfMemory{fixed_allocation, request_size};
+	}
+	...
+} catch (OutOfMemory * error) {
+	...
+}
+\end{cfa}
+
+% A note that yes, that was a very fast overview.
+All the design and implementation of all of \CFA's EHM's features are
+described in detail later in this thesis, whether they are a common feature
+or one unique to \CFA.
+
+% The current state of the project and what it contributes.
+All of these features have been added to the \CFA implemenation, along with
+a suite of test cases.
+The implementation techniques are generally applicable in other programming
+languages and much of the design is as well, although occationally
+replacements for some of \CFA's more unusual feature would have to be found.
Index: doc/theses/andrew_beach_MMath/uw-ethesis.tex
===================================================================
--- doc/theses/andrew_beach_MMath/uw-ethesis.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/andrew_beach_MMath/uw-ethesis.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -93,6 +93,6 @@
 % Removes large sections of the document.
 \usepackage{comment}
-% Adds todos (Must be included after comment.)
-\usepackage{todonotes}
+% Adds todo commands.
+\usepackage{todo}
 % cfa macros used in the document
 \usepackage{cfalab}
@@ -145,5 +145,5 @@
 
 % Exception to the rule of hyperref being the last add-on package
-\usepackage[automake,toc,abbreviations]{glossaries-extra}
+\usepackage[toc,abbreviations]{glossaries-extra}
 % If glossaries-extra is not in your LaTeX distribution, get it from CTAN
 % (http://ctan.org/pkg/glossaries-extra), although it's supposed to be in
@@ -235,8 +235,8 @@
 % Tip: Putting each sentence on a new line is a way to simplify later editing.
 %----------------------------------------------------------------------
+\input{intro}
 \input{existing}
 \input{features}
 \input{implement}
-%\input{unwinding}
 \input{future}
 
@@ -298,4 +298,6 @@
 \phantomsection		% allows hyperref to link to the correct page
 
+\todos
+
 %----------------------------------------------------------------------
 \end{document} % end of logical document
Index: doc/theses/mubeen_zulfiqar_MMath/allocator.tex
===================================================================
--- doc/theses/mubeen_zulfiqar_MMath/allocator.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/mubeen_zulfiqar_MMath/allocator.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,4 +1,26 @@
+\chapter{Allocator}
 
-\chapter{Allocator}
+====================
+
+Writing Points:
+
+Objective of uHeapLmmm.
+Design philosophy.
+Background and previous design of uHeapLmmm.
+
+Distributed design of uHeapLmmm.
+----- SHOULD WE GIVE IMPLEMENTATION DETAILS HERE? -----
+> figure.
+> Advantages of distributed design.
+
+The new features added to uHeapLmmm (incl. malloc_size routine)
+CFA alloc interface with examples.
+> Why did we need it?
+> The added benefits.
+----- SHOULD WE GIVE PERFORMANCE AND USABILITY COMPARISON OF DIFFERENT INTERFACES THAT WE TRIED? -----
+
+Performance evaluation using u-benchmark suite.
+
+====================
 
 \newpage
Index: doc/theses/mubeen_zulfiqar_MMath/background.tex
===================================================================
--- doc/theses/mubeen_zulfiqar_MMath/background.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/mubeen_zulfiqar_MMath/background.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,3 +1,17 @@
 \chapter{Background}
 
+====================
+
+Writing Points:
+
+Classification of benchmarks.
+Literature review of current benchmarks.
+Features and limitations.
+
+Literature review of current memory allocators.
+Breakdown of memory allocation techniques.
+Fetures and limitations.
+
+====================
+
 \cite{Wasik08}
Index: doc/theses/mubeen_zulfiqar_MMath/benchmarks.tex
===================================================================
--- doc/theses/mubeen_zulfiqar_MMath/benchmarks.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/mubeen_zulfiqar_MMath/benchmarks.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,1 +1,20 @@
 \chapter{Benchmarks}
+
+====================
+
+Writing Points:
+
+Performance matrices of memory allocation.
+
+Aim of micro benchmark suite.
+----- SHOULD WE GIVE IMPLEMENTATION DETAILS HERE? -----
+A complete list of benchmarks in micro benchmark suite.
+
+One detailed section for each benchmark in micro benchmark suite including:
+> The introduction of the benchmark.
+> Figure.
+> Results with popular memory allocators.
+
+Summarize performance of current memory allocators.
+
+====================
Index: doc/theses/mubeen_zulfiqar_MMath/conclusion.tex
===================================================================
--- doc/theses/mubeen_zulfiqar_MMath/conclusion.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/mubeen_zulfiqar_MMath/conclusion.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,1 +1,11 @@
 \chapter{Conclusion}
+
+====================
+
+Writing Points:
+
+Summarize u-benchmark suite.
+Summarize uHeapLmmm.
+Make recommendations on memory allocator design.
+
+====================
Index: doc/theses/mubeen_zulfiqar_MMath/intro.tex
===================================================================
--- doc/theses/mubeen_zulfiqar_MMath/intro.tex	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ doc/theses/mubeen_zulfiqar_MMath/intro.tex	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -1,1 +1,17 @@
 \chapter{Introduction}
+
+====================
+
+Writing Points:
+
+Introduce dynamic memory allocation with brief background.
+Scope of the thesis.
+Importance of memory allocation and micro benhmark suite.
+
+Research problem.
+Research objectives.
+The vision behind cfa-malloc.
+
+An outline of the thesis.
+
+====================
Index: libcfa/src/concurrency/alarm.cfa
===================================================================
--- libcfa/src/concurrency/alarm.cfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/concurrency/alarm.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -55,4 +55,5 @@
 	this.period  = period;
 	this.thrd = thrd;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = User;
@@ -63,11 +64,13 @@
 	this.period  = period;
 	this.proc = proc;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = Kernel;
 }
 void ?{}( alarm_node_t & this, Alarm_Callback callback, Duration alarm, Duration period ) with( this ) {
+	this.callback = callback;
 	this.initial = alarm;
 	this.period  = period;
-	this.callback = callback;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = Callback;
@@ -110,12 +113,10 @@
 	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
 	{
-		Time curr = __kernel_get_time();
-		this->timeval = curr + this->initial;
-
 		/* paranoid */ verify( validate( alarms ) );
 
+		Time curr = __kernel_get_time();
 		__cfadbg_print_safe( preemption, " KERNEL: alarm inserting %p (%lu -> %lu).\n", this, curr.tn, this->timeval.tn );
 		insert( &alarms, this );
-		__kernel_set_timer( this->initial );
+		__kernel_set_timer( this->timeval - curr);
 		this->set = true;
 	}
Index: libcfa/src/concurrency/locks.cfa
===================================================================
--- libcfa/src/concurrency/locks.cfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/concurrency/locks.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -188,5 +188,5 @@
 		alarm_node_t alarm_node;
 		condition_variable(L) * cond;
-		info_thread(L) * i;
+		info_thread(L) * info_thd;
 	};
 
@@ -194,5 +194,5 @@
 		this.alarm_node{ callback, alarm, period };
 		this.cond = c;
-		this.i = i;
+		this.info_thd = i;
 	}
 
@@ -206,15 +206,15 @@
 		// 	may still be called after a thread has been removed from the queue but
 		// 	before the alarm is unregistered
-		if ( listed(i) ) {	// is thread on queue
-			i->signalled = false;
+		if ( listed(info_thd) ) {	// is thread on queue
+			info_thd->signalled = false;
 			// remove this thread O(1)
-			remove( cond->blocked_threads, *i );
+			remove( cond->blocked_threads, *info_thd );
 			cond->count--;
-			if( i->lock ) {
+			if( info_thd->lock ) {
 				// call lock's on_notify if a lock was passed
-				on_notify(*i->lock, i->t);
+				on_notify(*info_thd->lock, info_thd->t);
 			} else {
 				// otherwise wake thread
-				unpark( i->t );
+				unpark( info_thd->t );
 			}
 		}
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/exception.c	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -48,5 +48,5 @@
 
 // Base Exception type id:
-struct __cfa__parent_vtable __cfatid_exception_t = {
+struct __cfavir_type_info __cfatid_exception_t = {
 	NULL,
 };
Index: libcfa/src/exception.h
===================================================================
--- libcfa/src/exception.h	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/exception.h	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -29,7 +29,7 @@
 struct __cfaehm_base_exception_t;
 typedef struct __cfaehm_base_exception_t exception_t;
-struct __cfa__parent_vtable;
+struct __cfavir_type_info;
 struct __cfaehm_base_exception_t_vtable {
-	const struct __cfa__parent_vtable * __cfavir_typeid;
+	const struct __cfavir_type_info * __cfavir_typeid;
 	size_t size;
 	void (*copy)(struct __cfaehm_base_exception_t *this,
@@ -41,5 +41,5 @@
 	struct __cfaehm_base_exception_t_vtable const * virtual_table;
 };
-extern struct __cfa__parent_vtable __cfatid_exception_t;
+extern struct __cfavir_type_info __cfatid_exception_t;
 
 
Index: libcfa/src/exception.hfa
===================================================================
--- libcfa/src/exception.hfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/exception.hfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -157,5 +157,5 @@
 #define _EHM_TYPE_ID_STRUCT(exception_name, forall_clause) \
 	forall_clause _EHM_TYPE_ID_TYPE(exception_name) { \
-		__cfa__parent_vtable const * parent; \
+		__cfavir_type_info const * parent; \
 	}
 
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/iostream.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 27 18:01:03 2021
-// Update Count     : 1330
+// Last Modified On : Sat May 15 09:39:21 2021
+// Update Count     : 1342
 //
 
@@ -659,7 +659,8 @@
 			int exp10, len2; \
 			eng( f.val, f.pc, exp10 );					/* changes arguments */ \
+			/* printf( "%g %d %d %d %s\n", f.val, f.wd, f.pc, exp10, format ); */ \
 			if ( ! f.flags.left && f.wd > 1 ) { \
-				/* Exponent size (number of digits, 'e', optional minus sign) */ \
-				f.wd -= lrint( floor( log10( abs( exp10 ) ) ) ) + 1 + 1 + (exp10 < 0 ? 1 : 0); \
+				/* Exponent size: 'e', optional minus sign, number of digits: log10(0) => undefined */ \
+				f.wd -= 1 + (exp10 < 0 ? 1 : 0) + lrint( floor( exp10 == 0 ? 0 : log10( abs( exp10 ) ) ) ) + 1; \
 				if ( f.wd < 1 ) f.wd = 1; \
 			} /* if */ \
@@ -708,5 +709,5 @@
 		if ( ! f.flags.pc ) {							/* no precision */ \
 			fmtstr[sizeof(DFMTNP)-2] = f.base;			/* sizeof includes '\0' */ \
-			/* printf( "%g %d %s\n", f.val, f.wd, &fmtstr[star]); */ \
+			/* printf( "%g %d %s\n", f.val, f.wd, &fmtstr[star] ); */ \
 			PrintWithDP2( os, &fmtstr[star], f.wd, f.val ) \
 		} else {										/* precision */ \
Index: libcfa/src/virtual.c
===================================================================
--- libcfa/src/virtual.c	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/virtual.c	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Tus Jul 11 15:10:00 2017
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:24:00 2017
-// Update Count     : 1
+// Last Modified On : Mon May 17 11:01:00 2021
+// Update Count     : 2
 //
 
@@ -17,6 +17,7 @@
 #include "assert.h"
 
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * child ) {
+int __cfavir_is_parent(
+		__cfavir_type_id parent,
+		__cfavir_type_id child ) {
 	assert( child );
 	do {
@@ -28,7 +29,8 @@
 }
 
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * const * child ) {
+void * __cfavir_virtual_cast(
+		__cfavir_type_id parent,
+		__cfavir_type_id const * child ) {
 	assert( child );
-	return (__cfa__is_parent(parent, *child)) ? (void *)child : (void *)0;
+	return (__cfavir_is_parent(parent, *child)) ? (void *)child : (void *)0;
 }
Index: libcfa/src/virtual.h
===================================================================
--- libcfa/src/virtual.h	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ libcfa/src/virtual.h	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Tus Jul 11 15:08:00 2017
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:18:00 2017
-// Update Count     : 1
+// Last Modified On : Mon May 17 11:03:00 2021
+// Update Count     : 2
 //
 
@@ -20,18 +20,24 @@
 #endif
 
-// All strict/explicate vtables should have this head, showing their parent.
-struct __cfa__parent_vtable {
-    struct __cfa__parent_vtable const * const parent;
+// Information on a type for the virtual system.
+// There should be exactly one instance per type and there should be a
+// pointer to it at the head of every virtual table.
+struct __cfavir_type_info {
+	// Type id of parent type, null if this is a root type.
+    struct __cfavir_type_info const * const parent;
 };
 
-// Takes in two non-null pointers to type_objects.
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * child );
+// A pointer to type information acts as the type id.
+typedef struct __cfavir_type_info const * __cfavir_type_id;
+
+// Takes in two non-null type ids.
+int __cfavir_is_parent(
+		__cfavir_type_id parent, __cfavir_type_id child );
 
 // If parent is a parent of child then return child, otherwise return NULL.
 // Input pointers are none-null, child's first level should be an object with
 // a vtable
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * const * child );
+void * __cfavir_virtual_cast(
+		__cfavir_type_id parent, __cfavir_type_id const * child );
 
 #ifdef __cforall
Index: src/Virtual/ExpandCasts.cc
===================================================================
--- src/Virtual/ExpandCasts.cc	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ src/Virtual/ExpandCasts.cc	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -105,5 +105,5 @@
 	void VirtualCastCore::premutate( FunctionDecl * functionDecl ) {
 		if ( (! vcast_decl) &&
-		     functionDecl->get_name() == "__cfa__virtual_cast" ) {
+		     functionDecl->get_name() == "__cfavir_virtual_cast" ) {
 			vcast_decl = functionDecl;
 		}
@@ -113,5 +113,5 @@
 		if ( pvt_decl || ! structDecl->has_body() ) {
 			return;
-		} else if ( structDecl->get_name() == "__cfa__parent_vtable" ) {
+		} else if ( structDecl->get_name() == "__cfavir_type_info" ) {
 			pvt_decl = structDecl;
 		}
Index: sts/array-container/.expect/array-md-sbscr-cases.txt
===================================================================
--- tests/array-container/.expect/array-md-sbscr-cases.txt	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ 	(revision )
@@ -1,1 +1,0 @@
-done
Index: tests/array-container/.expect/array-md-sbscr-cases.x64.txt
===================================================================
--- tests/array-container/.expect/array-md-sbscr-cases.x64.txt	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
+++ tests/array-container/.expect/array-md-sbscr-cases.x64.txt	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -0,0 +1,1 @@
+done
Index: tests/exceptions/virtual-cast.cfa
===================================================================
--- tests/exceptions/virtual-cast.cfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ tests/exceptions/virtual-cast.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -16,10 +16,10 @@
 // Hand defined alpha virtual type:
 struct __cfatid_struct_alpha {
-	__cfa__parent_vtable const * parent;
+	__cfavir_type_info parent;
 };
 
-__attribute__(( section(".gnu.linkonce.__cfatid_alpha") ))
+__attribute__(( cfa_linkonce ))
 struct __cfatid_struct_alpha __cfatid_alpha = {
-	(__cfa__parent_vtable *)0,
+	(__cfavir_type_info *)0,
 };
 
Index: tests/exceptions/virtual-poly.cfa
===================================================================
--- tests/exceptions/virtual-poly.cfa	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ tests/exceptions/virtual-poly.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,10 +10,10 @@
 
 struct __cfatid_struct_mono_base {
-    __cfa__parent_vtable const * parent;
+    __cfavir_type_info const * parent;
 };
 
-__attribute__(( section(".gnu.linkonce.__cfatid_mono_base") ))
+__attribute__(( cfa_linkonce ))
 struct __cfatid_struct_mono_base __cfatid_mono_base = {
-    (__cfa__parent_vtable *)0,
+    (__cfavir_type_info *)0,
 };
 
@@ -58,5 +58,5 @@
 forall(U)
 struct __cfatid_struct_poly_base {
-    __cfa__parent_vtable const * parent;
+    __cfavir_type_info const * parent;
 };
 
@@ -87,5 +87,5 @@
 
 __cfatid_struct_poly_base(int) __cfatid_poly_base @= {
-	(__cfa__parent_vtable *)0,
+	(__cfavir_type_info *)0,
 };
 __cfatid_struct_poly_child(int) __cfatid_poly_child = {
Index: tests/io/.expect/manipulatorsOutput4.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput4.txt	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
+++ tests/io/.expect/manipulatorsOutput4.txt	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -0,0 +1,226 @@
+1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
+1e-26 10e-27 +10e-27       10e-27      +10e-27 10.00000e-27 +10.00000e-27 00000010e-27 +0000010e-27 10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27
+1e-25 100e-27 +100e-27      100e-27     +100e-27 100.00000e-27 +100.00000e-27 00000100e-27 +0000100e-27 100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27
+1e-24 1e-24 +1e-24        1e-24       +1e-24  1.00000e-24 +1.00000e-24 00000001e-24 +0000001e-24 01.00000e-24 +1.00000e-24 1e-24        +1e-24       1.00000e-24  +1.00000e-24 1e-24        +1e-24       1.00000e-24  +1.00000e-24
+1e-23 10e-24 +10e-24       10e-24      +10e-24 10.00000e-24 +10.00000e-24 00000010e-24 +0000010e-24 10.00000e-24 +10.00000e-24 10e-24       +10e-24      10.00000e-24 +10.00000e-24 10e-24       +10e-24      10.00000e-24 +10.00000e-24
+1e-22 100e-24 +100e-24      100e-24     +100e-24 100.00000e-24 +100.00000e-24 00000100e-24 +0000100e-24 100.00000e-24 +100.00000e-24 100e-24      +100e-24     100.00000e-24 +100.00000e-24 100e-24      +100e-24     100.00000e-24 +100.00000e-24
+1e-21 1e-21 +1e-21        1e-21       +1e-21  1.00000e-21 +1.00000e-21 00000001e-21 +0000001e-21 01.00000e-21 +1.00000e-21 1e-21        +1e-21       1.00000e-21  +1.00000e-21 1e-21        +1e-21       1.00000e-21  +1.00000e-21
+1e-20 10e-21 +10e-21       10e-21      +10e-21 10.00000e-21 +10.00000e-21 00000010e-21 +0000010e-21 10.00000e-21 +10.00000e-21 10e-21       +10e-21      10.00000e-21 +10.00000e-21 10e-21       +10e-21      10.00000e-21 +10.00000e-21
+1e-19 100e-21 +100e-21      100e-21     +100e-21 100.00000e-21 +100.00000e-21 00000100e-21 +0000100e-21 100.00000e-21 +100.00000e-21 100e-21      +100e-21     100.00000e-21 +100.00000e-21 100e-21      +100e-21     100.00000e-21 +100.00000e-21
+1e-18 1e-18 +1e-18        1e-18       +1e-18  1.00000e-18 +1.00000e-18 00000001e-18 +0000001e-18 01.00000e-18 +1.00000e-18 1e-18        +1e-18       1.00000e-18  +1.00000e-18 1e-18        +1e-18       1.00000e-18  +1.00000e-18
+1e-17 10e-18 +10e-18       10e-18      +10e-18 10.00000e-18 +10.00000e-18 00000010e-18 +0000010e-18 10.00000e-18 +10.00000e-18 10e-18       +10e-18      10.00000e-18 +10.00000e-18 10e-18       +10e-18      10.00000e-18 +10.00000e-18
+1e-16 100e-18 +100e-18      100e-18     +100e-18 100.00000e-18 +100.00000e-18 00000100e-18 +0000100e-18 100.00000e-18 +100.00000e-18 100e-18      +100e-18     100.00000e-18 +100.00000e-18 100e-18      +100e-18     100.00000e-18 +100.00000e-18
+1e-15 1e-15 +1e-15        1e-15       +1e-15  1.00000e-15 +1.00000e-15 00000001e-15 +0000001e-15 01.00000e-15 +1.00000e-15 1e-15        +1e-15       1.00000e-15  +1.00000e-15 1e-15        +1e-15       1.00000e-15  +1.00000e-15
+1e-14 10e-15 +10e-15       10e-15      +10e-15 10.00000e-15 +10.00000e-15 00000010e-15 +0000010e-15 10.00000e-15 +10.00000e-15 10e-15       +10e-15      10.00000e-15 +10.00000e-15 10e-15       +10e-15      10.00000e-15 +10.00000e-15
+1e-13 100e-15 +100e-15      100e-15     +100e-15 100.00000e-15 +100.00000e-15 00000100e-15 +0000100e-15 100.00000e-15 +100.00000e-15 100e-15      +100e-15     100.00000e-15 +100.00000e-15 100e-15      +100e-15     100.00000e-15 +100.00000e-15
+1e-12 1e-12 +1e-12        1e-12       +1e-12  1.00000e-12 +1.00000e-12 00000001e-12 +0000001e-12 01.00000e-12 +1.00000e-12 1e-12        +1e-12       1.00000e-12  +1.00000e-12 1e-12        +1e-12       1.00000e-12  +1.00000e-12
+1e-11 10e-12 +10e-12       10e-12      +10e-12 10.00000e-12 +10.00000e-12 00000010e-12 +0000010e-12 10.00000e-12 +10.00000e-12 10e-12       +10e-12      10.00000e-12 +10.00000e-12 10e-12       +10e-12      10.00000e-12 +10.00000e-12
+1e-10 100e-12 +100e-12      100e-12     +100e-12 100.00000e-12 +100.00000e-12 00000100e-12 +0000100e-12 100.00000e-12 +100.00000e-12 100e-12      +100e-12     100.00000e-12 +100.00000e-12 100e-12      +100e-12     100.00000e-12 +100.00000e-12
+1e-09 1e-9 +1e-9         1e-9        +1e-9   1.00000e-9  +1.00000e-9 000000001e-9 +00000001e-9 001.00000e-9 +01.00000e-9 1e-9         +1e-9        1.00000e-9   +1.00000e-9  1e-9         +1e-9        1.00000e-9   +1.00000e-9 
+1e-08 10e-9 +10e-9        10e-9       +10e-9  10.00000e-9 +10.00000e-9 000000010e-9 +00000010e-9 010.00000e-9 +10.00000e-9 10e-9        +10e-9       10.00000e-9  +10.00000e-9 10e-9        +10e-9       10.00000e-9  +10.00000e-9
+1e-07 100e-9 +100e-9       100e-9      +100e-9 100.00000e-9 +100.00000e-9 000000100e-9 +00000100e-9 100.00000e-9 +100.00000e-9 100e-9       +100e-9      100.00000e-9 +100.00000e-9 100e-9       +100e-9      100.00000e-9 +100.00000e-9
+1e-06 1e-6 +1e-6         1e-6        +1e-6   1.00000e-6  +1.00000e-6 000000001e-6 +00000001e-6 001.00000e-6 +01.00000e-6 1e-6         +1e-6        1.00000e-6   +1.00000e-6  1e-6         +1e-6        1.00000e-6   +1.00000e-6 
+1e-05 10e-6 +10e-6        10e-6       +10e-6  10.00000e-6 +10.00000e-6 000000010e-6 +00000010e-6 010.00000e-6 +10.00000e-6 10e-6        +10e-6       10.00000e-6  +10.00000e-6 10e-6        +10e-6       10.00000e-6  +10.00000e-6
+0.0001 100e-6 +100e-6       100e-6      +100e-6 100.00000e-6 +100.00000e-6 000000100e-6 +00000100e-6 100.00000e-6 +100.00000e-6 100e-6       +100e-6      100.00000e-6 +100.00000e-6 100e-6       +100e-6      100.00000e-6 +100.00000e-6
+0.001 1e-3 +1e-3         1e-3        +1e-3   1.00000e-3  +1.00000e-3 000000001e-3 +00000001e-3 001.00000e-3 +01.00000e-3 1e-3         +1e-3        1.00000e-3   +1.00000e-3  1e-3         +1e-3        1.00000e-3   +1.00000e-3 
+0.01 10e-3 +10e-3        10e-3       +10e-3  10.00000e-3 +10.00000e-3 000000010e-3 +00000010e-3 010.00000e-3 +10.00000e-3 10e-3        +10e-3       10.00000e-3  +10.00000e-3 10e-3        +10e-3       10.00000e-3  +10.00000e-3
+0.1 100e-3 +100e-3       100e-3      +100e-3 100.00000e-3 +100.00000e-3 000000100e-3 +00000100e-3 100.00000e-3 +100.00000e-3 100e-3       +100e-3      100.00000e-3 +100.00000e-3 100e-3       +100e-3      100.00000e-3 +100.00000e-3
+1. 1e0 +1e0          1e0         +1e0    1.00000e0   +1.00000e0 0000000001e0 +000000001e0 0001.00000e0 +001.00000e0 1e0          +1e0         1.00000e0    +1.00000e0   1e0          +1e0         1.00000e0    +1.00000e0  
+10. 10e0 +10e0         10e0        +10e0   10.00000e0  +10.00000e0 0000000010e0 +000000010e0 0010.00000e0 +010.00000e0 10e0         +10e0        10.00000e0   +10.00000e0  10e0         +10e0        10.00000e0   +10.00000e0 
+100. 100e0 +100e0        100e0       +100e0  100.00000e0 +100.00000e0 0000000100e0 +000000100e0 0100.00000e0 +100.00000e0 100e0        +100e0       100.00000e0  +100.00000e0 100e0        +100e0       100.00000e0  +100.00000e0
+1000. 1e3 +1e3          1e3         +1e3    1.00000e3   +1.00000e3 0000000001e3 +000000001e3 0001.00000e3 +001.00000e3 1e3          +1e3         1.00000e3    +1.00000e3   1e3          +1e3         1.00000e3    +1.00000e3  
+10000. 10e3 +10e3         10e3        +10e3   10.00000e3  +10.00000e3 0000000010e3 +000000010e3 0010.00000e3 +010.00000e3 10e3         +10e3        10.00000e3   +10.00000e3  10e3         +10e3        10.00000e3   +10.00000e3 
+100000. 100e3 +100e3        100e3       +100e3  100.00000e3 +100.00000e3 0000000100e3 +000000100e3 0100.00000e3 +100.00000e3 100e3        +100e3       100.00000e3  +100.00000e3 100e3        +100e3       100.00000e3  +100.00000e3
+1000000. 1e6 +1e6          1e6         +1e6    1.00000e6   +1.00000e6 0000000001e6 +000000001e6 0001.00000e6 +001.00000e6 1e6          +1e6         1.00000e6    +1.00000e6   1e6          +1e6         1.00000e6    +1.00000e6  
+10000000. 10e6 +10e6         10e6        +10e6   10.00000e6  +10.00000e6 0000000010e6 +000000010e6 0010.00000e6 +010.00000e6 10e6         +10e6        10.00000e6   +10.00000e6  10e6         +10e6        10.00000e6   +10.00000e6 
+100000000. 100e6 +100e6        100e6       +100e6  100.00000e6 +100.00000e6 0000000100e6 +000000100e6 0100.00000e6 +100.00000e6 100e6        +100e6       100.00000e6  +100.00000e6 100e6        +100e6       100.00000e6  +100.00000e6
+1000000000. 1e9 +1e9          1e9         +1e9    1.00000e9   +1.00000e9 0000000001e9 +000000001e9 0001.00000e9 +001.00000e9 1e9          +1e9         1.00000e9    +1.00000e9   1e9          +1e9         1.00000e9    +1.00000e9  
+10000000000. 10e9 +10e9         10e9        +10e9   10.00000e9  +10.00000e9 0000000010e9 +000000010e9 0010.00000e9 +010.00000e9 10e9         +10e9        10.00000e9   +10.00000e9  10e9         +10e9        10.00000e9   +10.00000e9 
+100000000000. 100e9 +100e9        100e9       +100e9  100.00000e9 +100.00000e9 0000000100e9 +000000100e9 0100.00000e9 +100.00000e9 100e9        +100e9       100.00000e9  +100.00000e9 100e9        +100e9       100.00000e9  +100.00000e9
+1000000000000. 1e12 +1e12         1e12        +1e12   1.00000e12  +1.00000e12 000000001e12 +00000001e12 001.00000e12 +01.00000e12 1e12         +1e12        1.00000e12   +1.00000e12  1e12         +1e12        1.00000e12   +1.00000e12 
+10000000000000. 10e12 +10e12        10e12       +10e12  10.00000e12 +10.00000e12 000000010e12 +00000010e12 010.00000e12 +10.00000e12 10e12        +10e12       10.00000e12  +10.00000e12 10e12        +10e12       10.00000e12  +10.00000e12
+100000000000000. 100e12 +100e12       100e12      +100e12 100.00000e12 +100.00000e12 000000100e12 +00000100e12 100.00000e12 +100.00000e12 100e12       +100e12      100.00000e12 +100.00000e12 100e12       +100e12      100.00000e12 +100.00000e12
+1e+15 1e15 +1e15         1e15        +1e15   1.00000e15  +1.00000e15 000000001e15 +00000001e15 001.00000e15 +01.00000e15 1e15         +1e15        1.00000e15   +1.00000e15  1e15         +1e15        1.00000e15   +1.00000e15 
+1e+16 10e15 +10e15        10e15       +10e15  10.00000e15 +10.00000e15 000000010e15 +00000010e15 010.00000e15 +10.00000e15 10e15        +10e15       10.00000e15  +10.00000e15 10e15        +10e15       10.00000e15  +10.00000e15
+1e+17 100e15 +100e15       100e15      +100e15 100.00000e15 +100.00000e15 000000100e15 +00000100e15 100.00000e15 +100.00000e15 100e15       +100e15      100.00000e15 +100.00000e15 100e15       +100e15      100.00000e15 +100.00000e15
+1e+18 1e18 +1e18         1e18        +1e18   1.00000e18  +1.00000e18 000000001e18 +00000001e18 001.00000e18 +01.00000e18 1e18         +1e18        1.00000e18   +1.00000e18  1e18         +1e18        1.00000e18   +1.00000e18 
+1e+19 10e18 +10e18        10e18       +10e18  10.00000e18 +10.00000e18 000000010e18 +00000010e18 010.00000e18 +10.00000e18 10e18        +10e18       10.00000e18  +10.00000e18 10e18        +10e18       10.00000e18  +10.00000e18
+1e+20 100e18 +100e18       100e18      +100e18 100.00000e18 +100.00000e18 000000100e18 +00000100e18 100.00000e18 +100.00000e18 100e18       +100e18      100.00000e18 +100.00000e18 100e18       +100e18      100.00000e18 +100.00000e18
+1e+21 1e21 +1e21         1e21        +1e21   1.00000e21  +1.00000e21 000000001e21 +00000001e21 001.00000e21 +01.00000e21 1e21         +1e21        1.00000e21   +1.00000e21  1e21         +1e21        1.00000e21   +1.00000e21 
+1e+22 10e21 +10e21        10e21       +10e21  10.00000e21 +10.00000e21 000000010e21 +00000010e21 010.00000e21 +10.00000e21 10e21        +10e21       10.00000e21  +10.00000e21 10e21        +10e21       10.00000e21  +10.00000e21
+1e+23 100e21 +100e21       100e21      +100e21 100.00000e21 +100.00000e21 000000100e21 +00000100e21 100.00000e21 +100.00000e21 100e21       +100e21      100.00000e21 +100.00000e21 100e21       +100e21      100.00000e21 +100.00000e21
+1e+24 1e24 +1e24         1e24        +1e24   1.00000e24  +1.00000e24 000000001e24 +00000001e24 001.00000e24 +01.00000e24 1e24         +1e24        1.00000e24   +1.00000e24  1e24         +1e24        1.00000e24   +1.00000e24 
+1e+25 10e24 +10e24        10e24       +10e24  10.00000e24 +10.00000e24 000000010e24 +00000010e24 010.00000e24 +10.00000e24 10e24        +10e24       10.00000e24  +10.00000e24 10e24        +10e24       10.00000e24  +10.00000e24
+1e+26 100e24 +100e24       100e24      +100e24 100.00000e24 +100.00000e24 000000100e24 +00000100e24 100.00000e24 +100.00000e24 100e24       +100e24      100.00000e24 +100.00000e24 100e24       +100e24      100.00000e24 +100.00000e24
+1e+27 1e27 +1e27         1e27        +1e27   1.00000e27  +1.00000e27 000000001e27 +00000001e27 001.00000e27 +01.00000e27 1e27         +1e27        1.00000e27   +1.00000e27  1e27         +1e27        1.00000e27   +1.00000e27 
+1e+28 10e27 +10e27        10e27       +10e27  10.00000e27 +10.00000e27 000000010e27 +00000010e27 010.00000e27 +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27
+1e+29 100e27 +100e27       100e27      +100e27 100.00000e27 +100.00000e27 000000100e27 +00000100e27 100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27
+
+1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
+4.2e-26 42e-27 +42e-27       42e-27      +42e-27 42.00000e-27 +42.00000e-27 00000042e-27 +0000042e-27 42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27
+1.764e-24 1.764e-24 +1.764e-24    1.764e-24   +1.764e-24  1.76400e-24 +1.76400e-24 0001.764e-24 +001.764e-24 01.76400e-24 +1.76400e-24 1.764e-24    +1.764e-24   1.76400e-24  +1.76400e-24 1.764e-24    +1.764e-24   1.76400e-24  +1.76400e-24
+7.4088e-23 74.088e-24 +74.088e-24   74.088e-24  +74.088e-24 74.08800e-24 +74.08800e-24 0074.088e-24 +074.088e-24 74.08800e-24 +74.08800e-24 74.088e-24   +74.088e-24  74.08800e-24 +74.08800e-24 74.088e-24   +74.088e-24  74.08800e-24 +74.08800e-24
+3.111696e-21 3.1117e-21 +3.1117e-21   3.1117e-21  +3.1117e-21  3.11170e-21 +3.11170e-21 003.1117e-21 +03.1117e-21 03.11170e-21 +3.11170e-21 3.1117e-21   +3.1117e-21  3.11170e-21  +3.11170e-21 3.1117e-21   +3.1117e-21  3.11170e-21  +3.11170e-21
+1.30691232e-19 130.691e-21 +130.691e-21   130.69e-21  +130.69e-21 130.69123e-21 +130.69123e-21 00130.69e-21 +0130.69e-21 130.69123e-21 +130.69123e-21 130.69e-21   +130.69e-21  130.69123e-21 +130.69123e-21 130.69e-21   +130.69e-21  130.69123e-21 +130.69123e-21
+5.489031744e-18 5.48903e-18 +5.48903e-18    5.489e-18   +5.489e-18  5.48903e-18 +5.48903e-18 0005.489e-18 +005.489e-18 05.48903e-18 +5.48903e-18 5.489e-18    +5.489e-18   5.48903e-18  +5.48903e-18 5.489e-18    +5.489e-18   5.48903e-18  +5.48903e-18
+2.30539333248e-16 230.539e-18 +230.539e-18   230.54e-18  +230.54e-18 230.53933e-18 +230.53933e-18 00230.54e-18 +0230.54e-18 230.53933e-18 +230.53933e-18 230.54e-18   +230.54e-18  230.53933e-18 +230.53933e-18 230.54e-18   +230.54e-18  230.53933e-18 +230.53933e-18
+9.682651996416e-15 9.68265e-15 +9.68265e-15   9.6827e-15  +9.6827e-15  9.68265e-15 +9.68265e-15 009.6827e-15 +09.6827e-15 09.68265e-15 +9.68265e-15 9.6827e-15   +9.6827e-15  9.68265e-15  +9.68265e-15 9.6827e-15   +9.6827e-15  9.68265e-15  +9.68265e-15
+4.06671383849472e-13 406.671e-15 +406.671e-15   406.67e-15  +406.67e-15 406.67138e-15 +406.67138e-15 00406.67e-15 +0406.67e-15 406.67138e-15 +406.67138e-15 406.67e-15   +406.67e-15  406.67138e-15 +406.67138e-15 406.67e-15   +406.67e-15  406.67138e-15 +406.67138e-15
+1.70801981216778e-11 17.0802e-12 +17.0802e-12    17.08e-12   +17.08e-12 17.08020e-12 +17.08020e-12 00017.08e-12 +0017.08e-12 17.08020e-12 +17.08020e-12 17.08e-12    +17.08e-12   17.08020e-12 +17.08020e-12 17.08e-12    +17.08e-12   17.08020e-12 +17.08020e-12
+7.17368321110469e-10 717.368e-12 +717.368e-12   717.37e-12  +717.37e-12 717.36832e-12 +717.36832e-12 00717.37e-12 +0717.37e-12 717.36832e-12 +717.36832e-12 717.37e-12   +717.37e-12  717.36832e-12 +717.36832e-12 717.37e-12   +717.37e-12  717.36832e-12 +717.36832e-12
+3.01294694866397e-08 30.1295e-9 +30.1295e-9    30.129e-9   +30.129e-9  30.12947e-9 +30.12947e-9 00030.129e-9 +0030.129e-9 030.12947e-9 +30.12947e-9 30.129e-9    +30.129e-9   30.12947e-9  +30.12947e-9 30.129e-9    +30.129e-9   30.12947e-9  +30.12947e-9
+1.26543771843887e-06 1.26544e-6 +1.26544e-6    1.2654e-6   +1.2654e-6   1.26544e-6  +1.26544e-6 0001.2654e-6 +001.2654e-6 001.26544e-6 +01.26544e-6 1.2654e-6    +1.2654e-6   1.26544e-6   +1.26544e-6  1.2654e-6    +1.2654e-6   1.26544e-6   +1.26544e-6 
+5.31483841744324e-05 53.1484e-6 +53.1484e-6    53.148e-6   +53.148e-6  53.14838e-6 +53.14838e-6 00053.148e-6 +0053.148e-6 053.14838e-6 +53.14838e-6 53.148e-6    +53.148e-6   53.14838e-6  +53.14838e-6 53.148e-6    +53.148e-6   53.14838e-6  +53.14838e-6
+0.00223223213532616 2.23223e-3 +2.23223e-3    2.2322e-3   +2.2322e-3   2.23223e-3  +2.23223e-3 0002.2322e-3 +002.2322e-3 002.23223e-3 +02.23223e-3 2.2322e-3    +2.2322e-3   2.23223e-3   +2.23223e-3  2.2322e-3    +2.2322e-3   2.23223e-3   +2.23223e-3 
+0.0937537496836987 93.7537e-3 +93.7537e-3    93.754e-3   +93.754e-3  93.75375e-3 +93.75375e-3 00093.754e-3 +0093.754e-3 093.75375e-3 +93.75375e-3 93.754e-3    +93.754e-3   93.75375e-3  +93.75375e-3 93.754e-3    +93.754e-3   93.75375e-3  +93.75375e-3
+3.93765748671535 3.93766e0 +3.93766e0     3.9377e0    +3.9377e0    3.93766e0   +3.93766e0 00003.9377e0 +0003.9377e0 0003.93766e0 +003.93766e0 3.9377e0     +3.9377e0    3.93766e0    +3.93766e0   3.9377e0     +3.9377e0    3.93766e0    +3.93766e0  
+165.381614442045 165.382e0 +165.382e0     165.38e0    +165.38e0  165.38161e0 +165.38161e0 0000165.38e0 +000165.38e0 0165.38161e0 +165.38161e0 165.38e0     +165.38e0    165.38161e0  +165.38161e0 165.38e0     +165.38e0    165.38161e0  +165.38161e0
+6946.02780656587 6.94603e3 +6.94603e3      6.946e3     +6.946e3    6.94603e3   +6.94603e3 000006.946e3 +00006.946e3 0006.94603e3 +006.94603e3 6.946e3      +6.946e3     6.94603e3    +6.94603e3   6.946e3      +6.946e3     6.94603e3    +6.94603e3  
+291733.167875767 291.733e3 +291.733e3     291.73e3    +291.73e3  291.73317e3 +291.73317e3 0000291.73e3 +000291.73e3 0291.73317e3 +291.73317e3 291.73e3     +291.73e3    291.73317e3  +291.73317e3 291.73e3     +291.73e3    291.73317e3  +291.73317e3
+12252793.0507822 12.2528e6 +12.2528e6     12.253e6    +12.253e6   12.25279e6  +12.25279e6 000012.253e6 +00012.253e6 0012.25279e6 +012.25279e6 12.253e6     +12.253e6    12.25279e6   +12.25279e6  12.253e6     +12.253e6    12.25279e6   +12.25279e6 
+514617308.132852 514.617e6 +514.617e6     514.62e6    +514.62e6  514.61731e6 +514.61731e6 0000514.62e6 +000514.62e6 0514.61731e6 +514.61731e6 514.62e6     +514.62e6    514.61731e6  +514.61731e6 514.62e6     +514.62e6    514.61731e6  +514.61731e6
+21613926941.5798 21.6139e9 +21.6139e9     21.614e9    +21.614e9   21.61393e9  +21.61393e9 000021.614e9 +00021.614e9 0021.61393e9 +021.61393e9 21.614e9     +21.614e9    21.61393e9   +21.61393e9  21.614e9     +21.614e9    21.61393e9   +21.61393e9 
+907784931546.352 907.785e9 +907.785e9     907.78e9    +907.78e9  907.78493e9 +907.78493e9 0000907.78e9 +000907.78e9 0907.78493e9 +907.78493e9 907.78e9     +907.78e9    907.78493e9  +907.78493e9 907.78e9     +907.78e9    907.78493e9  +907.78493e9
+38126967124946.8 38.127e12 +38.127e12    38.127e12   +38.127e12  38.12697e12 +38.12697e12 00038.127e12 +0038.127e12 038.12697e12 +38.12697e12 38.127e12    +38.127e12   38.12697e12  +38.12697e12 38.127e12    +38.127e12   38.12697e12  +38.12697e12
+1.60133261924776e+15 1.60133e15 +1.60133e15    1.6013e15   +1.6013e15   1.60133e15  +1.60133e15 0001.6013e15 +001.6013e15 001.60133e15 +01.60133e15 1.6013e15    +1.6013e15   1.60133e15   +1.60133e15  1.6013e15    +1.6013e15   1.60133e15   +1.60133e15 
+6.72559700084061e+16 67.256e15 +67.256e15    67.256e15   +67.256e15  67.25597e15 +67.25597e15 00067.256e15 +0067.256e15 067.25597e15 +67.25597e15 67.256e15    +67.256e15   67.25597e15  +67.25597e15 67.256e15    +67.256e15   67.25597e15  +67.25597e15
+2.82475074035306e+18 2.82475e18 +2.82475e18    2.8248e18   +2.8248e18   2.82475e18  +2.82475e18 0002.8248e18 +002.8248e18 002.82475e18 +02.82475e18 2.8248e18    +2.8248e18   2.82475e18   +2.82475e18  2.8248e18    +2.8248e18   2.82475e18   +2.82475e18 
+1.18639531094828e+20 118.64e18 +118.64e18    118.64e18   +118.64e18 118.63953e18 +118.63953e18 000118.64e18 +00118.64e18 118.63953e18 +118.63953e18 118.64e18    +118.64e18   118.63953e18 +118.63953e18 118.64e18    +118.64e18   118.63953e18 +118.63953e18
+4.98286030598279e+21 4.98286e21 +4.98286e21    4.9829e21   +4.9829e21   4.98286e21  +4.98286e21 0004.9829e21 +004.9829e21 004.98286e21 +04.98286e21 4.9829e21    +4.9829e21   4.98286e21   +4.98286e21  4.9829e21    +4.9829e21   4.98286e21   +4.98286e21 
+2.09280132851277e+23 209.28e21 +209.28e21    209.28e21   +209.28e21 209.28013e21 +209.28013e21 000209.28e21 +00209.28e21 209.28013e21 +209.28013e21 209.28e21    +209.28e21   209.28013e21 +209.28013e21 209.28e21    +209.28e21   209.28013e21 +209.28013e21
+8.78976557975365e+24 8.78977e24 +8.78977e24    8.7898e24   +8.7898e24   8.78977e24  +8.78977e24 0008.7898e24 +008.7898e24 008.78977e24 +08.78977e24 8.7898e24    +8.7898e24   8.78977e24   +8.78977e24  8.7898e24    +8.7898e24   8.78977e24   +8.78977e24 
+3.69170154349653e+26 369.17e24 +369.17e24    369.17e24   +369.17e24 369.17015e24 +369.17015e24 000369.17e24 +00369.17e24 369.17015e24 +369.17015e24 369.17e24    +369.17e24   369.17015e24 +369.17015e24 369.17e24    +369.17e24   369.17015e24 +369.17015e24
+1.55051464826854e+28 15.5051e27 +15.5051e27    15.505e27   +15.505e27  15.50515e27 +15.50515e27 00015.505e27 +0015.505e27 015.50515e27 +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27
+6.51216152272788e+29 651.216e27 +651.216e27    651.22e27   +651.22e27 651.21615e27 +651.21615e27 000651.22e27 +00651.22e27 651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27
+
+1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
+1e-26 10e-27 +10e-27       10e-27      +10e-27 10.00000e-27 +10.00000e-27 00000010e-27 +0000010e-27 10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27
+1e-25 100e-27 +100e-27      100e-27     +100e-27 100.00000e-27 +100.00000e-27 00000100e-27 +0000100e-27 100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27
+1e-24 1y +1y        1y       +1y  1.00000y +1.00000y 00000001y +0000001y 01.00000y +1.00000y 1y           +1y          1.00000y     +1.00000y    1y           +1y          1.00000y     +1.00000y   
+1e-23 10y +10y       10y      +10y 10.00000y +10.00000y 00000010y +0000010y 10.00000y +10.00000y 10y          +10y         10.00000y    +10.00000y   10y          +10y         10.00000y    +10.00000y  
+1e-22 100y +100y      100y     +100y 100.00000y +100.00000y 00000100y +0000100y 100.00000y +100.00000y 100y         +100y        100.00000y   +100.00000y  100y         +100y        100.00000y   +100.00000y 
+1e-21 1z +1z        1z       +1z  1.00000z +1.00000z 00000001z +0000001z 01.00000z +1.00000z 1z           +1z          1.00000z     +1.00000z    1z           +1z          1.00000z     +1.00000z   
+1e-20 10z +10z       10z      +10z 10.00000z +10.00000z 00000010z +0000010z 10.00000z +10.00000z 10z          +10z         10.00000z    +10.00000z   10z          +10z         10.00000z    +10.00000z  
+1e-19 100z +100z      100z     +100z 100.00000z +100.00000z 00000100z +0000100z 100.00000z +100.00000z 100z         +100z        100.00000z   +100.00000z  100z         +100z        100.00000z   +100.00000z 
+1e-18 1a +1a        1a       +1a  1.00000a +1.00000a 00000001a +0000001a 01.00000a +1.00000a 1a           +1a          1.00000a     +1.00000a    1a           +1a          1.00000a     +1.00000a   
+1e-17 10a +10a       10a      +10a 10.00000a +10.00000a 00000010a +0000010a 10.00000a +10.00000a 10a          +10a         10.00000a    +10.00000a   10a          +10a         10.00000a    +10.00000a  
+1e-16 100a +100a      100a     +100a 100.00000a +100.00000a 00000100a +0000100a 100.00000a +100.00000a 100a         +100a        100.00000a   +100.00000a  100a         +100a        100.00000a   +100.00000a 
+1e-15 1f +1f        1f       +1f  1.00000f +1.00000f 00000001f +0000001f 01.00000f +1.00000f 1f           +1f          1.00000f     +1.00000f    1f           +1f          1.00000f     +1.00000f   
+1e-14 10f +10f       10f      +10f 10.00000f +10.00000f 00000010f +0000010f 10.00000f +10.00000f 10f          +10f         10.00000f    +10.00000f   10f          +10f         10.00000f    +10.00000f  
+1e-13 100f +100f      100f     +100f 100.00000f +100.00000f 00000100f +0000100f 100.00000f +100.00000f 100f         +100f        100.00000f   +100.00000f  100f         +100f        100.00000f   +100.00000f 
+1e-12 1p +1p        1p       +1p  1.00000p +1.00000p 00000001p +0000001p 01.00000p +1.00000p 1p           +1p          1.00000p     +1.00000p    1p           +1p          1.00000p     +1.00000p   
+1e-11 10p +10p       10p      +10p 10.00000p +10.00000p 00000010p +0000010p 10.00000p +10.00000p 10p          +10p         10.00000p    +10.00000p   10p          +10p         10.00000p    +10.00000p  
+1e-10 100p +100p      100p     +100p 100.00000p +100.00000p 00000100p +0000100p 100.00000p +100.00000p 100p         +100p        100.00000p   +100.00000p  100p         +100p        100.00000p   +100.00000p 
+1e-09 1n +1n         1n        +1n   1.00000n  +1.00000n 000000001n +00000001n 001.00000n +01.00000n 1n           +1n          1.00000n     +1.00000n    1n           +1n          1.00000n     +1.00000n   
+1e-08 10n +10n        10n       +10n  10.00000n +10.00000n 000000010n +00000010n 010.00000n +10.00000n 10n          +10n         10.00000n    +10.00000n   10n          +10n         10.00000n    +10.00000n  
+1e-07 100n +100n       100n      +100n 100.00000n +100.00000n 000000100n +00000100n 100.00000n +100.00000n 100n         +100n        100.00000n   +100.00000n  100n         +100n        100.00000n   +100.00000n 
+1e-06 1u +1u         1u        +1u   1.00000u  +1.00000u 000000001u +00000001u 001.00000u +01.00000u 1u           +1u          1.00000u     +1.00000u    1u           +1u          1.00000u     +1.00000u   
+1e-05 10u +10u        10u       +10u  10.00000u +10.00000u 000000010u +00000010u 010.00000u +10.00000u 10u          +10u         10.00000u    +10.00000u   10u          +10u         10.00000u    +10.00000u  
+0.0001 100u +100u       100u      +100u 100.00000u +100.00000u 000000100u +00000100u 100.00000u +100.00000u 100u         +100u        100.00000u   +100.00000u  100u         +100u        100.00000u   +100.00000u 
+0.001 1m +1m         1m        +1m   1.00000m  +1.00000m 000000001m +00000001m 001.00000m +01.00000m 1m           +1m          1.00000m     +1.00000m    1m           +1m          1.00000m     +1.00000m   
+0.01 10m +10m        10m       +10m  10.00000m +10.00000m 000000010m +00000010m 010.00000m +10.00000m 10m          +10m         10.00000m    +10.00000m   10m          +10m         10.00000m    +10.00000m  
+0.1 100m +100m       100m      +100m 100.00000m +100.00000m 000000100m +00000100m 100.00000m +100.00000m 100m         +100m        100.00000m   +100.00000m  100m         +100m        100.00000m   +100.00000m 
+1. 1 +1          1         +1    1.00000   +1.00000 0000000001 +000000001 0001.00000 +001.00000 1            +1           1.00000      +1.00000     1            +1           1.00000      +1.00000    
+10. 10 +10         10        +10   10.00000  +10.00000 0000000010 +000000010 0010.00000 +010.00000 10           +10          10.00000     +10.00000    10           +10          10.00000     +10.00000   
+100. 100 +100        100       +100  100.00000 +100.00000 0000000100 +000000100 0100.00000 +100.00000 100          +100         100.00000    +100.00000   100          +100         100.00000    +100.00000  
+1000. 1K +1K          1K         +1K    1.00000K   +1.00000K 0000000001K +000000001K 0001.00000K +001.00000K 1K           +1K          1.00000K     +1.00000K    1K           +1K          1.00000K     +1.00000K   
+10000. 10K +10K         10K        +10K   10.00000K  +10.00000K 0000000010K +000000010K 0010.00000K +010.00000K 10K          +10K         10.00000K    +10.00000K   10K          +10K         10.00000K    +10.00000K  
+100000. 100K +100K        100K       +100K  100.00000K +100.00000K 0000000100K +000000100K 0100.00000K +100.00000K 100K         +100K        100.00000K   +100.00000K  100K         +100K        100.00000K   +100.00000K 
+1000000. 1M +1M          1M         +1M    1.00000M   +1.00000M 0000000001M +000000001M 0001.00000M +001.00000M 1M           +1M          1.00000M     +1.00000M    1M           +1M          1.00000M     +1.00000M   
+10000000. 10M +10M         10M        +10M   10.00000M  +10.00000M 0000000010M +000000010M 0010.00000M +010.00000M 10M          +10M         10.00000M    +10.00000M   10M          +10M         10.00000M    +10.00000M  
+100000000. 100M +100M        100M       +100M  100.00000M +100.00000M 0000000100M +000000100M 0100.00000M +100.00000M 100M         +100M        100.00000M   +100.00000M  100M         +100M        100.00000M   +100.00000M 
+1000000000. 1G +1G          1G         +1G    1.00000G   +1.00000G 0000000001G +000000001G 0001.00000G +001.00000G 1G           +1G          1.00000G     +1.00000G    1G           +1G          1.00000G     +1.00000G   
+10000000000. 10G +10G         10G        +10G   10.00000G  +10.00000G 0000000010G +000000010G 0010.00000G +010.00000G 10G          +10G         10.00000G    +10.00000G   10G          +10G         10.00000G    +10.00000G  
+100000000000. 100G +100G        100G       +100G  100.00000G +100.00000G 0000000100G +000000100G 0100.00000G +100.00000G 100G         +100G        100.00000G   +100.00000G  100G         +100G        100.00000G   +100.00000G 
+1000000000000. 1T +1T         1T        +1T   1.00000T  +1.00000T 000000001T +00000001T 001.00000T +01.00000T 1T           +1T          1.00000T     +1.00000T    1T           +1T          1.00000T     +1.00000T   
+10000000000000. 10T +10T        10T       +10T  10.00000T +10.00000T 000000010T +00000010T 010.00000T +10.00000T 10T          +10T         10.00000T    +10.00000T   10T          +10T         10.00000T    +10.00000T  
+100000000000000. 100T +100T       100T      +100T 100.00000T +100.00000T 000000100T +00000100T 100.00000T +100.00000T 100T         +100T        100.00000T   +100.00000T  100T         +100T        100.00000T   +100.00000T 
+1e+15 1P +1P         1P        +1P   1.00000P  +1.00000P 000000001P +00000001P 001.00000P +01.00000P 1P           +1P          1.00000P     +1.00000P    1P           +1P          1.00000P     +1.00000P   
+1e+16 10P +10P        10P       +10P  10.00000P +10.00000P 000000010P +00000010P 010.00000P +10.00000P 10P          +10P         10.00000P    +10.00000P   10P          +10P         10.00000P    +10.00000P  
+1e+17 100P +100P       100P      +100P 100.00000P +100.00000P 000000100P +00000100P 100.00000P +100.00000P 100P         +100P        100.00000P   +100.00000P  100P         +100P        100.00000P   +100.00000P 
+1e+18 1E +1E         1E        +1E   1.00000E  +1.00000E 000000001E +00000001E 001.00000E +01.00000E 1E           +1E          1.00000E     +1.00000E    1E           +1E          1.00000E     +1.00000E   
+1e+19 10E +10E        10E       +10E  10.00000E +10.00000E 000000010E +00000010E 010.00000E +10.00000E 10E          +10E         10.00000E    +10.00000E   10E          +10E         10.00000E    +10.00000E  
+1e+20 100E +100E       100E      +100E 100.00000E +100.00000E 000000100E +00000100E 100.00000E +100.00000E 100E         +100E        100.00000E   +100.00000E  100E         +100E        100.00000E   +100.00000E 
+1e+21 1Z +1Z         1Z        +1Z   1.00000Z  +1.00000Z 000000001Z +00000001Z 001.00000Z +01.00000Z 1Z           +1Z          1.00000Z     +1.00000Z    1Z           +1Z          1.00000Z     +1.00000Z   
+1e+22 10Z +10Z        10Z       +10Z  10.00000Z +10.00000Z 000000010Z +00000010Z 010.00000Z +10.00000Z 10Z          +10Z         10.00000Z    +10.00000Z   10Z          +10Z         10.00000Z    +10.00000Z  
+1e+23 100Z +100Z       100Z      +100Z 100.00000Z +100.00000Z 000000100Z +00000100Z 100.00000Z +100.00000Z 100Z         +100Z        100.00000Z   +100.00000Z  100Z         +100Z        100.00000Z   +100.00000Z 
+1e+24 1Y +1Y         1Y        +1Y   1.00000Y  +1.00000Y 000000001Y +00000001Y 001.00000Y +01.00000Y 1Y           +1Y          1.00000Y     +1.00000Y    1Y           +1Y          1.00000Y     +1.00000Y   
+1e+25 10Y +10Y        10Y       +10Y  10.00000Y +10.00000Y 000000010Y +00000010Y 010.00000Y +10.00000Y 10Y          +10Y         10.00000Y    +10.00000Y   10Y          +10Y         10.00000Y    +10.00000Y  
+1e+26 100Y +100Y       100Y      +100Y 100.00000Y +100.00000Y 000000100Y +00000100Y 100.00000Y +100.00000Y 100Y         +100Y        100.00000Y   +100.00000Y  100Y         +100Y        100.00000Y   +100.00000Y 
+1e+27 1e27 +1e27         1e27        +1e27   1.00000e27  +1.00000e27 000000001e27 +00000001e27 001.00000e27 +01.00000e27 1e27         +1e27        1.00000e27   +1.00000e27  1e27         +1e27        1.00000e27   +1.00000e27 
+1e+28 10e27 +10e27        10e27       +10e27  10.00000e27 +10.00000e27 000000010e27 +00000010e27 010.00000e27 +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27
+1e+29 100e27 +100e27       100e27      +100e27 100.00000e27 +100.00000e27 000000100e27 +00000100e27 100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27
+
+1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
+4.2e-26 42e-27 +42e-27       42e-27      +42e-27 42.00000e-27 +42.00000e-27 00000042e-27 +0000042e-27 42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27
+1.764e-24 1.764y +1.764y    1.764y   +1.764y  1.76400y +1.76400y 0001.764y +001.764y 01.76400y +1.76400y 1.764y       +1.764y      1.76400y     +1.76400y    1.764y       +1.764y      1.76400y     +1.76400y   
+7.4088e-23 74.088y +74.088y   74.088y  +74.088y 74.08800y +74.08800y 0074.088y +074.088y 74.08800y +74.08800y 74.088y      +74.088y     74.08800y    +74.08800y   74.088y      +74.088y     74.08800y    +74.08800y  
+3.111696e-21 3.1117z +3.1117z   3.1117z  +3.1117z  3.11170z +3.11170z 003.1117z +03.1117z 03.11170z +3.11170z 3.1117z      +3.1117z     3.11170z     +3.11170z    3.1117z      +3.1117z     3.11170z     +3.11170z   
+1.30691232e-19 130.691z +130.691z   130.69z  +130.69z 130.69123z +130.69123z 00130.69z +0130.69z 130.69123z +130.69123z 130.69z      +130.69z     130.69123z   +130.69123z  130.69z      +130.69z     130.69123z   +130.69123z 
+5.489031744e-18 5.48903a +5.48903a    5.489a   +5.489a  5.48903a +5.48903a 0005.489a +005.489a 05.48903a +5.48903a 5.489a       +5.489a      5.48903a     +5.48903a    5.489a       +5.489a      5.48903a     +5.48903a   
+2.30539333248e-16 230.539a +230.539a   230.54a  +230.54a 230.53933a +230.53933a 00230.54a +0230.54a 230.53933a +230.53933a 230.54a      +230.54a     230.53933a   +230.53933a  230.54a      +230.54a     230.53933a   +230.53933a 
+9.682651996416e-15 9.68265f +9.68265f   9.6827f  +9.6827f  9.68265f +9.68265f 009.6827f +09.6827f 09.68265f +9.68265f 9.6827f      +9.6827f     9.68265f     +9.68265f    9.6827f      +9.6827f     9.68265f     +9.68265f   
+4.06671383849472e-13 406.671f +406.671f   406.67f  +406.67f 406.67138f +406.67138f 00406.67f +0406.67f 406.67138f +406.67138f 406.67f      +406.67f     406.67138f   +406.67138f  406.67f      +406.67f     406.67138f   +406.67138f 
+1.70801981216778e-11 17.0802p +17.0802p    17.08p   +17.08p 17.08020p +17.08020p 00017.08p +0017.08p 17.08020p +17.08020p 17.08p       +17.08p      17.08020p    +17.08020p   17.08p       +17.08p      17.08020p    +17.08020p  
+7.17368321110469e-10 717.368p +717.368p   717.37p  +717.37p 717.36832p +717.36832p 00717.37p +0717.37p 717.36832p +717.36832p 717.37p      +717.37p     717.36832p   +717.36832p  717.37p      +717.37p     717.36832p   +717.36832p 
+3.01294694866397e-08 30.1295n +30.1295n    30.129n   +30.129n  30.12947n +30.12947n 00030.129n +0030.129n 030.12947n +30.12947n 30.129n      +30.129n     30.12947n    +30.12947n   30.129n      +30.129n     30.12947n    +30.12947n  
+1.26543771843887e-06 1.26544u +1.26544u    1.2654u   +1.2654u   1.26544u  +1.26544u 0001.2654u +001.2654u 001.26544u +01.26544u 1.2654u      +1.2654u     1.26544u     +1.26544u    1.2654u      +1.2654u     1.26544u     +1.26544u   
+5.31483841744324e-05 53.1484u +53.1484u    53.148u   +53.148u  53.14838u +53.14838u 00053.148u +0053.148u 053.14838u +53.14838u 53.148u      +53.148u     53.14838u    +53.14838u   53.148u      +53.148u     53.14838u    +53.14838u  
+0.00223223213532616 2.23223m +2.23223m    2.2322m   +2.2322m   2.23223m  +2.23223m 0002.2322m +002.2322m 002.23223m +02.23223m 2.2322m      +2.2322m     2.23223m     +2.23223m    2.2322m      +2.2322m     2.23223m     +2.23223m   
+0.0937537496836987 93.7537m +93.7537m    93.754m   +93.754m  93.75375m +93.75375m 00093.754m +0093.754m 093.75375m +93.75375m 93.754m      +93.754m     93.75375m    +93.75375m   93.754m      +93.754m     93.75375m    +93.75375m  
+3.93765748671535 3.93766 +3.93766     3.9377    +3.9377    3.93766   +3.93766 00003.9377 +0003.9377 0003.93766 +003.93766 3.9377       +3.9377      3.93766      +3.93766     3.9377       +3.9377      3.93766      +3.93766    
+165.381614442045 165.382 +165.382     165.38    +165.38  165.38161 +165.38161 0000165.38 +000165.38 0165.38161 +165.38161 165.38       +165.38      165.38161    +165.38161   165.38       +165.38      165.38161    +165.38161  
+6946.02780656587 6.94603K +6.94603K      6.946K     +6.946K    6.94603K   +6.94603K 000006.946K +00006.946K 0006.94603K +006.94603K 6.946K       +6.946K      6.94603K     +6.94603K    6.946K       +6.946K      6.94603K     +6.94603K   
+291733.167875767 291.733K +291.733K     291.73K    +291.73K  291.73317K +291.73317K 0000291.73K +000291.73K 0291.73317K +291.73317K 291.73K      +291.73K     291.73317K   +291.73317K  291.73K      +291.73K     291.73317K   +291.73317K 
+12252793.0507822 12.2528M +12.2528M     12.253M    +12.253M   12.25279M  +12.25279M 000012.253M +00012.253M 0012.25279M +012.25279M 12.253M      +12.253M     12.25279M    +12.25279M   12.253M      +12.253M     12.25279M    +12.25279M  
+514617308.132852 514.617M +514.617M     514.62M    +514.62M  514.61731M +514.61731M 0000514.62M +000514.62M 0514.61731M +514.61731M 514.62M      +514.62M     514.61731M   +514.61731M  514.62M      +514.62M     514.61731M   +514.61731M 
+21613926941.5798 21.6139G +21.6139G     21.614G    +21.614G   21.61393G  +21.61393G 000021.614G +00021.614G 0021.61393G +021.61393G 21.614G      +21.614G     21.61393G    +21.61393G   21.614G      +21.614G     21.61393G    +21.61393G  
+907784931546.352 907.785G +907.785G     907.78G    +907.78G  907.78493G +907.78493G 0000907.78G +000907.78G 0907.78493G +907.78493G 907.78G      +907.78G     907.78493G   +907.78493G  907.78G      +907.78G     907.78493G   +907.78493G 
+38126967124946.8 38.127T +38.127T    38.127T   +38.127T  38.12697T +38.12697T 00038.127T +0038.127T 038.12697T +38.12697T 38.127T      +38.127T     38.12697T    +38.12697T   38.127T      +38.127T     38.12697T    +38.12697T  
+1.60133261924776e+15 1.60133P +1.60133P    1.6013P   +1.6013P   1.60133P  +1.60133P 0001.6013P +001.6013P 001.60133P +01.60133P 1.6013P      +1.6013P     1.60133P     +1.60133P    1.6013P      +1.6013P     1.60133P     +1.60133P   
+6.72559700084061e+16 67.256P +67.256P    67.256P   +67.256P  67.25597P +67.25597P 00067.256P +0067.256P 067.25597P +67.25597P 67.256P      +67.256P     67.25597P    +67.25597P   67.256P      +67.256P     67.25597P    +67.25597P  
+2.82475074035306e+18 2.82475E +2.82475E    2.8248E   +2.8248E   2.82475E  +2.82475E 0002.8248E +002.8248E 002.82475E +02.82475E 2.8248E      +2.8248E     2.82475E     +2.82475E    2.8248E      +2.8248E     2.82475E     +2.82475E   
+1.18639531094828e+20 118.64E +118.64E    118.64E   +118.64E 118.63953E +118.63953E 000118.64E +00118.64E 118.63953E +118.63953E 118.64E      +118.64E     118.63953E   +118.63953E  118.64E      +118.64E     118.63953E   +118.63953E 
+4.98286030598279e+21 4.98286Z +4.98286Z    4.9829Z   +4.9829Z   4.98286Z  +4.98286Z 0004.9829Z +004.9829Z 004.98286Z +04.98286Z 4.9829Z      +4.9829Z     4.98286Z     +4.98286Z    4.9829Z      +4.9829Z     4.98286Z     +4.98286Z   
+2.09280132851277e+23 209.28Z +209.28Z    209.28Z   +209.28Z 209.28013Z +209.28013Z 000209.28Z +00209.28Z 209.28013Z +209.28013Z 209.28Z      +209.28Z     209.28013Z   +209.28013Z  209.28Z      +209.28Z     209.28013Z   +209.28013Z 
+8.78976557975365e+24 8.78977Y +8.78977Y    8.7898Y   +8.7898Y   8.78977Y  +8.78977Y 0008.7898Y +008.7898Y 008.78977Y +08.78977Y 8.7898Y      +8.7898Y     8.78977Y     +8.78977Y    8.7898Y      +8.7898Y     8.78977Y     +8.78977Y   
+3.69170154349653e+26 369.17Y +369.17Y    369.17Y   +369.17Y 369.17015Y +369.17015Y 000369.17Y +00369.17Y 369.17015Y +369.17015Y 369.17Y      +369.17Y     369.17015Y   +369.17015Y  369.17Y      +369.17Y     369.17015Y   +369.17015Y 
+1.55051464826854e+28 15.5051e27 +15.5051e27    15.505e27   +15.505e27  15.50515e27 +15.50515e27 00015.505e27 +0015.505e27 015.50515e27 +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27
+6.51216152272788e+29 651.216e27 +651.216e27    651.22e27   +651.22e27 651.21615e27 +651.21615e27 000651.22e27 +00651.22e27 651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27
+
+-1e-27 -1e-27 -1e-27       -1e-27       -1e-27 -1.00000e-27 -1.00000e-27 -0000001e-27 -0000001e-27 -1.00000e-27 -1.00000e-27 -1e-27       -1e-27       -1.00000e-27 -1.00000e-27 -1e-27       -1e-27       -1.00000e-27 -1.00000e-27
+-4.2e-26 -42e-27 -42e-27      -42e-27      -42e-27 -42.00000e-27 -42.00000e-27 -0000042e-27 -0000042e-27 -42.00000e-27 -42.00000e-27 -42e-27      -42e-27      -42.00000e-27 -42.00000e-27 -42e-27      -42e-27      -42.00000e-27 -42.00000e-27
+-1.764e-24 -1.764e-24 -1.764e-24   -1.764e-24   -1.764e-24 -1.76400e-24 -1.76400e-24 -001.764e-24 -001.764e-24 -1.76400e-24 -1.76400e-24 -1.764e-24   -1.764e-24   -1.76400e-24 -1.76400e-24 -1.764e-24   -1.764e-24   -1.76400e-24 -1.76400e-24
+-7.4088e-23 -74.088e-24 -74.088e-24  -74.088e-24  -74.088e-24 -74.08800e-24 -74.08800e-24 -074.088e-24 -074.088e-24 -74.08800e-24 -74.08800e-24 -74.088e-24  -74.088e-24  -74.08800e-24 -74.08800e-24 -74.088e-24  -74.088e-24  -74.08800e-24 -74.08800e-24
+-3.111696e-21 -3.1117e-21 -3.1117e-21  -3.1117e-21  -3.1117e-21 -3.11170e-21 -3.11170e-21 -03.1117e-21 -03.1117e-21 -3.11170e-21 -3.11170e-21 -3.1117e-21  -3.1117e-21  -3.11170e-21 -3.11170e-21 -3.1117e-21  -3.1117e-21  -3.11170e-21 -3.11170e-21
+-1.30691232e-19 -130.691e-21 -130.691e-21  -130.69e-21  -130.69e-21 -130.69123e-21 -130.69123e-21 -0130.69e-21 -0130.69e-21 -130.69123e-21 -130.69123e-21 -130.69e-21  -130.69e-21  -130.69123e-21 -130.69123e-21 -130.69e-21  -130.69e-21  -130.69123e-21 -130.69123e-21
+-5.489031744e-18 -5.48903e-18 -5.48903e-18   -5.489e-18   -5.489e-18 -5.48903e-18 -5.48903e-18 -005.489e-18 -005.489e-18 -5.48903e-18 -5.48903e-18 -5.489e-18   -5.489e-18   -5.48903e-18 -5.48903e-18 -5.489e-18   -5.489e-18   -5.48903e-18 -5.48903e-18
+-2.30539333248e-16 -230.539e-18 -230.539e-18  -230.54e-18  -230.54e-18 -230.53933e-18 -230.53933e-18 -0230.54e-18 -0230.54e-18 -230.53933e-18 -230.53933e-18 -230.54e-18  -230.54e-18  -230.53933e-18 -230.53933e-18 -230.54e-18  -230.54e-18  -230.53933e-18 -230.53933e-18
+-9.682651996416e-15 -9.68265e-15 -9.68265e-15  -9.6827e-15  -9.6827e-15 -9.68265e-15 -9.68265e-15 -09.6827e-15 -09.6827e-15 -9.68265e-15 -9.68265e-15 -9.6827e-15  -9.6827e-15  -9.68265e-15 -9.68265e-15 -9.6827e-15  -9.6827e-15  -9.68265e-15 -9.68265e-15
+-4.06671383849472e-13 -406.671e-15 -406.671e-15  -406.67e-15  -406.67e-15 -406.67138e-15 -406.67138e-15 -0406.67e-15 -0406.67e-15 -406.67138e-15 -406.67138e-15 -406.67e-15  -406.67e-15  -406.67138e-15 -406.67138e-15 -406.67e-15  -406.67e-15  -406.67138e-15 -406.67138e-15
+-1.70801981216778e-11 -17.0802e-12 -17.0802e-12   -17.08e-12   -17.08e-12 -17.08020e-12 -17.08020e-12 -0017.08e-12 -0017.08e-12 -17.08020e-12 -17.08020e-12 -17.08e-12   -17.08e-12   -17.08020e-12 -17.08020e-12 -17.08e-12   -17.08e-12   -17.08020e-12 -17.08020e-12
+-7.17368321110469e-10 -717.368e-12 -717.368e-12  -717.37e-12  -717.37e-12 -717.36832e-12 -717.36832e-12 -0717.37e-12 -0717.37e-12 -717.36832e-12 -717.36832e-12 -717.37e-12  -717.37e-12  -717.36832e-12 -717.36832e-12 -717.37e-12  -717.37e-12  -717.36832e-12 -717.36832e-12
+-3.01294694866397e-08 -30.1295e-9 -30.1295e-9   -30.129e-9   -30.129e-9 -30.12947e-9 -30.12947e-9 -0030.129e-9 -0030.129e-9 -30.12947e-9 -30.12947e-9 -30.129e-9   -30.129e-9   -30.12947e-9 -30.12947e-9 -30.129e-9   -30.129e-9   -30.12947e-9 -30.12947e-9
+-1.26543771843887e-06 -1.26544e-6 -1.26544e-6   -1.2654e-6   -1.2654e-6  -1.26544e-6  -1.26544e-6 -001.2654e-6 -001.2654e-6 -01.26544e-6 -01.26544e-6 -1.2654e-6   -1.2654e-6   -1.26544e-6  -1.26544e-6  -1.2654e-6   -1.2654e-6   -1.26544e-6  -1.26544e-6 
+-5.31483841744324e-05 -53.1484e-6 -53.1484e-6   -53.148e-6   -53.148e-6 -53.14838e-6 -53.14838e-6 -0053.148e-6 -0053.148e-6 -53.14838e-6 -53.14838e-6 -53.148e-6   -53.148e-6   -53.14838e-6 -53.14838e-6 -53.148e-6   -53.148e-6   -53.14838e-6 -53.14838e-6
+-0.00223223213532616 -2.23223e-3 -2.23223e-3   -2.2322e-3   -2.2322e-3  -2.23223e-3  -2.23223e-3 -002.2322e-3 -002.2322e-3 -02.23223e-3 -02.23223e-3 -2.2322e-3   -2.2322e-3   -2.23223e-3  -2.23223e-3  -2.2322e-3   -2.2322e-3   -2.23223e-3  -2.23223e-3 
+-0.0937537496836987 -93.7537e-3 -93.7537e-3   -93.754e-3   -93.754e-3 -93.75375e-3 -93.75375e-3 -0093.754e-3 -0093.754e-3 -93.75375e-3 -93.75375e-3 -93.754e-3   -93.754e-3   -93.75375e-3 -93.75375e-3 -93.754e-3   -93.754e-3   -93.75375e-3 -93.75375e-3
+-3.93765748671535 -3.93766e0 -3.93766e0    -3.9377e0    -3.9377e0   -3.93766e0   -3.93766e0 -0003.9377e0 -0003.9377e0 -003.93766e0 -003.93766e0 -3.9377e0    -3.9377e0    -3.93766e0   -3.93766e0   -3.9377e0    -3.9377e0    -3.93766e0   -3.93766e0  
+-165.381614442045 -165.382e0 -165.382e0    -165.38e0    -165.38e0 -165.38161e0 -165.38161e0 -000165.38e0 -000165.38e0 -165.38161e0 -165.38161e0 -165.38e0    -165.38e0    -165.38161e0 -165.38161e0 -165.38e0    -165.38e0    -165.38161e0 -165.38161e0
+-6946.02780656587 -6.94603e3 -6.94603e3     -6.946e3     -6.946e3   -6.94603e3   -6.94603e3 -00006.946e3 -00006.946e3 -006.94603e3 -006.94603e3 -6.946e3     -6.946e3     -6.94603e3   -6.94603e3   -6.946e3     -6.946e3     -6.94603e3   -6.94603e3  
+-291733.167875767 -291.733e3 -291.733e3    -291.73e3    -291.73e3 -291.73317e3 -291.73317e3 -000291.73e3 -000291.73e3 -291.73317e3 -291.73317e3 -291.73e3    -291.73e3    -291.73317e3 -291.73317e3 -291.73e3    -291.73e3    -291.73317e3 -291.73317e3
+-12252793.0507822 -12.2528e6 -12.2528e6    -12.253e6    -12.253e6  -12.25279e6  -12.25279e6 -00012.253e6 -00012.253e6 -012.25279e6 -012.25279e6 -12.253e6    -12.253e6    -12.25279e6  -12.25279e6  -12.253e6    -12.253e6    -12.25279e6  -12.25279e6 
+-514617308.132852 -514.617e6 -514.617e6    -514.62e6    -514.62e6 -514.61731e6 -514.61731e6 -000514.62e6 -000514.62e6 -514.61731e6 -514.61731e6 -514.62e6    -514.62e6    -514.61731e6 -514.61731e6 -514.62e6    -514.62e6    -514.61731e6 -514.61731e6
+-21613926941.5798 -21.6139e9 -21.6139e9    -21.614e9    -21.614e9  -21.61393e9  -21.61393e9 -00021.614e9 -00021.614e9 -021.61393e9 -021.61393e9 -21.614e9    -21.614e9    -21.61393e9  -21.61393e9  -21.614e9    -21.614e9    -21.61393e9  -21.61393e9 
+-907784931546.352 -907.785e9 -907.785e9    -907.78e9    -907.78e9 -907.78493e9 -907.78493e9 -000907.78e9 -000907.78e9 -907.78493e9 -907.78493e9 -907.78e9    -907.78e9    -907.78493e9 -907.78493e9 -907.78e9    -907.78e9    -907.78493e9 -907.78493e9
+-38126967124946.8 -38.127e12 -38.127e12   -38.127e12   -38.127e12 -38.12697e12 -38.12697e12 -0038.127e12 -0038.127e12 -38.12697e12 -38.12697e12 -38.127e12   -38.127e12   -38.12697e12 -38.12697e12 -38.127e12   -38.127e12   -38.12697e12 -38.12697e12
+-1.60133261924776e+15 -1.60133e15 -1.60133e15   -1.6013e15   -1.6013e15  -1.60133e15  -1.60133e15 -001.6013e15 -001.6013e15 -01.60133e15 -01.60133e15 -1.6013e15   -1.6013e15   -1.60133e15  -1.60133e15  -1.6013e15   -1.6013e15   -1.60133e15  -1.60133e15 
+-6.72559700084061e+16 -67.256e15 -67.256e15   -67.256e15   -67.256e15 -67.25597e15 -67.25597e15 -0067.256e15 -0067.256e15 -67.25597e15 -67.25597e15 -67.256e15   -67.256e15   -67.25597e15 -67.25597e15 -67.256e15   -67.256e15   -67.25597e15 -67.25597e15
+-2.82475074035306e+18 -2.82475e18 -2.82475e18   -2.8248e18   -2.8248e18  -2.82475e18  -2.82475e18 -002.8248e18 -002.8248e18 -02.82475e18 -02.82475e18 -2.8248e18   -2.8248e18   -2.82475e18  -2.82475e18  -2.8248e18   -2.8248e18   -2.82475e18  -2.82475e18 
+-1.18639531094828e+20 -118.64e18 -118.64e18   -118.64e18   -118.64e18 -118.63953e18 -118.63953e18 -00118.64e18 -00118.64e18 -118.63953e18 -118.63953e18 -118.64e18   -118.64e18   -118.63953e18 -118.63953e18 -118.64e18   -118.64e18   -118.63953e18 -118.63953e18
+-4.98286030598279e+21 -4.98286e21 -4.98286e21   -4.9829e21   -4.9829e21  -4.98286e21  -4.98286e21 -004.9829e21 -004.9829e21 -04.98286e21 -04.98286e21 -4.9829e21   -4.9829e21   -4.98286e21  -4.98286e21  -4.9829e21   -4.9829e21   -4.98286e21  -4.98286e21 
+-2.09280132851277e+23 -209.28e21 -209.28e21   -209.28e21   -209.28e21 -209.28013e21 -209.28013e21 -00209.28e21 -00209.28e21 -209.28013e21 -209.28013e21 -209.28e21   -209.28e21   -209.28013e21 -209.28013e21 -209.28e21   -209.28e21   -209.28013e21 -209.28013e21
+-8.78976557975365e+24 -8.78977e24 -8.78977e24   -8.7898e24   -8.7898e24  -8.78977e24  -8.78977e24 -008.7898e24 -008.7898e24 -08.78977e24 -08.78977e24 -8.7898e24   -8.7898e24   -8.78977e24  -8.78977e24  -8.7898e24   -8.7898e24   -8.78977e24  -8.78977e24 
+-3.69170154349653e+26 -369.17e24 -369.17e24   -369.17e24   -369.17e24 -369.17015e24 -369.17015e24 -00369.17e24 -00369.17e24 -369.17015e24 -369.17015e24 -369.17e24   -369.17e24   -369.17015e24 -369.17015e24 -369.17e24   -369.17e24   -369.17015e24 -369.17015e24
+-1.55051464826854e+28 -15.5051e27 -15.5051e27   -15.505e27   -15.505e27 -15.50515e27 -15.50515e27 -0015.505e27 -0015.505e27 -15.50515e27 -15.50515e27 -15.505e27   -15.505e27   -15.50515e27 -15.50515e27 -15.505e27   -15.505e27   -15.50515e27 -15.50515e27
+-6.51216152272788e+29 -651.216e27 -651.216e27   -651.22e27   -651.22e27 -651.21615e27 -651.21615e27 -00651.22e27 -00651.22e27 -651.21615e27 -651.21615e27 -651.22e27   -651.22e27   -651.21615e27 -651.21615e27 -651.22e27   -651.22e27   -651.21615e27 -651.21615e27
Index: sts/io/.expect/manipulatorsOutput4.x64.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput4.x64.txt	(revision 6312b1c59df970f3d77597b98cd68dc5fd8dd3ec)
+++ 	(revision )
@@ -1,226 +1,0 @@
-1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
-1e-26 10e-27 +10e-27       10e-27      +10e-27 10.00000e-27 +10.00000e-27 00000010e-27 +0000010e-27 10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27
-1e-25 100e-27 +100e-27      100e-27     +100e-27 100.00000e-27 +100.00000e-27 00000100e-27 +0000100e-27 100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27
-1e-24 1e-24 +1e-24        1e-24       +1e-24  1.00000e-24 +1.00000e-24 00000001e-24 +0000001e-24 01.00000e-24 +1.00000e-24 1e-24        +1e-24       1.00000e-24  +1.00000e-24 1e-24        +1e-24       1.00000e-24  +1.00000e-24
-1e-23 10e-24 +10e-24       10e-24      +10e-24 10.00000e-24 +10.00000e-24 00000010e-24 +0000010e-24 10.00000e-24 +10.00000e-24 10e-24       +10e-24      10.00000e-24 +10.00000e-24 10e-24       +10e-24      10.00000e-24 +10.00000e-24
-1e-22 100e-24 +100e-24      100e-24     +100e-24 100.00000e-24 +100.00000e-24 00000100e-24 +0000100e-24 100.00000e-24 +100.00000e-24 100e-24      +100e-24     100.00000e-24 +100.00000e-24 100e-24      +100e-24     100.00000e-24 +100.00000e-24
-1e-21 1e-21 +1e-21        1e-21       +1e-21  1.00000e-21 +1.00000e-21 00000001e-21 +0000001e-21 01.00000e-21 +1.00000e-21 1e-21        +1e-21       1.00000e-21  +1.00000e-21 1e-21        +1e-21       1.00000e-21  +1.00000e-21
-1e-20 10e-21 +10e-21       10e-21      +10e-21 10.00000e-21 +10.00000e-21 00000010e-21 +0000010e-21 10.00000e-21 +10.00000e-21 10e-21       +10e-21      10.00000e-21 +10.00000e-21 10e-21       +10e-21      10.00000e-21 +10.00000e-21
-1e-19 100e-21 +100e-21      100e-21     +100e-21 100.00000e-21 +100.00000e-21 00000100e-21 +0000100e-21 100.00000e-21 +100.00000e-21 100e-21      +100e-21     100.00000e-21 +100.00000e-21 100e-21      +100e-21     100.00000e-21 +100.00000e-21
-1e-18 1e-18 +1e-18        1e-18       +1e-18  1.00000e-18 +1.00000e-18 00000001e-18 +0000001e-18 01.00000e-18 +1.00000e-18 1e-18        +1e-18       1.00000e-18  +1.00000e-18 1e-18        +1e-18       1.00000e-18  +1.00000e-18
-1e-17 10e-18 +10e-18       10e-18      +10e-18 10.00000e-18 +10.00000e-18 00000010e-18 +0000010e-18 10.00000e-18 +10.00000e-18 10e-18       +10e-18      10.00000e-18 +10.00000e-18 10e-18       +10e-18      10.00000e-18 +10.00000e-18
-1e-16 100e-18 +100e-18      100e-18     +100e-18 100.00000e-18 +100.00000e-18 00000100e-18 +0000100e-18 100.00000e-18 +100.00000e-18 100e-18      +100e-18     100.00000e-18 +100.00000e-18 100e-18      +100e-18     100.00000e-18 +100.00000e-18
-1e-15 1e-15 +1e-15        1e-15       +1e-15  1.00000e-15 +1.00000e-15 00000001e-15 +0000001e-15 01.00000e-15 +1.00000e-15 1e-15        +1e-15       1.00000e-15  +1.00000e-15 1e-15        +1e-15       1.00000e-15  +1.00000e-15
-1e-14 10e-15 +10e-15       10e-15      +10e-15 10.00000e-15 +10.00000e-15 00000010e-15 +0000010e-15 10.00000e-15 +10.00000e-15 10e-15       +10e-15      10.00000e-15 +10.00000e-15 10e-15       +10e-15      10.00000e-15 +10.00000e-15
-1e-13 100e-15 +100e-15      100e-15     +100e-15 100.00000e-15 +100.00000e-15 00000100e-15 +0000100e-15 100.00000e-15 +100.00000e-15 100e-15      +100e-15     100.00000e-15 +100.00000e-15 100e-15      +100e-15     100.00000e-15 +100.00000e-15
-1e-12 1e-12 +1e-12        1e-12       +1e-12  1.00000e-12 +1.00000e-12 00000001e-12 +0000001e-12 01.00000e-12 +1.00000e-12 1e-12        +1e-12       1.00000e-12  +1.00000e-12 1e-12        +1e-12       1.00000e-12  +1.00000e-12
-1e-11 10e-12 +10e-12       10e-12      +10e-12 10.00000e-12 +10.00000e-12 00000010e-12 +0000010e-12 10.00000e-12 +10.00000e-12 10e-12       +10e-12      10.00000e-12 +10.00000e-12 10e-12       +10e-12      10.00000e-12 +10.00000e-12
-1e-10 100e-12 +100e-12      100e-12     +100e-12 100.00000e-12 +100.00000e-12 00000100e-12 +0000100e-12 100.00000e-12 +100.00000e-12 100e-12      +100e-12     100.00000e-12 +100.00000e-12 100e-12      +100e-12     100.00000e-12 +100.00000e-12
-1e-09 1e-9 +1e-9         1e-9        +1e-9   1.00000e-9  +1.00000e-9 000000001e-9 +00000001e-9 001.00000e-9 +01.00000e-9 1e-9         +1e-9        1.00000e-9   +1.00000e-9  1e-9         +1e-9        1.00000e-9   +1.00000e-9 
-1e-08 10e-9 +10e-9        10e-9       +10e-9  10.00000e-9 +10.00000e-9 000000010e-9 +00000010e-9 010.00000e-9 +10.00000e-9 10e-9        +10e-9       10.00000e-9  +10.00000e-9 10e-9        +10e-9       10.00000e-9  +10.00000e-9
-1e-07 100e-9 +100e-9       100e-9      +100e-9 100.00000e-9 +100.00000e-9 000000100e-9 +00000100e-9 100.00000e-9 +100.00000e-9 100e-9       +100e-9      100.00000e-9 +100.00000e-9 100e-9       +100e-9      100.00000e-9 +100.00000e-9
-1e-06 1e-6 +1e-6         1e-6        +1e-6   1.00000e-6  +1.00000e-6 000000001e-6 +00000001e-6 001.00000e-6 +01.00000e-6 1e-6         +1e-6        1.00000e-6   +1.00000e-6  1e-6         +1e-6        1.00000e-6   +1.00000e-6 
-1e-05 10e-6 +10e-6        10e-6       +10e-6  10.00000e-6 +10.00000e-6 000000010e-6 +00000010e-6 010.00000e-6 +10.00000e-6 10e-6        +10e-6       10.00000e-6  +10.00000e-6 10e-6        +10e-6       10.00000e-6  +10.00000e-6
-0.0001 100e-6 +100e-6       100e-6      +100e-6 100.00000e-6 +100.00000e-6 000000100e-6 +00000100e-6 100.00000e-6 +100.00000e-6 100e-6       +100e-6      100.00000e-6 +100.00000e-6 100e-6       +100e-6      100.00000e-6 +100.00000e-6
-0.001 1e-3 +1e-3         1e-3        +1e-3   1.00000e-3  +1.00000e-3 000000001e-3 +00000001e-3 001.00000e-3 +01.00000e-3 1e-3         +1e-3        1.00000e-3   +1.00000e-3  1e-3         +1e-3        1.00000e-3   +1.00000e-3 
-0.01 10e-3 +10e-3        10e-3       +10e-3  10.00000e-3 +10.00000e-3 000000010e-3 +00000010e-3 010.00000e-3 +10.00000e-3 10e-3        +10e-3       10.00000e-3  +10.00000e-3 10e-3        +10e-3       10.00000e-3  +10.00000e-3
-0.1 100e-3 +100e-3       100e-3      +100e-3 100.00000e-3 +100.00000e-3 000000100e-3 +00000100e-3 100.00000e-3 +100.00000e-3 100e-3       +100e-3      100.00000e-3 +100.00000e-3 100e-3       +100e-3      100.00000e-3 +100.00000e-3
-1. 1e0 +1e0          1e0         +1e0    1.00000e0   +1.00000e0 0000000001e0 +000000001e0 0001.00000e0 +001.00000e0 1e0          +1e0         1.00000e0    +1.00000e0   1e0          +1e0         1.00000e0    +1.00000e0  
-10. 10e0 +10e0         10e0        +10e0   10.00000e0  +10.00000e0 0000000010e0 +000000010e0 0010.00000e0 +010.00000e0 10e0         +10e0        10.00000e0   +10.00000e0  10e0         +10e0        10.00000e0   +10.00000e0 
-100. 100e0 +100e0        100e0       +100e0  100.00000e0 +100.00000e0 0000000100e0 +000000100e0 0100.00000e0 +100.00000e0 100e0        +100e0       100.00000e0  +100.00000e0 100e0        +100e0       100.00000e0  +100.00000e0
-1000. 1e3 +1e3          1e3         +1e3    1.00000e3   +1.00000e3 0000000001e3 +000000001e3 0001.00000e3 +001.00000e3 1e3          +1e3         1.00000e3    +1.00000e3   1e3          +1e3         1.00000e3    +1.00000e3  
-10000. 10e3 +10e3         10e3        +10e3   10.00000e3  +10.00000e3 0000000010e3 +000000010e3 0010.00000e3 +010.00000e3 10e3         +10e3        10.00000e3   +10.00000e3  10e3         +10e3        10.00000e3   +10.00000e3 
-100000. 100e3 +100e3        100e3       +100e3  100.00000e3 +100.00000e3 0000000100e3 +000000100e3 0100.00000e3 +100.00000e3 100e3        +100e3       100.00000e3  +100.00000e3 100e3        +100e3       100.00000e3  +100.00000e3
-1000000. 1e6 +1e6          1e6         +1e6    1.00000e6   +1.00000e6 0000000001e6 +000000001e6 0001.00000e6 +001.00000e6 1e6          +1e6         1.00000e6    +1.00000e6   1e6          +1e6         1.00000e6    +1.00000e6  
-10000000. 10e6 +10e6         10e6        +10e6   10.00000e6  +10.00000e6 0000000010e6 +000000010e6 0010.00000e6 +010.00000e6 10e6         +10e6        10.00000e6   +10.00000e6  10e6         +10e6        10.00000e6   +10.00000e6 
-100000000. 100e6 +100e6        100e6       +100e6  100.00000e6 +100.00000e6 0000000100e6 +000000100e6 0100.00000e6 +100.00000e6 100e6        +100e6       100.00000e6  +100.00000e6 100e6        +100e6       100.00000e6  +100.00000e6
-1000000000. 1e9 +1e9          1e9         +1e9    1.00000e9   +1.00000e9 0000000001e9 +000000001e9 0001.00000e9 +001.00000e9 1e9          +1e9         1.00000e9    +1.00000e9   1e9          +1e9         1.00000e9    +1.00000e9  
-10000000000. 10e9 +10e9         10e9        +10e9   10.00000e9  +10.00000e9 0000000010e9 +000000010e9 0010.00000e9 +010.00000e9 10e9         +10e9        10.00000e9   +10.00000e9  10e9         +10e9        10.00000e9   +10.00000e9 
-100000000000. 100e9 +100e9        100e9       +100e9  100.00000e9 +100.00000e9 0000000100e9 +000000100e9 0100.00000e9 +100.00000e9 100e9        +100e9       100.00000e9  +100.00000e9 100e9        +100e9       100.00000e9  +100.00000e9
-1000000000000. 1e12 +1e12         1e12        +1e12   1.00000e12  +1.00000e12 000000001e12 +00000001e12 001.00000e12 +01.00000e12 1e12         +1e12        1.00000e12   +1.00000e12  1e12         +1e12        1.00000e12   +1.00000e12 
-10000000000000. 10e12 +10e12        10e12       +10e12  10.00000e12 +10.00000e12 000000010e12 +00000010e12 010.00000e12 +10.00000e12 10e12        +10e12       10.00000e12  +10.00000e12 10e12        +10e12       10.00000e12  +10.00000e12
-100000000000000. 100e12 +100e12       100e12      +100e12 100.00000e12 +100.00000e12 000000100e12 +00000100e12 100.00000e12 +100.00000e12 100e12       +100e12      100.00000e12 +100.00000e12 100e12       +100e12      100.00000e12 +100.00000e12
-1e+15 1e15 +1e15         1e15        +1e15   1.00000e15  +1.00000e15 000000001e15 +00000001e15 001.00000e15 +01.00000e15 1e15         +1e15        1.00000e15   +1.00000e15  1e15         +1e15        1.00000e15   +1.00000e15 
-1e+16 10e15 +10e15        10e15       +10e15  10.00000e15 +10.00000e15 000000010e15 +00000010e15 010.00000e15 +10.00000e15 10e15        +10e15       10.00000e15  +10.00000e15 10e15        +10e15       10.00000e15  +10.00000e15
-1e+17 100e15 +100e15       100e15      +100e15 100.00000e15 +100.00000e15 000000100e15 +00000100e15 100.00000e15 +100.00000e15 100e15       +100e15      100.00000e15 +100.00000e15 100e15       +100e15      100.00000e15 +100.00000e15
-1e+18 1e18 +1e18         1e18        +1e18   1.00000e18  +1.00000e18 000000001e18 +00000001e18 001.00000e18 +01.00000e18 1e18         +1e18        1.00000e18   +1.00000e18  1e18         +1e18        1.00000e18   +1.00000e18 
-1e+19 10e18 +10e18        10e18       +10e18  10.00000e18 +10.00000e18 000000010e18 +00000010e18 010.00000e18 +10.00000e18 10e18        +10e18       10.00000e18  +10.00000e18 10e18        +10e18       10.00000e18  +10.00000e18
-1e+20 100e18 +100e18       100e18      +100e18 100.00000e18 +100.00000e18 000000100e18 +00000100e18 100.00000e18 +100.00000e18 100e18       +100e18      100.00000e18 +100.00000e18 100e18       +100e18      100.00000e18 +100.00000e18
-1e+21 1e21 +1e21         1e21        +1e21   1.00000e21  +1.00000e21 000000001e21 +00000001e21 001.00000e21 +01.00000e21 1e21         +1e21        1.00000e21   +1.00000e21  1e21         +1e21        1.00000e21   +1.00000e21 
-1e+22 10e21 +10e21        10e21       +10e21  10.00000e21 +10.00000e21 000000010e21 +00000010e21 010.00000e21 +10.00000e21 10e21        +10e21       10.00000e21  +10.00000e21 10e21        +10e21       10.00000e21  +10.00000e21
-1e+23 100e21 +100e21       100e21      +100e21 100.00000e21 +100.00000e21 000000100e21 +00000100e21 100.00000e21 +100.00000e21 100e21       +100e21      100.00000e21 +100.00000e21 100e21       +100e21      100.00000e21 +100.00000e21
-1e+24 1e24 +1e24         1e24        +1e24   1.00000e24  +1.00000e24 000000001e24 +00000001e24 001.00000e24 +01.00000e24 1e24         +1e24        1.00000e24   +1.00000e24  1e24         +1e24        1.00000e24   +1.00000e24 
-1e+25 10e24 +10e24        10e24       +10e24  10.00000e24 +10.00000e24 000000010e24 +00000010e24 010.00000e24 +10.00000e24 10e24        +10e24       10.00000e24  +10.00000e24 10e24        +10e24       10.00000e24  +10.00000e24
-1e+26 100e24 +100e24       100e24      +100e24 100.00000e24 +100.00000e24 000000100e24 +00000100e24 100.00000e24 +100.00000e24 100e24       +100e24      100.00000e24 +100.00000e24 100e24       +100e24      100.00000e24 +100.00000e24
-1e+27 1e27 +1e27         1e27        +1e27   1.00000e27  +1.00000e27 000000001e27 +00000001e27 001.00000e27 +01.00000e27 1e27         +1e27        1.00000e27   +1.00000e27  1e27         +1e27        1.00000e27   +1.00000e27 
-1e+28 10e27 +10e27        10e27       +10e27  10.00000e27 +10.00000e27 000000010e27 +00000010e27 010.00000e27 +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27
-1e+29 100e27 +100e27       100e27      +100e27 100.00000e27 +100.00000e27 000000100e27 +00000100e27 100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27
-
-1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
-4.2e-26 42e-27 +42e-27       42e-27      +42e-27 42.00000e-27 +42.00000e-27 00000042e-27 +0000042e-27 42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27
-1.764e-24 1.764e-24 +1.764e-24    1.764e-24   +1.764e-24  1.76400e-24 +1.76400e-24 0001.764e-24 +001.764e-24 01.76400e-24 +1.76400e-24 1.764e-24    +1.764e-24   1.76400e-24  +1.76400e-24 1.764e-24    +1.764e-24   1.76400e-24  +1.76400e-24
-7.4088e-23 74.088e-24 +74.088e-24   74.088e-24  +74.088e-24 74.08800e-24 +74.08800e-24 0074.088e-24 +074.088e-24 74.08800e-24 +74.08800e-24 74.088e-24   +74.088e-24  74.08800e-24 +74.08800e-24 74.088e-24   +74.088e-24  74.08800e-24 +74.08800e-24
-3.111696e-21 3.1117e-21 +3.1117e-21   3.1117e-21  +3.1117e-21  3.11170e-21 +3.11170e-21 003.1117e-21 +03.1117e-21 03.11170e-21 +3.11170e-21 3.1117e-21   +3.1117e-21  3.11170e-21  +3.11170e-21 3.1117e-21   +3.1117e-21  3.11170e-21  +3.11170e-21
-1.30691232e-19 130.691e-21 +130.691e-21   130.69e-21  +130.69e-21 130.69123e-21 +130.69123e-21 00130.69e-21 +0130.69e-21 130.69123e-21 +130.69123e-21 130.69e-21   +130.69e-21  130.69123e-21 +130.69123e-21 130.69e-21   +130.69e-21  130.69123e-21 +130.69123e-21
-5.489031744e-18 5.48903e-18 +5.48903e-18    5.489e-18   +5.489e-18  5.48903e-18 +5.48903e-18 0005.489e-18 +005.489e-18 05.48903e-18 +5.48903e-18 5.489e-18    +5.489e-18   5.48903e-18  +5.48903e-18 5.489e-18    +5.489e-18   5.48903e-18  +5.48903e-18
-2.30539333248e-16 230.539e-18 +230.539e-18   230.54e-18  +230.54e-18 230.53933e-18 +230.53933e-18 00230.54e-18 +0230.54e-18 230.53933e-18 +230.53933e-18 230.54e-18   +230.54e-18  230.53933e-18 +230.53933e-18 230.54e-18   +230.54e-18  230.53933e-18 +230.53933e-18
-9.682651996416e-15 9.68265e-15 +9.68265e-15   9.6827e-15  +9.6827e-15  9.68265e-15 +9.68265e-15 009.6827e-15 +09.6827e-15 09.68265e-15 +9.68265e-15 9.6827e-15   +9.6827e-15  9.68265e-15  +9.68265e-15 9.6827e-15   +9.6827e-15  9.68265e-15  +9.68265e-15
-4.06671383849472e-13 406.671e-15 +406.671e-15   406.67e-15  +406.67e-15 406.67138e-15 +406.67138e-15 00406.67e-15 +0406.67e-15 406.67138e-15 +406.67138e-15 406.67e-15   +406.67e-15  406.67138e-15 +406.67138e-15 406.67e-15   +406.67e-15  406.67138e-15 +406.67138e-15
-1.70801981216778e-11 17.0802e-12 +17.0802e-12    17.08e-12   +17.08e-12 17.08020e-12 +17.08020e-12 00017.08e-12 +0017.08e-12 17.08020e-12 +17.08020e-12 17.08e-12    +17.08e-12   17.08020e-12 +17.08020e-12 17.08e-12    +17.08e-12   17.08020e-12 +17.08020e-12
-7.17368321110469e-10 717.368e-12 +717.368e-12   717.37e-12  +717.37e-12 717.36832e-12 +717.36832e-12 00717.37e-12 +0717.37e-12 717.36832e-12 +717.36832e-12 717.37e-12   +717.37e-12  717.36832e-12 +717.36832e-12 717.37e-12   +717.37e-12  717.36832e-12 +717.36832e-12
-3.01294694866397e-08 30.1295e-9 +30.1295e-9    30.129e-9   +30.129e-9  30.12947e-9 +30.12947e-9 00030.129e-9 +0030.129e-9 030.12947e-9 +30.12947e-9 30.129e-9    +30.129e-9   30.12947e-9  +30.12947e-9 30.129e-9    +30.129e-9   30.12947e-9  +30.12947e-9
-1.26543771843887e-06 1.26544e-6 +1.26544e-6    1.2654e-6   +1.2654e-6   1.26544e-6  +1.26544e-6 0001.2654e-6 +001.2654e-6 001.26544e-6 +01.26544e-6 1.2654e-6    +1.2654e-6   1.26544e-6   +1.26544e-6  1.2654e-6    +1.2654e-6   1.26544e-6   +1.26544e-6 
-5.31483841744324e-05 53.1484e-6 +53.1484e-6    53.148e-6   +53.148e-6  53.14838e-6 +53.14838e-6 00053.148e-6 +0053.148e-6 053.14838e-6 +53.14838e-6 53.148e-6    +53.148e-6   53.14838e-6  +53.14838e-6 53.148e-6    +53.148e-6   53.14838e-6  +53.14838e-6
-0.00223223213532616 2.23223e-3 +2.23223e-3    2.2322e-3   +2.2322e-3   2.23223e-3  +2.23223e-3 0002.2322e-3 +002.2322e-3 002.23223e-3 +02.23223e-3 2.2322e-3    +2.2322e-3   2.23223e-3   +2.23223e-3  2.2322e-3    +2.2322e-3   2.23223e-3   +2.23223e-3 
-0.0937537496836987 93.7537e-3 +93.7537e-3    93.754e-3   +93.754e-3  93.75375e-3 +93.75375e-3 00093.754e-3 +0093.754e-3 093.75375e-3 +93.75375e-3 93.754e-3    +93.754e-3   93.75375e-3  +93.75375e-3 93.754e-3    +93.754e-3   93.75375e-3  +93.75375e-3
-3.93765748671535 3.93766e0 +3.93766e0     3.9377e0    +3.9377e0    3.93766e0   +3.93766e0 00003.9377e0 +0003.9377e0 0003.93766e0 +003.93766e0 3.9377e0     +3.9377e0    3.93766e0    +3.93766e0   3.9377e0     +3.9377e0    3.93766e0    +3.93766e0  
-165.381614442045 165.382e0 +165.382e0     165.38e0    +165.38e0  165.38161e0 +165.38161e0 0000165.38e0 +000165.38e0 0165.38161e0 +165.38161e0 165.38e0     +165.38e0    165.38161e0  +165.38161e0 165.38e0     +165.38e0    165.38161e0  +165.38161e0
-6946.02780656587 6.94603e3 +6.94603e3      6.946e3     +6.946e3    6.94603e3   +6.94603e3 000006.946e3 +00006.946e3 0006.94603e3 +006.94603e3 6.946e3      +6.946e3     6.94603e3    +6.94603e3   6.946e3      +6.946e3     6.94603e3    +6.94603e3  
-291733.167875767 291.733e3 +291.733e3     291.73e3    +291.73e3  291.73317e3 +291.73317e3 0000291.73e3 +000291.73e3 0291.73317e3 +291.73317e3 291.73e3     +291.73e3    291.73317e3  +291.73317e3 291.73e3     +291.73e3    291.73317e3  +291.73317e3
-12252793.0507822 12.2528e6 +12.2528e6     12.253e6    +12.253e6   12.25279e6  +12.25279e6 000012.253e6 +00012.253e6 0012.25279e6 +012.25279e6 12.253e6     +12.253e6    12.25279e6   +12.25279e6  12.253e6     +12.253e6    12.25279e6   +12.25279e6 
-514617308.132852 514.617e6 +514.617e6     514.62e6    +514.62e6  514.61731e6 +514.61731e6 0000514.62e6 +000514.62e6 0514.61731e6 +514.61731e6 514.62e6     +514.62e6    514.61731e6  +514.61731e6 514.62e6     +514.62e6    514.61731e6  +514.61731e6
-21613926941.5798 21.6139e9 +21.6139e9     21.614e9    +21.614e9   21.61393e9  +21.61393e9 000021.614e9 +00021.614e9 0021.61393e9 +021.61393e9 21.614e9     +21.614e9    21.61393e9   +21.61393e9  21.614e9     +21.614e9    21.61393e9   +21.61393e9 
-907784931546.352 907.785e9 +907.785e9     907.78e9    +907.78e9  907.78493e9 +907.78493e9 0000907.78e9 +000907.78e9 0907.78493e9 +907.78493e9 907.78e9     +907.78e9    907.78493e9  +907.78493e9 907.78e9     +907.78e9    907.78493e9  +907.78493e9
-38126967124946.8 38.127e12 +38.127e12    38.127e12   +38.127e12  38.12697e12 +38.12697e12 00038.127e12 +0038.127e12 038.12697e12 +38.12697e12 38.127e12    +38.127e12   38.12697e12  +38.12697e12 38.127e12    +38.127e12   38.12697e12  +38.12697e12
-1.60133261924776e+15 1.60133e15 +1.60133e15    1.6013e15   +1.6013e15   1.60133e15  +1.60133e15 0001.6013e15 +001.6013e15 001.60133e15 +01.60133e15 1.6013e15    +1.6013e15   1.60133e15   +1.60133e15  1.6013e15    +1.6013e15   1.60133e15   +1.60133e15 
-6.72559700084061e+16 67.256e15 +67.256e15    67.256e15   +67.256e15  67.25597e15 +67.25597e15 00067.256e15 +0067.256e15 067.25597e15 +67.25597e15 67.256e15    +67.256e15   67.25597e15  +67.25597e15 67.256e15    +67.256e15   67.25597e15  +67.25597e15
-2.82475074035306e+18 2.82475e18 +2.82475e18    2.8248e18   +2.8248e18   2.82475e18  +2.82475e18 0002.8248e18 +002.8248e18 002.82475e18 +02.82475e18 2.8248e18    +2.8248e18   2.82475e18   +2.82475e18  2.8248e18    +2.8248e18   2.82475e18   +2.82475e18 
-1.18639531094828e+20 118.64e18 +118.64e18    118.64e18   +118.64e18 118.63953e18 +118.63953e18 000118.64e18 +00118.64e18 118.63953e18 +118.63953e18 118.64e18    +118.64e18   118.63953e18 +118.63953e18 118.64e18    +118.64e18   118.63953e18 +118.63953e18
-4.98286030598279e+21 4.98286e21 +4.98286e21    4.9829e21   +4.9829e21   4.98286e21  +4.98286e21 0004.9829e21 +004.9829e21 004.98286e21 +04.98286e21 4.9829e21    +4.9829e21   4.98286e21   +4.98286e21  4.9829e21    +4.9829e21   4.98286e21   +4.98286e21 
-2.09280132851277e+23 209.28e21 +209.28e21    209.28e21   +209.28e21 209.28013e21 +209.28013e21 000209.28e21 +00209.28e21 209.28013e21 +209.28013e21 209.28e21    +209.28e21   209.28013e21 +209.28013e21 209.28e21    +209.28e21   209.28013e21 +209.28013e21
-8.78976557975365e+24 8.78977e24 +8.78977e24    8.7898e24   +8.7898e24   8.78977e24  +8.78977e24 0008.7898e24 +008.7898e24 008.78977e24 +08.78977e24 8.7898e24    +8.7898e24   8.78977e24   +8.78977e24  8.7898e24    +8.7898e24   8.78977e24   +8.78977e24 
-3.69170154349653e+26 369.17e24 +369.17e24    369.17e24   +369.17e24 369.17015e24 +369.17015e24 000369.17e24 +00369.17e24 369.17015e24 +369.17015e24 369.17e24    +369.17e24   369.17015e24 +369.17015e24 369.17e24    +369.17e24   369.17015e24 +369.17015e24
-1.55051464826854e+28 15.5051e27 +15.5051e27    15.505e27   +15.505e27  15.50515e27 +15.50515e27 00015.505e27 +0015.505e27 015.50515e27 +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27
-6.51216152272788e+29 651.216e27 +651.216e27    651.22e27   +651.22e27 651.21615e27 +651.21615e27 000651.22e27 +00651.22e27 651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27
-
-1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
-1e-26 10e-27 +10e-27       10e-27      +10e-27 10.00000e-27 +10.00000e-27 00000010e-27 +0000010e-27 10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27 10e-27       +10e-27      10.00000e-27 +10.00000e-27
-1e-25 100e-27 +100e-27      100e-27     +100e-27 100.00000e-27 +100.00000e-27 00000100e-27 +0000100e-27 100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27 100e-27      +100e-27     100.00000e-27 +100.00000e-27
-1e-24 1y +1y        1y       +1y  1.00000y +1.00000y 00000001y +0000001y 01.00000y +1.00000y 1y           +1y          1.00000y     +1.00000y    1y           +1y          1.00000y     +1.00000y   
-1e-23 10y +10y       10y      +10y 10.00000y +10.00000y 00000010y +0000010y 10.00000y +10.00000y 10y          +10y         10.00000y    +10.00000y   10y          +10y         10.00000y    +10.00000y  
-1e-22 100y +100y      100y     +100y 100.00000y +100.00000y 00000100y +0000100y 100.00000y +100.00000y 100y         +100y        100.00000y   +100.00000y  100y         +100y        100.00000y   +100.00000y 
-1e-21 1z +1z        1z       +1z  1.00000z +1.00000z 00000001z +0000001z 01.00000z +1.00000z 1z           +1z          1.00000z     +1.00000z    1z           +1z          1.00000z     +1.00000z   
-1e-20 10z +10z       10z      +10z 10.00000z +10.00000z 00000010z +0000010z 10.00000z +10.00000z 10z          +10z         10.00000z    +10.00000z   10z          +10z         10.00000z    +10.00000z  
-1e-19 100z +100z      100z     +100z 100.00000z +100.00000z 00000100z +0000100z 100.00000z +100.00000z 100z         +100z        100.00000z   +100.00000z  100z         +100z        100.00000z   +100.00000z 
-1e-18 1a +1a        1a       +1a  1.00000a +1.00000a 00000001a +0000001a 01.00000a +1.00000a 1a           +1a          1.00000a     +1.00000a    1a           +1a          1.00000a     +1.00000a   
-1e-17 10a +10a       10a      +10a 10.00000a +10.00000a 00000010a +0000010a 10.00000a +10.00000a 10a          +10a         10.00000a    +10.00000a   10a          +10a         10.00000a    +10.00000a  
-1e-16 100a +100a      100a     +100a 100.00000a +100.00000a 00000100a +0000100a 100.00000a +100.00000a 100a         +100a        100.00000a   +100.00000a  100a         +100a        100.00000a   +100.00000a 
-1e-15 1f +1f        1f       +1f  1.00000f +1.00000f 00000001f +0000001f 01.00000f +1.00000f 1f           +1f          1.00000f     +1.00000f    1f           +1f          1.00000f     +1.00000f   
-1e-14 10f +10f       10f      +10f 10.00000f +10.00000f 00000010f +0000010f 10.00000f +10.00000f 10f          +10f         10.00000f    +10.00000f   10f          +10f         10.00000f    +10.00000f  
-1e-13 100f +100f      100f     +100f 100.00000f +100.00000f 00000100f +0000100f 100.00000f +100.00000f 100f         +100f        100.00000f   +100.00000f  100f         +100f        100.00000f   +100.00000f 
-1e-12 1p +1p        1p       +1p  1.00000p +1.00000p 00000001p +0000001p 01.00000p +1.00000p 1p           +1p          1.00000p     +1.00000p    1p           +1p          1.00000p     +1.00000p   
-1e-11 10p +10p       10p      +10p 10.00000p +10.00000p 00000010p +0000010p 10.00000p +10.00000p 10p          +10p         10.00000p    +10.00000p   10p          +10p         10.00000p    +10.00000p  
-1e-10 100p +100p      100p     +100p 100.00000p +100.00000p 00000100p +0000100p 100.00000p +100.00000p 100p         +100p        100.00000p   +100.00000p  100p         +100p        100.00000p   +100.00000p 
-1e-09 1n +1n         1n        +1n   1.00000n  +1.00000n 000000001n +00000001n 001.00000n +01.00000n 1n           +1n          1.00000n     +1.00000n    1n           +1n          1.00000n     +1.00000n   
-1e-08 10n +10n        10n       +10n  10.00000n +10.00000n 000000010n +00000010n 010.00000n +10.00000n 10n          +10n         10.00000n    +10.00000n   10n          +10n         10.00000n    +10.00000n  
-1e-07 100n +100n       100n      +100n 100.00000n +100.00000n 000000100n +00000100n 100.00000n +100.00000n 100n         +100n        100.00000n   +100.00000n  100n         +100n        100.00000n   +100.00000n 
-1e-06 1u +1u         1u        +1u   1.00000u  +1.00000u 000000001u +00000001u 001.00000u +01.00000u 1u           +1u          1.00000u     +1.00000u    1u           +1u          1.00000u     +1.00000u   
-1e-05 10u +10u        10u       +10u  10.00000u +10.00000u 000000010u +00000010u 010.00000u +10.00000u 10u          +10u         10.00000u    +10.00000u   10u          +10u         10.00000u    +10.00000u  
-0.0001 100u +100u       100u      +100u 100.00000u +100.00000u 000000100u +00000100u 100.00000u +100.00000u 100u         +100u        100.00000u   +100.00000u  100u         +100u        100.00000u   +100.00000u 
-0.001 1m +1m         1m        +1m   1.00000m  +1.00000m 000000001m +00000001m 001.00000m +01.00000m 1m           +1m          1.00000m     +1.00000m    1m           +1m          1.00000m     +1.00000m   
-0.01 10m +10m        10m       +10m  10.00000m +10.00000m 000000010m +00000010m 010.00000m +10.00000m 10m          +10m         10.00000m    +10.00000m   10m          +10m         10.00000m    +10.00000m  
-0.1 100m +100m       100m      +100m 100.00000m +100.00000m 000000100m +00000100m 100.00000m +100.00000m 100m         +100m        100.00000m   +100.00000m  100m         +100m        100.00000m   +100.00000m 
-1. 1 +1          1         +1    1.00000   +1.00000 0000000001 +000000001 0001.00000 +001.00000 1            +1           1.00000      +1.00000     1            +1           1.00000      +1.00000    
-10. 10 +10         10        +10   10.00000  +10.00000 0000000010 +000000010 0010.00000 +010.00000 10           +10          10.00000     +10.00000    10           +10          10.00000     +10.00000   
-100. 100 +100        100       +100  100.00000 +100.00000 0000000100 +000000100 0100.00000 +100.00000 100          +100         100.00000    +100.00000   100          +100         100.00000    +100.00000  
-1000. 1K +1K          1K         +1K    1.00000K   +1.00000K 0000000001K +000000001K 0001.00000K +001.00000K 1K           +1K          1.00000K     +1.00000K    1K           +1K          1.00000K     +1.00000K   
-10000. 10K +10K         10K        +10K   10.00000K  +10.00000K 0000000010K +000000010K 0010.00000K +010.00000K 10K          +10K         10.00000K    +10.00000K   10K          +10K         10.00000K    +10.00000K  
-100000. 100K +100K        100K       +100K  100.00000K +100.00000K 0000000100K +000000100K 0100.00000K +100.00000K 100K         +100K        100.00000K   +100.00000K  100K         +100K        100.00000K   +100.00000K 
-1000000. 1M +1M          1M         +1M    1.00000M   +1.00000M 0000000001M +000000001M 0001.00000M +001.00000M 1M           +1M          1.00000M     +1.00000M    1M           +1M          1.00000M     +1.00000M   
-10000000. 10M +10M         10M        +10M   10.00000M  +10.00000M 0000000010M +000000010M 0010.00000M +010.00000M 10M          +10M         10.00000M    +10.00000M   10M          +10M         10.00000M    +10.00000M  
-100000000. 100M +100M        100M       +100M  100.00000M +100.00000M 0000000100M +000000100M 0100.00000M +100.00000M 100M         +100M        100.00000M   +100.00000M  100M         +100M        100.00000M   +100.00000M 
-1000000000. 1G +1G          1G         +1G    1.00000G   +1.00000G 0000000001G +000000001G 0001.00000G +001.00000G 1G           +1G          1.00000G     +1.00000G    1G           +1G          1.00000G     +1.00000G   
-10000000000. 10G +10G         10G        +10G   10.00000G  +10.00000G 0000000010G +000000010G 0010.00000G +010.00000G 10G          +10G         10.00000G    +10.00000G   10G          +10G         10.00000G    +10.00000G  
-100000000000. 100G +100G        100G       +100G  100.00000G +100.00000G 0000000100G +000000100G 0100.00000G +100.00000G 100G         +100G        100.00000G   +100.00000G  100G         +100G        100.00000G   +100.00000G 
-1000000000000. 1T +1T         1T        +1T   1.00000T  +1.00000T 000000001T +00000001T 001.00000T +01.00000T 1T           +1T          1.00000T     +1.00000T    1T           +1T          1.00000T     +1.00000T   
-10000000000000. 10T +10T        10T       +10T  10.00000T +10.00000T 000000010T +00000010T 010.00000T +10.00000T 10T          +10T         10.00000T    +10.00000T   10T          +10T         10.00000T    +10.00000T  
-100000000000000. 100T +100T       100T      +100T 100.00000T +100.00000T 000000100T +00000100T 100.00000T +100.00000T 100T         +100T        100.00000T   +100.00000T  100T         +100T        100.00000T   +100.00000T 
-1e+15 1P +1P         1P        +1P   1.00000P  +1.00000P 000000001P +00000001P 001.00000P +01.00000P 1P           +1P          1.00000P     +1.00000P    1P           +1P          1.00000P     +1.00000P   
-1e+16 10P +10P        10P       +10P  10.00000P +10.00000P 000000010P +00000010P 010.00000P +10.00000P 10P          +10P         10.00000P    +10.00000P   10P          +10P         10.00000P    +10.00000P  
-1e+17 100P +100P       100P      +100P 100.00000P +100.00000P 000000100P +00000100P 100.00000P +100.00000P 100P         +100P        100.00000P   +100.00000P  100P         +100P        100.00000P   +100.00000P 
-1e+18 1E +1E         1E        +1E   1.00000E  +1.00000E 000000001E +00000001E 001.00000E +01.00000E 1E           +1E          1.00000E     +1.00000E    1E           +1E          1.00000E     +1.00000E   
-1e+19 10E +10E        10E       +10E  10.00000E +10.00000E 000000010E +00000010E 010.00000E +10.00000E 10E          +10E         10.00000E    +10.00000E   10E          +10E         10.00000E    +10.00000E  
-1e+20 100E +100E       100E      +100E 100.00000E +100.00000E 000000100E +00000100E 100.00000E +100.00000E 100E         +100E        100.00000E   +100.00000E  100E         +100E        100.00000E   +100.00000E 
-1e+21 1Z +1Z         1Z        +1Z   1.00000Z  +1.00000Z 000000001Z +00000001Z 001.00000Z +01.00000Z 1Z           +1Z          1.00000Z     +1.00000Z    1Z           +1Z          1.00000Z     +1.00000Z   
-1e+22 10Z +10Z        10Z       +10Z  10.00000Z +10.00000Z 000000010Z +00000010Z 010.00000Z +10.00000Z 10Z          +10Z         10.00000Z    +10.00000Z   10Z          +10Z         10.00000Z    +10.00000Z  
-1e+23 100Z +100Z       100Z      +100Z 100.00000Z +100.00000Z 000000100Z +00000100Z 100.00000Z +100.00000Z 100Z         +100Z        100.00000Z   +100.00000Z  100Z         +100Z        100.00000Z   +100.00000Z 
-1e+24 1Y +1Y         1Y        +1Y   1.00000Y  +1.00000Y 000000001Y +00000001Y 001.00000Y +01.00000Y 1Y           +1Y          1.00000Y     +1.00000Y    1Y           +1Y          1.00000Y     +1.00000Y   
-1e+25 10Y +10Y        10Y       +10Y  10.00000Y +10.00000Y 000000010Y +00000010Y 010.00000Y +10.00000Y 10Y          +10Y         10.00000Y    +10.00000Y   10Y          +10Y         10.00000Y    +10.00000Y  
-1e+26 100Y +100Y       100Y      +100Y 100.00000Y +100.00000Y 000000100Y +00000100Y 100.00000Y +100.00000Y 100Y         +100Y        100.00000Y   +100.00000Y  100Y         +100Y        100.00000Y   +100.00000Y 
-1e+27 1e27 +1e27         1e27        +1e27   1.00000e27  +1.00000e27 000000001e27 +00000001e27 001.00000e27 +01.00000e27 1e27         +1e27        1.00000e27   +1.00000e27  1e27         +1e27        1.00000e27   +1.00000e27 
-1e+28 10e27 +10e27        10e27       +10e27  10.00000e27 +10.00000e27 000000010e27 +00000010e27 010.00000e27 +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27 10e27        +10e27       10.00000e27  +10.00000e27
-1e+29 100e27 +100e27       100e27      +100e27 100.00000e27 +100.00000e27 000000100e27 +00000100e27 100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27 100e27       +100e27      100.00000e27 +100.00000e27
-
-1e-27 1e-27 +1e-27        1e-27       +1e-27  1.00000e-27 +1.00000e-27 00000001e-27 +0000001e-27 01.00000e-27 +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27 1e-27        +1e-27       1.00000e-27  +1.00000e-27
-4.2e-26 42e-27 +42e-27       42e-27      +42e-27 42.00000e-27 +42.00000e-27 00000042e-27 +0000042e-27 42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27 42e-27       +42e-27      42.00000e-27 +42.00000e-27
-1.764e-24 1.764y +1.764y    1.764y   +1.764y  1.76400y +1.76400y 0001.764y +001.764y 01.76400y +1.76400y 1.764y       +1.764y      1.76400y     +1.76400y    1.764y       +1.764y      1.76400y     +1.76400y   
-7.4088e-23 74.088y +74.088y   74.088y  +74.088y 74.08800y +74.08800y 0074.088y +074.088y 74.08800y +74.08800y 74.088y      +74.088y     74.08800y    +74.08800y   74.088y      +74.088y     74.08800y    +74.08800y  
-3.111696e-21 3.1117z +3.1117z   3.1117z  +3.1117z  3.11170z +3.11170z 003.1117z +03.1117z 03.11170z +3.11170z 3.1117z      +3.1117z     3.11170z     +3.11170z    3.1117z      +3.1117z     3.11170z     +3.11170z   
-1.30691232e-19 130.691z +130.691z   130.69z  +130.69z 130.69123z +130.69123z 00130.69z +0130.69z 130.69123z +130.69123z 130.69z      +130.69z     130.69123z   +130.69123z  130.69z      +130.69z     130.69123z   +130.69123z 
-5.489031744e-18 5.48903a +5.48903a    5.489a   +5.489a  5.48903a +5.48903a 0005.489a +005.489a 05.48903a +5.48903a 5.489a       +5.489a      5.48903a     +5.48903a    5.489a       +5.489a      5.48903a     +5.48903a   
-2.30539333248e-16 230.539a +230.539a   230.54a  +230.54a 230.53933a +230.53933a 00230.54a +0230.54a 230.53933a +230.53933a 230.54a      +230.54a     230.53933a   +230.53933a  230.54a      +230.54a     230.53933a   +230.53933a 
-9.682651996416e-15 9.68265f +9.68265f   9.6827f  +9.6827f  9.68265f +9.68265f 009.6827f +09.6827f 09.68265f +9.68265f 9.6827f      +9.6827f     9.68265f     +9.68265f    9.6827f      +9.6827f     9.68265f     +9.68265f   
-4.06671383849472e-13 406.671f +406.671f   406.67f  +406.67f 406.67138f +406.67138f 00406.67f +0406.67f 406.67138f +406.67138f 406.67f      +406.67f     406.67138f   +406.67138f  406.67f      +406.67f     406.67138f   +406.67138f 
-1.70801981216778e-11 17.0802p +17.0802p    17.08p   +17.08p 17.08020p +17.08020p 00017.08p +0017.08p 17.08020p +17.08020p 17.08p       +17.08p      17.08020p    +17.08020p   17.08p       +17.08p      17.08020p    +17.08020p  
-7.17368321110469e-10 717.368p +717.368p   717.37p  +717.37p 717.36832p +717.36832p 00717.37p +0717.37p 717.36832p +717.36832p 717.37p      +717.37p     717.36832p   +717.36832p  717.37p      +717.37p     717.36832p   +717.36832p 
-3.01294694866397e-08 30.1295n +30.1295n    30.129n   +30.129n  30.12947n +30.12947n 00030.129n +0030.129n 030.12947n +30.12947n 30.129n      +30.129n     30.12947n    +30.12947n   30.129n      +30.129n     30.12947n    +30.12947n  
-1.26543771843887e-06 1.26544u +1.26544u    1.2654u   +1.2654u   1.26544u  +1.26544u 0001.2654u +001.2654u 001.26544u +01.26544u 1.2654u      +1.2654u     1.26544u     +1.26544u    1.2654u      +1.2654u     1.26544u     +1.26544u   
-5.31483841744324e-05 53.1484u +53.1484u    53.148u   +53.148u  53.14838u +53.14838u 00053.148u +0053.148u 053.14838u +53.14838u 53.148u      +53.148u     53.14838u    +53.14838u   53.148u      +53.148u     53.14838u    +53.14838u  
-0.00223223213532616 2.23223m +2.23223m    2.2322m   +2.2322m   2.23223m  +2.23223m 0002.2322m +002.2322m 002.23223m +02.23223m 2.2322m      +2.2322m     2.23223m     +2.23223m    2.2322m      +2.2322m     2.23223m     +2.23223m   
-0.0937537496836987 93.7537m +93.7537m    93.754m   +93.754m  93.75375m +93.75375m 00093.754m +0093.754m 093.75375m +93.75375m 93.754m      +93.754m     93.75375m    +93.75375m   93.754m      +93.754m     93.75375m    +93.75375m  
-3.93765748671535 3.93766 +3.93766     3.9377    +3.9377    3.93766   +3.93766 00003.9377 +0003.9377 0003.93766 +003.93766 3.9377       +3.9377      3.93766      +3.93766     3.9377       +3.9377      3.93766      +3.93766    
-165.381614442045 165.382 +165.382     165.38    +165.38  165.38161 +165.38161 0000165.38 +000165.38 0165.38161 +165.38161 165.38       +165.38      165.38161    +165.38161   165.38       +165.38      165.38161    +165.38161  
-6946.02780656587 6.94603K +6.94603K      6.946K     +6.946K    6.94603K   +6.94603K 000006.946K +00006.946K 0006.94603K +006.94603K 6.946K       +6.946K      6.94603K     +6.94603K    6.946K       +6.946K      6.94603K     +6.94603K   
-291733.167875767 291.733K +291.733K     291.73K    +291.73K  291.73317K +291.73317K 0000291.73K +000291.73K 0291.73317K +291.73317K 291.73K      +291.73K     291.73317K   +291.73317K  291.73K      +291.73K     291.73317K   +291.73317K 
-12252793.0507822 12.2528M +12.2528M     12.253M    +12.253M   12.25279M  +12.25279M 000012.253M +00012.253M 0012.25279M +012.25279M 12.253M      +12.253M     12.25279M    +12.25279M   12.253M      +12.253M     12.25279M    +12.25279M  
-514617308.132852 514.617M +514.617M     514.62M    +514.62M  514.61731M +514.61731M 0000514.62M +000514.62M 0514.61731M +514.61731M 514.62M      +514.62M     514.61731M   +514.61731M  514.62M      +514.62M     514.61731M   +514.61731M 
-21613926941.5798 21.6139G +21.6139G     21.614G    +21.614G   21.61393G  +21.61393G 000021.614G +00021.614G 0021.61393G +021.61393G 21.614G      +21.614G     21.61393G    +21.61393G   21.614G      +21.614G     21.61393G    +21.61393G  
-907784931546.352 907.785G +907.785G     907.78G    +907.78G  907.78493G +907.78493G 0000907.78G +000907.78G 0907.78493G +907.78493G 907.78G      +907.78G     907.78493G   +907.78493G  907.78G      +907.78G     907.78493G   +907.78493G 
-38126967124946.8 38.127T +38.127T    38.127T   +38.127T  38.12697T +38.12697T 00038.127T +0038.127T 038.12697T +38.12697T 38.127T      +38.127T     38.12697T    +38.12697T   38.127T      +38.127T     38.12697T    +38.12697T  
-1.60133261924776e+15 1.60133P +1.60133P    1.6013P   +1.6013P   1.60133P  +1.60133P 0001.6013P +001.6013P 001.60133P +01.60133P 1.6013P      +1.6013P     1.60133P     +1.60133P    1.6013P      +1.6013P     1.60133P     +1.60133P   
-6.72559700084061e+16 67.256P +67.256P    67.256P   +67.256P  67.25597P +67.25597P 00067.256P +0067.256P 067.25597P +67.25597P 67.256P      +67.256P     67.25597P    +67.25597P   67.256P      +67.256P     67.25597P    +67.25597P  
-2.82475074035306e+18 2.82475E +2.82475E    2.8248E   +2.8248E   2.82475E  +2.82475E 0002.8248E +002.8248E 002.82475E +02.82475E 2.8248E      +2.8248E     2.82475E     +2.82475E    2.8248E      +2.8248E     2.82475E     +2.82475E   
-1.18639531094828e+20 118.64E +118.64E    118.64E   +118.64E 118.63953E +118.63953E 000118.64E +00118.64E 118.63953E +118.63953E 118.64E      +118.64E     118.63953E   +118.63953E  118.64E      +118.64E     118.63953E   +118.63953E 
-4.98286030598279e+21 4.98286Z +4.98286Z    4.9829Z   +4.9829Z   4.98286Z  +4.98286Z 0004.9829Z +004.9829Z 004.98286Z +04.98286Z 4.9829Z      +4.9829Z     4.98286Z     +4.98286Z    4.9829Z      +4.9829Z     4.98286Z     +4.98286Z   
-2.09280132851277e+23 209.28Z +209.28Z    209.28Z   +209.28Z 209.28013Z +209.28013Z 000209.28Z +00209.28Z 209.28013Z +209.28013Z 209.28Z      +209.28Z     209.28013Z   +209.28013Z  209.28Z      +209.28Z     209.28013Z   +209.28013Z 
-8.78976557975365e+24 8.78977Y +8.78977Y    8.7898Y   +8.7898Y   8.78977Y  +8.78977Y 0008.7898Y +008.7898Y 008.78977Y +08.78977Y 8.7898Y      +8.7898Y     8.78977Y     +8.78977Y    8.7898Y      +8.7898Y     8.78977Y     +8.78977Y   
-3.69170154349653e+26 369.17Y +369.17Y    369.17Y   +369.17Y 369.17015Y +369.17015Y 000369.17Y +00369.17Y 369.17015Y +369.17015Y 369.17Y      +369.17Y     369.17015Y   +369.17015Y  369.17Y      +369.17Y     369.17015Y   +369.17015Y 
-1.55051464826854e+28 15.5051e27 +15.5051e27    15.505e27   +15.505e27  15.50515e27 +15.50515e27 00015.505e27 +0015.505e27 015.50515e27 +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27 15.505e27    +15.505e27   15.50515e27  +15.50515e27
-6.51216152272788e+29 651.216e27 +651.216e27    651.22e27   +651.22e27 651.21615e27 +651.21615e27 000651.22e27 +00651.22e27 651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27 651.22e27    +651.22e27   651.21615e27 +651.21615e27
-
--1e-27 -1e-27 -1e-27       -1e-27       -1e-27 -1.00000e-27 -1.00000e-27 -0000001e-27 -0000001e-27 -1.00000e-27 -1.00000e-27 -1e-27       -1e-27       -1.00000e-27 -1.00000e-27 -1e-27       -1e-27       -1.00000e-27 -1.00000e-27
--4.2e-26 -42e-27 -42e-27      -42e-27      -42e-27 -42.00000e-27 -42.00000e-27 -0000042e-27 -0000042e-27 -42.00000e-27 -42.00000e-27 -42e-27      -42e-27      -42.00000e-27 -42.00000e-27 -42e-27      -42e-27      -42.00000e-27 -42.00000e-27
--1.764e-24 -1.764e-24 -1.764e-24   -1.764e-24   -1.764e-24 -1.76400e-24 -1.76400e-24 -001.764e-24 -001.764e-24 -1.76400e-24 -1.76400e-24 -1.764e-24   -1.764e-24   -1.76400e-24 -1.76400e-24 -1.764e-24   -1.764e-24   -1.76400e-24 -1.76400e-24
--7.4088e-23 -74.088e-24 -74.088e-24  -74.088e-24  -74.088e-24 -74.08800e-24 -74.08800e-24 -074.088e-24 -074.088e-24 -74.08800e-24 -74.08800e-24 -74.088e-24  -74.088e-24  -74.08800e-24 -74.08800e-24 -74.088e-24  -74.088e-24  -74.08800e-24 -74.08800e-24
--3.111696e-21 -3.1117e-21 -3.1117e-21  -3.1117e-21  -3.1117e-21 -3.11170e-21 -3.11170e-21 -03.1117e-21 -03.1117e-21 -3.11170e-21 -3.11170e-21 -3.1117e-21  -3.1117e-21  -3.11170e-21 -3.11170e-21 -3.1117e-21  -3.1117e-21  -3.11170e-21 -3.11170e-21
--1.30691232e-19 -130.691e-21 -130.691e-21  -130.69e-21  -130.69e-21 -130.69123e-21 -130.69123e-21 -0130.69e-21 -0130.69e-21 -130.69123e-21 -130.69123e-21 -130.69e-21  -130.69e-21  -130.69123e-21 -130.69123e-21 -130.69e-21  -130.69e-21  -130.69123e-21 -130.69123e-21
--5.489031744e-18 -5.48903e-18 -5.48903e-18   -5.489e-18   -5.489e-18 -5.48903e-18 -5.48903e-18 -005.489e-18 -005.489e-18 -5.48903e-18 -5.48903e-18 -5.489e-18   -5.489e-18   -5.48903e-18 -5.48903e-18 -5.489e-18   -5.489e-18   -5.48903e-18 -5.48903e-18
--2.30539333248e-16 -230.539e-18 -230.539e-18  -230.54e-18  -230.54e-18 -230.53933e-18 -230.53933e-18 -0230.54e-18 -0230.54e-18 -230.53933e-18 -230.53933e-18 -230.54e-18  -230.54e-18  -230.53933e-18 -230.53933e-18 -230.54e-18  -230.54e-18  -230.53933e-18 -230.53933e-18
--9.682651996416e-15 -9.68265e-15 -9.68265e-15  -9.6827e-15  -9.6827e-15 -9.68265e-15 -9.68265e-15 -09.6827e-15 -09.6827e-15 -9.68265e-15 -9.68265e-15 -9.6827e-15  -9.6827e-15  -9.68265e-15 -9.68265e-15 -9.6827e-15  -9.6827e-15  -9.68265e-15 -9.68265e-15
--4.06671383849472e-13 -406.671e-15 -406.671e-15  -406.67e-15  -406.67e-15 -406.67138e-15 -406.67138e-15 -0406.67e-15 -0406.67e-15 -406.67138e-15 -406.67138e-15 -406.67e-15  -406.67e-15  -406.67138e-15 -406.67138e-15 -406.67e-15  -406.67e-15  -406.67138e-15 -406.67138e-15
--1.70801981216778e-11 -17.0802e-12 -17.0802e-12   -17.08e-12   -17.08e-12 -17.08020e-12 -17.08020e-12 -0017.08e-12 -0017.08e-12 -17.08020e-12 -17.08020e-12 -17.08e-12   -17.08e-12   -17.08020e-12 -17.08020e-12 -17.08e-12   -17.08e-12   -17.08020e-12 -17.08020e-12
--7.17368321110469e-10 -717.368e-12 -717.368e-12  -717.37e-12  -717.37e-12 -717.36832e-12 -717.36832e-12 -0717.37e-12 -0717.37e-12 -717.36832e-12 -717.36832e-12 -717.37e-12  -717.37e-12  -717.36832e-12 -717.36832e-12 -717.37e-12  -717.37e-12  -717.36832e-12 -717.36832e-12
--3.01294694866397e-08 -30.1295e-9 -30.1295e-9   -30.129e-9   -30.129e-9 -30.12947e-9 -30.12947e-9 -0030.129e-9 -0030.129e-9 -30.12947e-9 -30.12947e-9 -30.129e-9   -30.129e-9   -30.12947e-9 -30.12947e-9 -30.129e-9   -30.129e-9   -30.12947e-9 -30.12947e-9
--1.26543771843887e-06 -1.26544e-6 -1.26544e-6   -1.2654e-6   -1.2654e-6  -1.26544e-6  -1.26544e-6 -001.2654e-6 -001.2654e-6 -01.26544e-6 -01.26544e-6 -1.2654e-6   -1.2654e-6   -1.26544e-6  -1.26544e-6  -1.2654e-6   -1.2654e-6   -1.26544e-6  -1.26544e-6 
--5.31483841744324e-05 -53.1484e-6 -53.1484e-6   -53.148e-6   -53.148e-6 -53.14838e-6 -53.14838e-6 -0053.148e-6 -0053.148e-6 -53.14838e-6 -53.14838e-6 -53.148e-6   -53.148e-6   -53.14838e-6 -53.14838e-6 -53.148e-6   -53.148e-6   -53.14838e-6 -53.14838e-6
--0.00223223213532616 -2.23223e-3 -2.23223e-3   -2.2322e-3   -2.2322e-3  -2.23223e-3  -2.23223e-3 -002.2322e-3 -002.2322e-3 -02.23223e-3 -02.23223e-3 -2.2322e-3   -2.2322e-3   -2.23223e-3  -2.23223e-3  -2.2322e-3   -2.2322e-3   -2.23223e-3  -2.23223e-3 
--0.0937537496836987 -93.7537e-3 -93.7537e-3   -93.754e-3   -93.754e-3 -93.75375e-3 -93.75375e-3 -0093.754e-3 -0093.754e-3 -93.75375e-3 -93.75375e-3 -93.754e-3   -93.754e-3   -93.75375e-3 -93.75375e-3 -93.754e-3   -93.754e-3   -93.75375e-3 -93.75375e-3
--3.93765748671535 -3.93766e0 -3.93766e0    -3.9377e0    -3.9377e0   -3.93766e0   -3.93766e0 -0003.9377e0 -0003.9377e0 -003.93766e0 -003.93766e0 -3.9377e0    -3.9377e0    -3.93766e0   -3.93766e0   -3.9377e0    -3.9377e0    -3.93766e0   -3.93766e0  
--165.381614442045 -165.382e0 -165.382e0    -165.38e0    -165.38e0 -165.38161e0 -165.38161e0 -000165.38e0 -000165.38e0 -165.38161e0 -165.38161e0 -165.38e0    -165.38e0    -165.38161e0 -165.38161e0 -165.38e0    -165.38e0    -165.38161e0 -165.38161e0
--6946.02780656587 -6.94603e3 -6.94603e3     -6.946e3     -6.946e3   -6.94603e3   -6.94603e3 -00006.946e3 -00006.946e3 -006.94603e3 -006.94603e3 -6.946e3     -6.946e3     -6.94603e3   -6.94603e3   -6.946e3     -6.946e3     -6.94603e3   -6.94603e3  
--291733.167875767 -291.733e3 -291.733e3    -291.73e3    -291.73e3 -291.73317e3 -291.73317e3 -000291.73e3 -000291.73e3 -291.73317e3 -291.73317e3 -291.73e3    -291.73e3    -291.73317e3 -291.73317e3 -291.73e3    -291.73e3    -291.73317e3 -291.73317e3
--12252793.0507822 -12.2528e6 -12.2528e6    -12.253e6    -12.253e6  -12.25279e6  -12.25279e6 -00012.253e6 -00012.253e6 -012.25279e6 -012.25279e6 -12.253e6    -12.253e6    -12.25279e6  -12.25279e6  -12.253e6    -12.253e6    -12.25279e6  -12.25279e6 
--514617308.132852 -514.617e6 -514.617e6    -514.62e6    -514.62e6 -514.61731e6 -514.61731e6 -000514.62e6 -000514.62e6 -514.61731e6 -514.61731e6 -514.62e6    -514.62e6    -514.61731e6 -514.61731e6 -514.62e6    -514.62e6    -514.61731e6 -514.61731e6
--21613926941.5798 -21.6139e9 -21.6139e9    -21.614e9    -21.614e9  -21.61393e9  -21.61393e9 -00021.614e9 -00021.614e9 -021.61393e9 -021.61393e9 -21.614e9    -21.614e9    -21.61393e9  -21.61393e9  -21.614e9    -21.614e9    -21.61393e9  -21.61393e9 
--907784931546.352 -907.785e9 -907.785e9    -907.78e9    -907.78e9 -907.78493e9 -907.78493e9 -000907.78e9 -000907.78e9 -907.78493e9 -907.78493e9 -907.78e9    -907.78e9    -907.78493e9 -907.78493e9 -907.78e9    -907.78e9    -907.78493e9 -907.78493e9
--38126967124946.8 -38.127e12 -38.127e12   -38.127e12   -38.127e12 -38.12697e12 -38.12697e12 -0038.127e12 -0038.127e12 -38.12697e12 -38.12697e12 -38.127e12   -38.127e12   -38.12697e12 -38.12697e12 -38.127e12   -38.127e12   -38.12697e12 -38.12697e12
--1.60133261924776e+15 -1.60133e15 -1.60133e15   -1.6013e15   -1.6013e15  -1.60133e15  -1.60133e15 -001.6013e15 -001.6013e15 -01.60133e15 -01.60133e15 -1.6013e15   -1.6013e15   -1.60133e15  -1.60133e15  -1.6013e15   -1.6013e15   -1.60133e15  -1.60133e15 
--6.72559700084061e+16 -67.256e15 -67.256e15   -67.256e15   -67.256e15 -67.25597e15 -67.25597e15 -0067.256e15 -0067.256e15 -67.25597e15 -67.25597e15 -67.256e15   -67.256e15   -67.25597e15 -67.25597e15 -67.256e15   -67.256e15   -67.25597e15 -67.25597e15
--2.82475074035306e+18 -2.82475e18 -2.82475e18   -2.8248e18   -2.8248e18  -2.82475e18  -2.82475e18 -002.8248e18 -002.8248e18 -02.82475e18 -02.82475e18 -2.8248e18   -2.8248e18   -2.82475e18  -2.82475e18  -2.8248e18   -2.8248e18   -2.82475e18  -2.82475e18 
--1.18639531094828e+20 -118.64e18 -118.64e18   -118.64e18   -118.64e18 -118.63953e18 -118.63953e18 -00118.64e18 -00118.64e18 -118.63953e18 -118.63953e18 -118.64e18   -118.64e18   -118.63953e18 -118.63953e18 -118.64e18   -118.64e18   -118.63953e18 -118.63953e18
--4.98286030598279e+21 -4.98286e21 -4.98286e21   -4.9829e21   -4.9829e21  -4.98286e21  -4.98286e21 -004.9829e21 -004.9829e21 -04.98286e21 -04.98286e21 -4.9829e21   -4.9829e21   -4.98286e21  -4.98286e21  -4.9829e21   -4.9829e21   -4.98286e21  -4.98286e21 
--2.09280132851277e+23 -209.28e21 -209.28e21   -209.28e21   -209.28e21 -209.28013e21 -209.28013e21 -00209.28e21 -00209.28e21 -209.28013e21 -209.28013e21 -209.28e21   -209.28e21   -209.28013e21 -209.28013e21 -209.28e21   -209.28e21   -209.28013e21 -209.28013e21
--8.78976557975365e+24 -8.78977e24 -8.78977e24   -8.7898e24   -8.7898e24  -8.78977e24  -8.78977e24 -008.7898e24 -008.7898e24 -08.78977e24 -08.78977e24 -8.7898e24   -8.7898e24   -8.78977e24  -8.78977e24  -8.7898e24   -8.7898e24   -8.78977e24  -8.78977e24 
--3.69170154349653e+26 -369.17e24 -369.17e24   -369.17e24   -369.17e24 -369.17015e24 -369.17015e24 -00369.17e24 -00369.17e24 -369.17015e24 -369.17015e24 -369.17e24   -369.17e24   -369.17015e24 -369.17015e24 -369.17e24   -369.17e24   -369.17015e24 -369.17015e24
--1.55051464826854e+28 -15.5051e27 -15.5051e27   -15.505e27   -15.505e27 -15.50515e27 -15.50515e27 -0015.505e27 -0015.505e27 -15.50515e27 -15.50515e27 -15.505e27   -15.505e27   -15.50515e27 -15.50515e27 -15.505e27   -15.505e27   -15.50515e27 -15.50515e27
--6.51216152272788e+29 -651.216e27 -651.216e27   -651.22e27   -651.22e27 -651.21615e27 -651.21615e27 -00651.22e27 -00651.22e27 -651.21615e27 -651.21615e27 -651.22e27   -651.22e27   -651.21615e27 -651.21615e27 -651.22e27   -651.22e27   -651.21615e27 -651.21615e27
