]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Remove long double instantiations.
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Mon, 25 Apr 2016 20:07:20 +0000 (22:07 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Tue, 26 Apr 2016 09:37:59 +0000 (11:37 +0200)
21 files changed:
cmake/config/template-arguments.in
include/deal.II/lac/full_matrix.h
include/deal.II/lac/vector.h
include/deal.II/lac/vector_view.h
include/deal.II/numerics/matrix_creator.templates.h
source/lac/constraint_matrix.cc
source/lac/full_matrix.cc
source/lac/vector.cc
source/matrix_free/matrix_free.cc
source/matrix_free/matrix_free.inst.in
source/meshworker/mesh_worker.cc
source/meshworker/mesh_worker_info.inst.in
source/multigrid/mg_level_global_transfer.cc
source/multigrid/mg_level_global_transfer.inst.in
tests/base/functions_13.cc
tests/lac/la_vector_accumulation_01.cc
tests/lac/la_vector_add_and_dot.cc
tests/lac/la_vector_add_and_dot.output
tests/lac/la_vector_norms.cc
tests/lac/la_vector_vector.cc
tests/lac/la_vector_vector.output

index fea18cf762515def71a48dcabe5d9996de5b848a..b3e4595a62c955a302d31e5277cc82fc8114e275 100644 (file)
@@ -1,8 +1,7 @@
 BOOL            := { true; false }
-REAL_SCALARS    := { double; float; long double }
+REAL_SCALARS    := { double; float }
 COMPLEX_SCALARS := { std::complex<double>;
-                     std::complex<float>;
-                     std::complex<long double> }
+                     std::complex<float> }
 
 DERIVATIVE_TENSORS := { double;
                         Tensor<1,deal_II_dimension>;
@@ -12,19 +11,15 @@ DEAL_II_VEC_TEMPLATES := { Vector; BlockVector }
 
 SERIAL_VECTORS := { Vector<double>;
                     Vector<float> ;
-                    Vector<long double>;
 
                     BlockVector<double>;
                     BlockVector<float>;
-                    BlockVector<long double>;
 
                     parallel::distributed::Vector<double>;
                     parallel::distributed::Vector<float> ;
-                    parallel::distributed::Vector<long double>;
 
                     parallel::distributed::BlockVector<double>;
                     parallel::distributed::BlockVector<float> ;
-                    parallel::distributed::BlockVector<long double>;
 
                     @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                     @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
@@ -39,24 +34,20 @@ SERIAL_VECTORS := { Vector<double>;
 
 REAL_SERIAL_VECTORS := { Vector<double>;
                     Vector<float> ;
-                    Vector<long double>;
 
                     BlockVector<double>;
                     BlockVector<float>;
-                    BlockVector<long double>;
 
                     parallel::distributed::Vector<double>;
                     parallel::distributed::Vector<float> ;
-                    parallel::distributed::Vector<long double>;
 
                     parallel::distributed::BlockVector<double>;
                     parallel::distributed::BlockVector<float> ;
-                    parallel::distributed::BlockVector<long double>;
 
                     @DEAL_II_EXPAND_TRILINOS_VECTOR@;
                     @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
                     @DEAL_II_EXPAND_PETSC_VECTOR_REAL@;
-                    @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;                    
+                    @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
 
                     @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
                     @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
@@ -78,11 +69,9 @@ EXTERNAL_PARALLEL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
 
 VECTORS_WITH_MATRIX := { Vector<double>;
                     Vector<float> ;
-                    Vector<long double>;
 
                     BlockVector<double>;
                     BlockVector<float>;
-                    BlockVector<long double>;
 
                     parallel::distributed::Vector<double>;
 
index 9cadd62a468638220e0c29c9eb90908075bfa03c..7ebaf927cfb4d24b84e4ef7e588db7261ac07db8 100644 (file)
@@ -52,11 +52,9 @@ template <typename number> class LAPACKFullMatrix;
  * matrix number type is used.
  *
  * @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>,
+ * @<std::complex@<double@>@></tt>. Others can be generated in application
+ * programs (see the section on @ref Instantiations in the manual).
  *
  * @author Guido Kanschat, Franz-Theo Suttmeier, Wolfgang Bangerth, 1993-2004
  */
index 6123fe7a764f4005c04d296205d4262e1d8a5927..47dba123e0504578955f60b6f51ce2407a60ad92 100644 (file)
@@ -104,11 +104,9 @@ struct VectorOperation
  * suitable for numerical computations.
  *
  * @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>, @<std::complex@<double@>@></tt>;
+ * others can be generated in application programs (see the section on
+ * @ref Instantiations in the manual).
  *
  * @author Guido Kanschat, Franz-Theo Suttmeier, Wolfgang Bangerth
  */
index 1d3dcc953620f0031332c455e2ba30f5670b7b7d..298ead3026529258697887333a0b8c37268ee4d1 100644 (file)
@@ -120,11 +120,9 @@ DEAL_II_NAMESPACE_OPEN
  *
  *
  * @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>, @<std::complex@<double@>@></tt>;
+ * others can be generated in application programs (see the section on
+ * @ref Instantiations in the manual).
  *
  * @author Luca Heltai, 2009
  */
index 72c90ddc3640e7675165e76b20b9cc8fee2b0508..685d5e2028e91fe5ac01b8474785f959711f95e8 100644 (file)
@@ -1177,23 +1177,6 @@ namespace MatrixCreator
       Assert(false,ExcNotImplemented());
     }
 
-    template <>
-    void
-    inline
-    create_boundary_mass_matrix_1<1,3,long double> (DoFHandler<1,3>::active_cell_iterator const &/*cell*/,
-                                                    MatrixCreator::internal::AssemblerBoundary::Scratch const &,
-                                                    MatrixCreator::internal::AssemblerBoundary::CopyData<DoFHandler<1,
-                                                    3>,long double > &/*copy_data*/,
-                                                    Mapping<1,3> const &,
-                                                    FiniteElement<1,3> const &,
-                                                    Quadrature<0> const &,
-                                                    std::map<types::boundary_id, const Function<3,long double>*> const &/*boundary_functions*/,
-                                                    Function<3,long double> const *const /*coefficient*/,
-                                                    std::vector<unsigned int> const &/*component_mapping*/)
-    {
-      Assert(false,ExcNotImplemented());
-    }
-
   }
 
 
index 0391d54e33403e0f88c299742f9b5e333d163731..2ed652a1c5973b059ca3acc83aed50980cd5d710 100644 (file)
@@ -1295,14 +1295,12 @@ PARALLEL_VECTOR_FUNCTIONS(TrilinosWrappers::MPI::BlockVector);
       bool                             , \
       internal::bool2type<true>) const
 
-MATRIX_FUNCTIONS(SparseMatrix<long double>);
 MATRIX_FUNCTIONS(SparseMatrix<double>);
 MATRIX_FUNCTIONS(SparseMatrix<float>);
 MATRIX_FUNCTIONS(FullMatrix<double>);
 MATRIX_FUNCTIONS(FullMatrix<float>);
 MATRIX_FUNCTIONS(FullMatrix<std::complex<double> >);
 MATRIX_FUNCTIONS(SparseMatrix<std::complex<double> >);
-MATRIX_FUNCTIONS(SparseMatrix<std::complex<long double> >);
 MATRIX_FUNCTIONS(SparseMatrix<std::complex<float> >);
 
 BLOCK_MATRIX_FUNCTIONS(BlockSparseMatrix<double>);
@@ -1420,10 +1418,8 @@ namespace internals
 
   SCRATCH_INITIALIZER(double,double);
   SCRATCH_INITIALIZER(float,float);
-  SCRATCH_INITIALIZER(long double,ldouble);
   SCRATCH_INITIALIZER(std::complex<double>,cdouble);
   SCRATCH_INITIALIZER(std::complex<float>,cfloat);
-  SCRATCH_INITIALIZER(std::complex<long double>,cldouble);
 #undef SCRATCH_INITIALIZER
 }
 
index 7994f58b96077c334600e2b3e0df8b5fc403700d..1d92039af5a8ca78c014492d6160f3bb8a0c1348 100644 (file)
@@ -20,6 +20,18 @@ DEAL_II_NAMESPACE_OPEN
 
 #include "full_matrix.inst"
 
+// instantiate for long double manually because we use it in a few places
+// inside the library
+template class FullMatrix<long double>;
+template void FullMatrix<long double>::invert<long double> (const FullMatrix<long double> &);
+template void FullMatrix<long double>::mmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::Tmmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::mTmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::TmTmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::vmult<long double>(Vector<long double> &, const Vector<long double> &, bool) const;
+template void FullMatrix<long double>::Tvmult<long double>(Vector<long double> &, const Vector<long double> &, bool) const;
+template void FullMatrix<long double>::add<long double> (const long double, const FullMatrix<long double> &);
+
 // This is needed if PETSc was compiled with complex, though, it may
 // be used elsewhere too.
 template void dealii::FullMatrix<double>::vmult<std::complex<double> >(dealii::Vector<std::complex<double> > &, dealii::Vector<std::complex<double> > const &, bool) const;
@@ -36,22 +48,9 @@ template void dealii::FullMatrix<double>::vmult<std::complex<double> >(dealii::V
 TEMPL_OP_EQ(double,float);
 TEMPL_OP_EQ(float,double);
 
-TEMPL_OP_EQ(long double,double);
-TEMPL_OP_EQ(double,long double);
-
-TEMPL_OP_EQ(long double,float);
-TEMPL_OP_EQ(float,long double);
-
-
 TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
 TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
 
-TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
-
-TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
-TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
-
 #undef TEMPL_OP_EQ
 
 DEAL_II_NAMESPACE_CLOSE
index e7bf7fbe34835631b5534a9f378e2ad7848bbc86..4f23c08d2d4fa4fe568e273938df9fb592f2418d 100644 (file)
@@ -26,6 +26,10 @@ template Vector<double> &Vector<double>::operator=<int> (const dealii::Vector<in
 template
 void Vector<int>::reinit<double>(const Vector<double> &, const bool);
 
+// instantiate for long double manually because we use it in a few places:
+template class Vector<long double>;
+template long double Vector<long double>::operator *<long double>(const Vector<long double> &) const;
+
 
 // do a few functions that currently don't fit the scheme because they have
 // two template arguments that need to be different (the case of same
@@ -40,22 +44,10 @@ void Vector<int>::reinit<double>(const Vector<double> &, const bool);
 TEMPL_COPY_CONSTRUCTOR(double,float);
 TEMPL_COPY_CONSTRUCTOR(float,double);
 
-TEMPL_COPY_CONSTRUCTOR(long double,double);
-TEMPL_COPY_CONSTRUCTOR(double,long double);
-
-TEMPL_COPY_CONSTRUCTOR(long double,float);
-TEMPL_COPY_CONSTRUCTOR(float,long double);
-
 
 TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<float>);
 TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<double>);
 
-TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<double>);
-TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<long double>);
-
-TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<float>);
-TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<long double>);
-
 #endif
 
 #undef TEMPL_COPY_CONSTRUCTOR
@@ -68,22 +60,10 @@ TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<long double>);
 TEMPL_OP_EQ(double,float);
 TEMPL_OP_EQ(float,double);
 
-TEMPL_OP_EQ(long double,double);
-TEMPL_OP_EQ(double,long double);
-
-TEMPL_OP_EQ(long double,float);
-TEMPL_OP_EQ(float,long double);
-
 
 TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
 TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
 
-TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
-
-TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
-TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
-
 #undef TEMPL_OP_EQ
 
 DEAL_II_NAMESPACE_CLOSE
index 21622d873abd411b22643929d28227f1f3a02049..d6a07ec0f43c696b0fd21f6d4f0da12a6f7679e6 100644 (file)
@@ -26,6 +26,5 @@ DEAL_II_NAMESPACE_OPEN
 
 template struct internal::MatrixFreeFunctions::ShapeInfo<double>;
 template struct internal::MatrixFreeFunctions::ShapeInfo<float>;
-template struct internal::MatrixFreeFunctions::ShapeInfo<long double>;
 
 DEAL_II_NAMESPACE_CLOSE
index 6e1115a1ae5934a11a1691e482580373c1401172..f1feaf3d162ff189f43a7d681e8e8238ba3e218f 100644 (file)
@@ -39,8 +39,5 @@ for (deal_II_dimension : DIMENSIONS)
   template void internal::MatrixFreeFunctions::ShapeInfo<float>::reinit
   <deal_II_dimension>(const Quadrature<1> &, const FiniteElement
                       <deal_II_dimension,deal_II_dimension> &, const unsigned int);
-  template void internal::MatrixFreeFunctions::ShapeInfo<long double>::reinit
-  <deal_II_dimension>(const Quadrature<1> &, const FiniteElement
-                      <deal_II_dimension,deal_II_dimension> &, const unsigned int);
 #endif
 }
index 5b50bc293360f0d5d1573955bd14a6fb940e61a4..d8936cf7c1b9f05fabd9da2181dd4c24e710a0b1 100644 (file)
@@ -56,7 +56,6 @@ namespace MeshWorker
 
   template class LocalResults<float>;
   template class LocalResults<double>;
-  template class LocalResults<long double>;
 
   template <int dim, int spacedim, typename number>
   LocalIntegrator<dim, spacedim, number>::LocalIntegrator ()
index 2cf38c8fe2809a9d72d2d07b1593b985128a63d9..0b3e620e6e50d818ab50c71f777cf0068886256c 100644 (file)
@@ -35,13 +35,6 @@ namespace MeshWorker
   template void IntegrationInfo<deal_II_dimension>::fill_local_data(
     const DoFInfo<deal_II_dimension, deal_II_dimension, double>&, bool);
 
-  template class DoFInfo<deal_II_dimension,deal_II_dimension,long double>;
-  template class DoFInfoBox<deal_II_dimension,
-                            DoFInfo<deal_II_dimension,deal_II_dimension,long double> >;
-
-  template void IntegrationInfo<deal_II_dimension>::fill_local_data(
-    const DoFInfo<deal_II_dimension, deal_II_dimension, long double>&, bool);
-
 //   template void IntegrationInfo<deal_II_dimension>
 //   ::initialize<FEValues<deal_II_dimension> >(
 //     const FiniteElement<deal_II_dimension>&, const Mapping<deal_II_dimension>&,
index 936865af18b3ce2b4a9c4a1c679f097982efda5c..12c2ed4698ed8032a361efdb8e133e6b659f2f3d 100644 (file)
@@ -579,10 +579,9 @@ MGLevelGlobalTransfer<parallel::distributed::Vector<Number> >::memory_consumptio
 // explicit instantiation
 #include "mg_level_global_transfer.inst"
 
-// create two additional instantiations currently not supported by the
-// automatic template instantiation scheme
+// create an additional instantiation currently not supported by the automatic
+// template instantiation scheme
 template class MGLevelGlobalTransfer<parallel::distributed::Vector<float> >;
-template class MGLevelGlobalTransfer<parallel::distributed::Vector<long double> >;
 
 
 DEAL_II_NAMESPACE_CLOSE
index 8e7a292c3e0601543cb2f66c7dd53f172c4c0b37..4fee9d260e215480169c04f690f31ce63bc5b05b 100644 (file)
@@ -45,9 +45,6 @@ for (deal_II_dimension : DIMENSIONS)
     template
       void MGLevelGlobalTransfer< parallel::distributed::Vector<float> >::fill_and_communicate_copy_indices<deal_II_dimension,deal_II_dimension>(
         const DoFHandler<deal_II_dimension,deal_II_dimension> &mg_dof);
-    template
-      void MGLevelGlobalTransfer< parallel::distributed::Vector<long double> >::fill_and_communicate_copy_indices<deal_II_dimension,deal_II_dimension>(
-        const DoFHandler<deal_II_dimension,deal_II_dimension> &mg_dof);
   }
 
 for (deal_II_dimension : DIMENSIONS; S1, S2 : REAL_SCALARS)
index 4cad108c96a10f38d722903bd536a3b80c42f72b..96d08d00b116d24598cd23ed483615569948cda2 100644 (file)
@@ -45,11 +45,9 @@ int main()
 
   MyFunction<1, std::complex<double> > function_1;
   MyFunction<2, std::complex<float> > function_2;
-  MyFunction<3, std::complex<long double> > function_3;
 
   MyTensorFunction<1, 1, std::complex<double> > tensor_function_1;
   MyTensorFunction<2, 2, std::complex<float> > tensor_function_2;
-  MyTensorFunction<3, 3, std::complex<long double> > tensor_function_3;
 
   deallog << "OK" << std::endl;
 }
index c8b2b9d179be8f5c2f5198397d7563b03d3eb3c0..6cecb47fd5228b2f245c3c00eba2cd50c0037744 100644 (file)
@@ -58,9 +58,6 @@ int main()
 
   check_norms<float>();
   check_norms<double>();
-  check_norms<long double>();
   check_norms<std::complex<double> >();
   deallog << "OK" << std::endl;
 }
-
-
index d4f7524acc657a0a8065d77ac8b9cb9685a945ed..9b71237c5900baa841785cf8f8b7bb421e18556d 100644 (file)
@@ -83,9 +83,6 @@ int main()
 
   check<float>();
   check<double>();
-  check<long double>();
   check<std::complex<double> >();
   deallog << "OK" << std::endl;
 }
-
-
index 000e9a6333bba365e71aeebc54e271f3dfcfda52..c732258cab86aa3ff81266353e4502494dc868c2 100644 (file)
@@ -12,11 +12,6 @@ DEAL::Add and dot should be 13.40, is 13.40
 DEAL::Add and dot should be 26.50, is 26.50
 DEAL::Add and dot should be 39.61, is 39.61
 DEAL::Add and dot should be 52.71, is 52.71
-DEAL::Add and dot should be 0.30, is 0.30
-DEAL::Add and dot should be 13.40, is 13.40
-DEAL::Add and dot should be 26.50, is 26.50
-DEAL::Add and dot should be 39.61, is 39.61
-DEAL::Add and dot should be 52.71, is 52.71
 DEAL::Add and dot should be (0.30,0.00), is (0.30,0.00)
 DEAL::Add and dot should be (13.40,0.00), is (13.40,0.00)
 DEAL::Add and dot should be (26.50,0.00), is (26.50,0.00)
index 4789c47882f3470d4e9181651f7390b7cd5101a3..102030fcb5c6713527833896243260736f87b086 100644 (file)
@@ -108,10 +108,7 @@ int main()
 
   check_norms<float>();
   check_norms<double>();
-  check_norms<long double>();
   check_complex_norms<double>();
   check_complex_norms<float>();
   deallog << "OK" << std::endl;
 }
-
-
index 218f1009c45a119ed1e7b215d5419171e0c23048..01258177a6f75f395b08af385e5aae8b45b4ec14 100644 (file)
@@ -142,7 +142,6 @@ int main()
 
   LinearAlgebra::Vector<double>      d1(N), d2(N);
   LinearAlgebra::Vector<float>       f1(N), f2(N);
-  LinearAlgebra::Vector<long double> l1(N), l2(N);
 
   // cross-tests with double/float
   // vectors at the same time are not
@@ -152,7 +151,4 @@ int main()
   // arguments
   check_vectors (d1, d2);
   check_vectors (f1, f2);
-  check_vectors (l1, l2);
 }
-
-
index 46bd0872f1b826afbf09d071fd747a1c556c1a2f..201372ce00960c1585fa92cfb2386b1f5d9b43b7 100644 (file)
@@ -49,28 +49,3 @@ DEAL::-3.75  -1.88   0.00    1.88    3.75    5.62    7.50    9.38    11.25   13.12
 DEAL::10.00    13.00   16.00   19.00   22.00   25.00   28.00   31.00   34.00   37.00   
 DEAL::equ
 DEAL::2.50     3.25    4.00    4.75    5.50    6.25    7.00    7.75    8.50    9.25    
-DEAL::Fill & Swap
-DEAL::0.00     0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    
-DEAL::0.00     2.00    4.00    6.00    8.00    10.00   12.00   14.00   16.00   18.00   
-DEAL::0.00     2.00    8.00    18.00   32.00   50.00   72.00   98.00   128.00  162.00  
-DEAL::2.00     1.50    1.00    0.50    0.00    -0.50   -1.00   -1.50   -2.00   -2.50   
-DEAL::0.00     2.00    8.00    18.00   32.00   50.00   72.00   98.00   128.00  162.00  
-DEAL::0.00     2.00    4.00    6.00    8.00    10.00   12.00   14.00   16.00   18.00   
-DEAL::2.50     2.50    2.50    2.50    2.50    2.50    2.50    2.50    2.50    2.50    
-DEAL::0.00     1.10    2.20    3.30    
-DEAL::Extract number
-DEAL::-105.00  -105.00
-DEAL::33.76    33.76
-DEAL::12.50    12.50
-DEAL::2.50     2.50
-DEAL::add & sub
-DEAL::2.50     4.50    6.50    8.50    10.50   12.50   14.50   16.50   18.50   20.50   
-DEAL::-2.50    -2.50   -2.50   -2.50   -2.50   -2.50   -2.50   -2.50   -2.50   -2.50   
-DEAL::6.50     7.50    8.50    9.50    10.50   11.50   12.50   13.50   14.50   15.50   
-DEAL::2.50     3.25    4.00    4.75    5.50    6.25    7.00    7.75    8.50    9.25    
-DEAL::sadd & scale
-DEAL::-2.50    -1.75   -1.00   -0.25   0.50    1.25    2.00    2.75    3.50    4.25    
-DEAL::-3.75    -1.88   0.00    1.88    3.75    5.62    7.50    9.38    11.25   13.12   
-DEAL::10.00    13.00   16.00   19.00   22.00   25.00   28.00   31.00   34.00   37.00   
-DEAL::equ
-DEAL::2.50     3.25    4.00    4.75    5.50    6.25    7.00    7.75    8.50    9.25    

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.