diff --git a/Common/Makefile b/Common/Makefile
index b707195f6fdfa7e285cfc10818c29f7bc4ffa8dc..38bca42334f0be7167e52e2089d369a74fa2e406 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -158,7 +158,8 @@ Visibility${OBJEXT}: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Parser/Parser.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Parser/Parser.h
 VertexArray${OBJEXT}: VertexArray.cpp VertexArray.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h Context.h ../Geo/CGNSOptions.h \
   ../Mesh/PartitionOptions.h ../Numeric/Numeric.h \
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 5190e975b2a42881829a8f513d211020e1d5fa50..2c7ecdc56c2fd30d44f308523da9b75404d884a9 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -99,7 +99,8 @@ GUI${OBJEXT}: GUI.cpp GUI.h graphicWindow.h openglWindow.h \
   ../Geo/SBoundingBox3d.h ../Geo/MElement.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Post/PView.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Post/PView.h \
   Solvers.h ../Mesh/Field.h ../Plugin/Plugin.h ../Common/Options.h \
   ../Post/PViewDataList.h ../Post/PViewData.h ../Common/ListUtils.h \
   ../Plugin/PluginManager.h ../Common/OpenFile.h Win32Icon.h \
@@ -124,8 +125,8 @@ openglWindow${OBJEXT}: openglWindow.cpp openglWindow.h ../Graphics/drawContext.h
   ../Geo/SBoundingBox3d.h ../Geo/MElement.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h Draw.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h GUI.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h Draw.h GUI.h \
   ../Common/VertexArray.h ../Common/Context.h ../Geo/CGNSOptions.h \
   ../Mesh/PartitionOptions.h
 menuWindow${OBJEXT}: menuWindow.cpp GUI.h Draw.h menuWindow.h popupButton.h \
@@ -148,7 +149,8 @@ menuWindow${OBJEXT}: menuWindow.cpp GUI.h Draw.h menuWindow.h popupButton.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Common/Options.h Solvers.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Options.h Solvers.h \
   ../Common/CommandLine.h ../Mesh/Generator.h ../Mesh/HighOrder.h \
   ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Mesh/Field.h ../Common/OS.h \
@@ -170,6 +172,7 @@ optionWindow${OBJEXT}: optionWindow.cpp GUI.h optionWindow.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Common/OS.h ../Common/Context.h \
   ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
@@ -209,7 +212,8 @@ statisticsWindow${OBJEXT}: statisticsWindow.cpp GUI.h Draw.h statisticsWindow.h
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Post/PView.h ../Mesh/Generator.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Post/PView.h ../Mesh/Generator.h \
   ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 visibilityWindow${OBJEXT}: visibilityWindow.cpp GUI.h Draw.h visibilityWindow.h \
   shortcutWindow.h contextWindow.h ../Common/GmshDefines.h \
@@ -224,7 +228,8 @@ visibilityWindow${OBJEXT}: visibilityWindow.cpp GUI.h Draw.h visibilityWindow.h
   ../Geo/SBoundingBox3d.h ../Geo/MElement.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Common/Visibility.h ../Common/GmshDefines.h \
   ../Geo/GeoStringInterface.h ../Common/ListUtils.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Context.h ../Geo/CGNSOptions.h \
@@ -301,7 +306,8 @@ projectionEditor${OBJEXT}: projectionEditor.cpp GUI.h projectionEditor.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h Draw.h ../Common/Options.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h Draw.h ../Common/Options.h \
   ../Common/StringUtils.h ../Geo/fourierFace.h ../Geo/GFace.h \
   ../Geo/GModel.h ../Geo/Range.h ../Geo/fourierEdge.h ../Geo/GEdge.h \
   ../Geo/GModel.h ../Geo/fourierVertex.h ../Geo/GModel.h ../Geo/GVertex.h \
@@ -320,13 +326,13 @@ classificationEditor${OBJEXT}: classificationEditor.cpp GUI.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Post/ColorTable.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h Draw.h ../Common/Options.h \
-  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
-  ../Mesh/meshGFaceDelaunayInsertion.h ../Mesh/meshGFaceOptimize.h \
-  ../Mesh/meshGFaceDelaunayInsertion.h ../Geo/discreteEdge.h \
-  ../Geo/GModel.h ../Geo/GEdge.h ../Geo/discreteFace.h ../Geo/GModel.h \
-  ../Geo/GFace.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Post/ColorTable.h Draw.h \
+  ../Common/Options.h ../Common/Context.h ../Geo/CGNSOptions.h \
+  ../Mesh/PartitionOptions.h ../Mesh/meshGFaceDelaunayInsertion.h \
+  ../Mesh/meshGFaceOptimize.h ../Mesh/meshGFaceDelaunayInsertion.h \
+  ../Geo/discreteEdge.h ../Geo/GModel.h ../Geo/GEdge.h \
+  ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/GFace.h
 partitionDialog${OBJEXT}: partitionDialog.cpp GUI.h shortcutWindow.h \
   ../Common/GmshDefines.h ../Common/GmshMessage.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
diff --git a/Geo/GaussLegendreSimplex.h b/Geo/GaussLegendreSimplex.h
deleted file mode 100644
index 123c2c6c0e76ed7257f8aa3ce85ace45c3e38096..0000000000000000000000000000000000000000
--- a/Geo/GaussLegendreSimplex.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Gmsh - Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
-//
-// See the LICENSE.txt file for license information. Please report all
-// bugs and problems to <gmsh@geuz.org>.
-
-#ifndef _GAUSS_LEGENDRE_SIMPLEX_H_
-#define _GAUSS_LEGENDRE_SIMPLEX_H_
-
-#include "MElement.h"
-
-int GaussLegendreTet(int n1,int n2, int n3, IntPt *pts); 
-int GaussLegendreTri(int n1,int n2,IntPt *pts);
-int GaussLegendreHex(int n1, int n2, int n3, IntPt *pts);
-#endif
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 121c5dbf3ee49d8cdd702d71290a1e1ea4b74ca2..30a475342c6c904f971bc94160fc55f4f1798417 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -15,6 +15,7 @@
 #include "GmshEmbedded.h"
 #else
 #include "Numeric.h"
+#include "Gauss.h"
 #include "GaussLegendre1D.h"
 #include "Context.h"
 #include "qualityMeasures.h"
@@ -941,8 +942,6 @@ void MTriangle6::getFaceRep(int num, double *x, double *y, double *z, SVector3 *
 void MTriangle::getIntegrationPoints(int pOrder, int *npts, IntPt **pts) const
 {
 #if !defined(HAVE_GMSH_EMBEDDED)
-  extern int getNGQTPts(int order);
-  extern IntPt *getGQTPts (int order);
   *npts = getNGQTPts(pOrder);
   *pts = getGQTPts(pOrder);
 #endif
@@ -951,8 +950,6 @@ void MTriangle::getIntegrationPoints(int pOrder, int *npts, IntPt **pts) const
 void MQuadrangle::getIntegrationPoints(int pOrder, int *npts, IntPt **pts) const
 {
 #if !defined(HAVE_GMSH_EMBEDDED)
-  extern int getNGQQPts(int order);
-  extern IntPt *getGQQPts(int order);
   *npts = getNGQQPts(pOrder);
   *pts = getGQQPts(pOrder);
 #endif
@@ -1197,8 +1194,6 @@ void MTetrahedron10::getFaceRep(int num, double *x, double *y, double *z, SVecto
 void MTetrahedron::getIntegrationPoints(int pOrder, int *npts, IntPt **pts) const
 {
 #if !defined(HAVE_GMSH_EMBEDDED)
-  extern int getNGQTetPts(int order);
-  extern IntPt *getGQTetPts(int order);
   *npts = getNGQTetPts(pOrder);
   *pts = getGQTetPts(pOrder);
 #endif
@@ -1222,8 +1217,6 @@ int MHexahedron::getVolumeSign()
 void MHexahedron::getIntegrationPoints(int pOrder, int *npts, IntPt **pts) const
 {
 #if !defined(HAVE_GMSH_EMBEDDED)
-  extern int getNGQHPts(int order);
-  extern IntPt *getGQHPts(int order);
   *npts = getNGQHPts(pOrder);
   *pts = getGQHPts(pOrder);
 #endif
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 983bacb2f39b732c41083c075e4f909c2a75db14..b1232bdba4c4de58b9ad44231d1d4b7bc15950b9 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -15,11 +15,7 @@
 #include "MFace.h"
 #include "GmshMessage.h"
 #include "FunctionSpace.h"
-
-struct IntPt{
-  double pt[3];
-  double weight;
-};
+#include "Gauss.h"
 
 class GFace;
 
diff --git a/Geo/Makefile b/Geo/Makefile
index 50527e0ca8bb97aeae48cec387c52696b2c624cc..59ec9bf588b42312bafd45677688c444a3a9a6e8 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -32,11 +32,6 @@ SRC = GEntity.cpp\
 	GeoStringInterface.cpp GeoInterpolation.cpp\
       findLinks.cpp\
       MVertex.cpp\
-      GaussQuadratureTri.cpp\
-      GaussQuadratureQuad.cpp\
-      GaussQuadratureTet.cpp\
-      GaussQuadratureHex.cpp\
-      GaussLegendreSimplex.cpp\
       MFace.cpp\
       MElement.cpp\
       MZone.cpp MZoneBoundary.cpp
@@ -71,19 +66,22 @@ GEntity${OBJEXT}: GEntity.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
   ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 GVertex${OBJEXT}: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GFace.h GEdgeLoop.h GEdge.h \
   SVector3.h Pair.h MElement.h ../Common/GmshDefines.h MVertex.h MEdge.h \
   MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h
 GEdge${OBJEXT}: GEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Numeric/GaussLegendre1D.h
 GEdgeLoop${OBJEXT}: GEdgeLoop.cpp GEdgeLoop.h GEdge.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h GVertex.h GPoint.h SPoint2.h SVector3.h \
@@ -92,9 +90,9 @@ GFace${OBJEXT}: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Numeric/GaussLegendre1D.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Numeric/GaussLegendre1D.h \
   ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 GFaceCompound${OBJEXT}: GFaceCompound.cpp GFaceCompound.h GFace.h GEntity.h \
   Range.h SPoint3.h SBoundingBox3d.h GPoint.h GEdgeLoop.h GEdge.h \
@@ -108,16 +106,17 @@ GFaceCompound${OBJEXT}: GFaceCompound.cpp GFaceCompound.h GFace.h GEntity.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Numeric/gmshLinearSystemGmm.h \
-  ../Numeric/gmshLinearSystem.h ../Numeric/gmshLinearSystemFull.h \
-  ../Numeric/gmshLinearSystem.h ../Numeric/GmshMatrix.h
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Numeric/GmshMatrix.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Numeric/gmshLinearSystemGmm.h ../Numeric/gmshLinearSystem.h \
+  ../Numeric/gmshLinearSystemFull.h ../Numeric/gmshLinearSystem.h \
+  ../Numeric/GmshMatrix.h
 GRegion${OBJEXT}: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 gmshVertex${OBJEXT}: gmshVertex.cpp GFace.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h GEdgeLoop.h GEdge.h GVertex.h SPoint2.h \
   SVector3.h Pair.h gmshVertex.h Geo.h ../Common/GmshDefines.h \
@@ -125,7 +124,8 @@ gmshVertex${OBJEXT}: gmshVertex.cpp GFace.h GEntity.h Range.h SPoint3.h \
   ../Common/ListUtils.h ../Common/TreeUtils.h ../Common/avl.h \
   ../Common/ListUtils.h ExtrudeParams.h ../Common/SmoothData.h \
   GeoInterpolation.h ../Common/GmshMessage.h MVertex.h MElement.h MEdge.h \
-  MFace.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h
+  MFace.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/Gauss.h ../Numeric/Numeric.h
 gmshEdge${OBJEXT}: gmshEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h GFaceCompound.h gmshEdge.h Geo.h \
@@ -157,7 +157,8 @@ OCCVertex${OBJEXT}: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MVertex.h MElement.h \
   ../Common/GmshDefines.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h OCCVertex.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h OCCVertex.h \
   OCCIncludes.h OCCEdge.h OCCFace.h
 OCCEdge${OBJEXT}: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
@@ -211,11 +212,11 @@ GModel${OBJEXT}: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h discreteRegion.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h discreteRegion.h \
   discreteFace.h discreteEdge.h discreteVertex.h gmshSurface.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Common/SmoothData.h ../Mesh/Field.h \
-  ../Post/PView.h ../Geo/SPoint3.h ../Mesh/Generator.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Common/SmoothData.h \
+  ../Mesh/Field.h ../Post/PView.h ../Geo/SPoint3.h ../Mesh/Generator.h \
   ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 GModelIO_Geo${OBJEXT}: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h \
@@ -230,7 +231,8 @@ GModelIO_Mesh${OBJEXT}: GModelIO_Mesh.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h \
   GFace.h GEdgeLoop.h Pair.h GRegion.h ../Common/GmshDefines.h MElement.h \
   MVertex.h MEdge.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h discreteRegion.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h discreteRegion.h \
   discreteFace.h ../Common/StringUtils.h
 GModelIO_OCC${OBJEXT}: GModelIO_OCC.cpp GModelIO_OCC.h GModel.h GVertex.h \
   GEntity.h Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \
@@ -238,7 +240,8 @@ GModelIO_OCC${OBJEXT}: GModelIO_OCC.cpp GModelIO_OCC.h GModel.h GVertex.h \
   ../Common/GmshMessage.h ../Common/Context.h ../Geo/CGNSOptions.h \
   ../Mesh/PartitionOptions.h OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h \
   MElement.h ../Common/GmshDefines.h MVertex.h MEdge.h MFace.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Common/OpenFile.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/OpenFile.h
 GModelIO_Fourier${OBJEXT}: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \
   Range.h SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h \
   SVector3.h GFace.h GEdgeLoop.h Pair.h GRegion.h ../Common/GmshMessage.h \
@@ -291,38 +294,15 @@ MVertex${OBJEXT}: MVertex.cpp MVertex.h SPoint2.h SPoint3.h GVertex.h GEntity.h
   Range.h SBoundingBox3d.h GPoint.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GFaceCompound.h ../Common/GmshMessage.h \
   ../Common/StringUtils.h
-GaussQuadratureTri${OBJEXT}: GaussQuadratureTri.cpp MElement.h \
-  ../Common/GmshDefines.h MVertex.h SPoint2.h SPoint3.h MEdge.h \
-  SVector3.h MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h GaussLegendreSimplex.h
-GaussQuadratureQuad${OBJEXT}: GaussQuadratureQuad.cpp MElement.h \
-  ../Common/GmshDefines.h MVertex.h SPoint2.h SPoint3.h MEdge.h \
-  SVector3.h MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h GaussLegendreSimplex.h \
-  ../Numeric/GaussLegendre1D.h
-GaussQuadratureTet${OBJEXT}: GaussQuadratureTet.cpp MElement.h \
-  ../Common/GmshDefines.h MVertex.h SPoint2.h SPoint3.h MEdge.h \
-  SVector3.h MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h GaussLegendreSimplex.h
-GaussQuadratureHex${OBJEXT}: GaussQuadratureHex.cpp MElement.h \
-  ../Common/GmshDefines.h MVertex.h SPoint2.h SPoint3.h MEdge.h \
-  SVector3.h MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h GaussLegendreSimplex.h \
-  ../Numeric/GaussLegendre1D.h
-GaussLegendreSimplex${OBJEXT}: GaussLegendreSimplex.cpp MElement.h \
-  ../Common/GmshDefines.h MVertex.h SPoint2.h SPoint3.h MEdge.h \
-  SVector3.h MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h GaussLegendreSimplex.h \
-  ../Numeric/GaussLegendre1D.h
 MFace${OBJEXT}: MFace.cpp MFace.h MVertex.h SPoint2.h SPoint3.h SVector3.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 MElement${OBJEXT}: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \
   SPoint2.h SPoint3.h MEdge.h SVector3.h MFace.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h GEntity.h Range.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h GEntity.h Range.h \
   SBoundingBox3d.h GFace.h GPoint.h GEdgeLoop.h GEdge.h GVertex.h Pair.h \
-  ../Common/StringUtils.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Numeric/GaussLegendre1D.h \
+  ../Common/StringUtils.h ../Numeric/GaussLegendre1D.h \
   ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
   ../Mesh/qualityMeasures.h ../Mesh/meshGFaceDelaunayInsertion.h \
   ../Geo/MElement.h ../Mesh/meshGRegionDelaunayInsertion.h \
diff --git a/Graphics/Makefile b/Graphics/Makefile
index f297513b7707b57c3d97879f4a6840ce462de652..31e0120a8bc2ecf6f09b9915e72f945779dbdd08 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -88,7 +88,8 @@ drawMesh${OBJEXT}: drawMesh.cpp drawContext.h ../Geo/SBoundingBox3d.h \
   ../Geo/SBoundingBox3d.h ../Geo/MElement.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Common/Context.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h ../Common/OS.h gl2ps.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Post/PView.h \
   ../Post/PViewData.h
diff --git a/Makefile b/Makefile
index 9af50352eadd93d33b8590ba7ca0f906d7c0e8c3..129e260f34a033ff7481c5cc1b6090986e3b3501 100644
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,8 @@
 include variables
 
 GMSH_MAJOR_VERSION = 2
-GMSH_MINOR_VERSION = 2
-GMSH_PATCH_VERSION = 7
+GMSH_MINOR_VERSION = 3
+GMSH_PATCH_VERSION = 0
 GMSH_EXTRA_VERSION =
 
 GMSH_VERSION = ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION}
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 8d1e113c4f8f382cb0759315180c4340b505eab2..8efc7b2f0fbd590cd9d8bcd9e32b111f6878822a 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -90,9 +90,9 @@ Generator${OBJEXT}: Generator.cpp ../Common/GmshMessage.h ../Numeric/Numeric.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  meshGEdge.h meshGFace.h meshGFaceBDS.h meshGRegion.h BackgroundMesh.h \
-  BoundaryLayers.h HighOrder.h Generator.h ../Post/PView.h \
-  ../Post/PViewData.h
+  ../Numeric/Gauss.h ../Numeric/Numeric.h meshGEdge.h meshGFace.h \
+  meshGFaceBDS.h meshGRegion.h BackgroundMesh.h BoundaryLayers.h \
+  HighOrder.h Generator.h ../Post/PView.h ../Post/PViewData.h
 Field${OBJEXT}: Field.cpp ../Common/Context.h ../Geo/CGNSOptions.h \
   ../Mesh/PartitionOptions.h Field.h ../Post/PView.h ../Geo/SPoint3.h \
   ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Common/GmshDefines.h \
@@ -126,7 +126,8 @@ gmshSmoothHighOrder${OBJEXT}: gmshSmoothHighOrder.cpp HighOrder.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h meshGFaceDelaunayInsertion.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h meshGFaceDelaunayInsertion.h \
   gmshSmoothHighOrder.h ../Numeric/gmshAssembler.h \
   ../Numeric/gmshLinearSystem.h ../Numeric/gmshLaplace.h \
   ../Numeric/gmshTermOfFormulation.h ../Numeric/GmshMatrix.h \
@@ -134,8 +135,7 @@ gmshSmoothHighOrder${OBJEXT}: gmshSmoothHighOrder.cpp HighOrder.h \
   ../Numeric/GmshMatrix.h ../Numeric/gmshElasticity.h \
   ../Numeric/gmshTermOfFormulation.h ../Numeric/GmshMatrix.h \
   ../Numeric/gmshLinearSystemGmm.h ../Numeric/gmshLinearSystem.h \
-  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 meshGEdge${OBJEXT}: meshGEdge.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -149,9 +149,9 @@ meshGEdge${OBJEXT}: meshGEdge.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h BackgroundMesh.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h BackgroundMesh.h ../Common/Context.h \
+  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 meshGEdgeExtruded${OBJEXT}: meshGEdgeExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -164,13 +164,16 @@ meshGEdgeExtruded${OBJEXT}: meshGEdgeExtruded.cpp ../Geo/GModel.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h
 meshGFace${OBJEXT}: meshGFace.cpp meshGFace.h meshGFaceBDS.h \
   meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Common/GmshMessage.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   meshGFaceQuadrilateralize.h meshGFaceOptimize.h DivideAndConquer.h \
   BackgroundMesh.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
   ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
@@ -181,8 +184,7 @@ meshGFace${OBJEXT}: meshGFace.cpp meshGFace.h meshGFaceBDS.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
   ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h BDS.h qualityMeasures.h Field.h \
+  ../Mesh/PartitionOptions.h BDS.h qualityMeasures.h Field.h \
   ../Post/PView.h ../Common/OS.h HighOrder.h
 meshGFaceTransfinite${OBJEXT}: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
@@ -195,9 +197,9 @@ meshGFaceTransfinite${OBJEXT}: meshGFaceTransfinite.cpp meshGFace.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Context.h ../Geo/CGNSOptions.h \
+  ../Mesh/PartitionOptions.h
 meshGFaceExtruded${OBJEXT}: meshGFaceExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -210,50 +212,55 @@ meshGFaceExtruded${OBJEXT}: meshGFaceExtruded.cpp ../Geo/GModel.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/Context.h ../Geo/CGNSOptions.h \
+  ../Mesh/PartitionOptions.h
 meshGFaceBDS${OBJEXT}: meshGFaceBDS.cpp meshGFace.h meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h meshGFaceDelaunayInsertion.h BackgroundMesh.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Common/Context.h \
-  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h \
-  qualityMeasures.h Field.h ../Post/PView.h ../Common/OS.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h meshGFaceDelaunayInsertion.h \
+  BackgroundMesh.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
+  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h BDS.h qualityMeasures.h Field.h ../Post/PView.h \
+  ../Common/OS.h
 meshGFaceDelaunayInsertion${OBJEXT}: meshGFaceDelaunayInsertion.cpp \
   BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint2.h \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h meshGFaceOptimize.h meshGFace.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h meshGFaceOptimize.h meshGFace.h \
+  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
   ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Geo/Pair.h
 meshGFaceOptimize${OBJEXT}: meshGFaceOptimize.cpp meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h meshGFaceDelaunayInsertion.h qualityMeasures.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h BackgroundMesh.h Generator.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h meshGFaceDelaunayInsertion.h \
+  qualityMeasures.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h BackgroundMesh.h Generator.h
 meshGFaceQuadrilateralize${OBJEXT}: meshGFaceQuadrilateralize.cpp \
   meshGFaceQuadrilateralize.h ../Common/GmshMessage.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Geo/GFace.h \
@@ -266,15 +273,15 @@ meshGFaceQuadrilateralize${OBJEXT}: meshGFaceQuadrilateralize.cpp \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h meshGFaceOptimize.h \
-  meshGFaceBDS.h BDS.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h meshGFaceOptimize.h meshGFaceBDS.h BDS.h
 meshGRegion${OBJEXT}: meshGRegion.cpp meshGRegion.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint2.h \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h BackgroundMesh.h qualityMeasures.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
   ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
@@ -297,7 +304,7 @@ meshGRegionDelaunayInsertion${OBJEXT}: meshGRegionDelaunayInsertion.cpp \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h qualityMeasures.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -317,7 +324,8 @@ meshGRegionTransfinite${OBJEXT}: meshGRegionTransfinite.cpp meshGFace.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Common/Context.h ../Geo/CGNSOptions.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Context.h ../Geo/CGNSOptions.h \
   ../Mesh/PartitionOptions.h
 meshGRegionExtruded${OBJEXT}: meshGRegionExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
@@ -331,9 +339,10 @@ meshGRegionExtruded${OBJEXT}: meshGRegionExtruded.cpp ../Geo/GModel.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  meshGFace.h meshGRegion.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h meshGFace.h meshGRegion.h ../Common/Context.h \
+  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 meshGRegionCarveHole${OBJEXT}: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -346,14 +355,15 @@ meshGRegionCarveHole${OBJEXT}: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h
 meshGRegionLocalMeshMod${OBJEXT}: meshGRegionLocalMeshMod.cpp \
   meshGRegionLocalMeshMod.h meshGRegionDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h BackgroundMesh.h qualityMeasures.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GRegion.h \
@@ -378,8 +388,8 @@ qualityMeasures${OBJEXT}: qualityMeasures.cpp qualityMeasures.h BDS.h \
   ../Geo/SPoint3.h ../Geo/MElement.h ../Common/GmshDefines.h \
   ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 BoundaryLayers${OBJEXT}: BoundaryLayers.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -392,7 +402,8 @@ BoundaryLayers${OBJEXT}: BoundaryLayers.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h BoundaryLayers.h ../Geo/ExtrudeParams.h \
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h BoundaryLayers.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h meshGEdge.h meshGFace.h
 BDS${OBJEXT}: BDS.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h \
   ../Common/GmshMessage.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h \
@@ -405,7 +416,7 @@ BDS${OBJEXT}: BDS.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  qualityMeasures.h
+  ../Numeric/Gauss.h ../Numeric/Numeric.h qualityMeasures.h
 HighOrder${OBJEXT}: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -419,9 +430,9 @@ HighOrder${OBJEXT}: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   gmshSmoothHighOrder.h ../Geo/MElement.h ../Common/GmshDefines.h \
   ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/MFace.h ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Common/OS.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../Common/Context.h ../Geo/CGNSOptions.h \
-  ../Mesh/PartitionOptions.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/OS.h ../Common/Context.h \
+  ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h
 Partition${OBJEXT}: Partition.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -435,7 +446,8 @@ Partition${OBJEXT}: Partition.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h PartitionOptions.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h PartitionOptions.h
 Refine${OBJEXT}: Refine.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
@@ -449,4 +461,5 @@ Refine${OBJEXT}: Refine.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h \
   ../Common/GmshMessage.h ../Numeric/FunctionSpace.h \
-  ../Numeric/GmshMatrix.h ../Common/OS.h
+  ../Numeric/GmshMatrix.h ../Numeric/Gauss.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/OS.h
diff --git a/Numeric/Gauss.h b/Numeric/Gauss.h
new file mode 100644
index 0000000000000000000000000000000000000000..c8258e26ef22fbf6e8c5beff5a80370470171e58
--- /dev/null
+++ b/Numeric/Gauss.h
@@ -0,0 +1,27 @@
+// Gmsh - Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
+//
+// See the LICENSE.txt file for license information. Please report all
+// bugs and problems to <gmsh@geuz.org>.
+
+#ifndef _GAUSS_H_
+#define _GAUSS_H_
+
+#include "Numeric.h"
+
+int GaussLegendreTri(int n1, int n2, IntPt *pts);
+int GaussLegendreTet(int n1, int n2, int n3, IntPt *pts); 
+int GaussLegendreHex(int n1, int n2, int n3, IntPt *pts);
+
+int getNGQTPts(int order);
+IntPt *getGQTPts (int order);
+
+int getNGQQPts(int order);
+IntPt *getGQQPts(int order);
+
+int getNGQTetPts(int order);
+IntPt *getGQTetPts(int order);
+
+int getNGQHPts(int order);
+IntPt *getGQHPts(int order);
+
+#endif
diff --git a/Geo/GaussLegendreSimplex.cpp b/Numeric/GaussLegendreSimplex.cpp
similarity index 56%
rename from Geo/GaussLegendreSimplex.cpp
rename to Numeric/GaussLegendreSimplex.cpp
index 46a1e5bd13ef543a7b0cd5eece151865535bffe2..b2770791815ff4d3a63cf16e09db2b2abddcc4af 100644
--- a/Geo/GaussLegendreSimplex.cpp
+++ b/Numeric/GaussLegendreSimplex.cpp
@@ -2,25 +2,42 @@
 //
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
+
 #include <math.h>
-#include "MElement.h"
-#include "GaussLegendreSimplex.h"
+#include "Gauss.h"
 #include "GaussLegendre1D.h"
 
-void brickToTet(double xi,double eta, double zeta,
-                double *r, double *s, double *t, double *J);
+static void brickToTet(double xi, double eta, double zeta,
+                       double *r, double *s, double *t, double *J)
+{
+  double r1, rs1;
+  *r = 0.5e0 * (1.0e0 + xi);
+  r1 = 1.0e0 - (*r);
+  *s = 0.5e0 * (1.0e0 + eta) * r1;
+  rs1 = 1.0e0 - (*r) - (*s);
+  *t = 0.5e0 * (1.0e0 + zeta) * rs1;
+  *J = 0.125e0 * r1 * rs1;
+}
+
+void quadToTri(double xi, double eta, double *r, double *s, double *J)
+{
+  double r1;
+  *r = 0.5e0 * (1.0e0 + xi);
+  r1 = 1.0e0 - (*r);
+  *s = 0.5e0 * (1.0e0 + eta) * r1;
+  *J = 0.25e0 * r1;  
+}
 
-void quadToTri(double xi,double eta,
-               double *r, double *s,double *J);
-double quadToTriJac(double xi,double eta);
+double quadToTriJac(double,double eta)
+{
+  return 0.125e0 * (1.0e0 - eta);
+}
 
-int GaussLegendreTet(int n1,int n2,int n3,IntPt *pts) 
+int GaussLegendreTet(int n1, int n2, int n3, IntPt *pts) 
 {
   /* get degenerate n1Xn2Xn3 Gauss-Legendre scheme to integrate over a tet */
   int i,j,k,index=0;
-  //int npnt = n1 * n2 * n3 ;
   double *pt1,*pt2,*pt3,*wt1,*wt2,*wt3,dJ;
-  //const double six=6.000000000000000;
 
   gmshGaussLegendre1D(n1,&pt1,&wt1);
   gmshGaussLegendre1D(n2,&pt2,&wt2);
@@ -37,12 +54,10 @@ int GaussLegendreTet(int n1,int n2,int n3,IntPt *pts)
   return index;
 }
 
-//int GaussLegendreTri(int n1,int n2, double GLr[][3],double *GLwt) 
 int GaussLegendreTri(int n1,int n2,IntPt *pts) 
 {
   /* get degenerate n1Xn2 Gauss-Legendre scheme to integrate over a tri */
   int i,j,index=0;
-  //int npnt = n1 * n2 ;
   double *pt1,*pt2,*wt1,*wt2,dJ;
   //const double two = 2.0000000000000000;
 
@@ -57,29 +72,3 @@ int GaussLegendreTri(int n1,int n2,IntPt *pts)
   }
   return index;
 }
-
-void brickToTet(double xi,double eta, double zeta,
-                      double *r, double *s, double *t, double *J) {
-  double r1,rs1;
-  *r = 0.5e0*(1.0e0+xi);
-  r1 = 1.0e0-(*r);
-  *s = 0.5e0*(1.0e0+eta)*r1;
-  rs1 = 1.0e0-(*r)-(*s);
-  *t = 0.5e0*(1.0e0+zeta)*rs1;
-  *J = 0.125e0*r1*rs1;
-}
-
-void quadToTri(double xi,double eta,double *r, double *s, double *J) {
-  double r1;
-  *r = 0.5e0*(1.0e0+xi);
-  r1 = 1.0e0-(*r);
-  *s = 0.5e0*(1.0e0+eta)*r1;
-  *J = 0.25e0*r1;  
-}
-
-double quadToTriJac(double,double eta) {
-  return 0.125e0*(1.0e0-eta);
-}
-
-
-
diff --git a/Geo/GaussQuadratureHex.cpp b/Numeric/GaussQuadratureHex.cpp
similarity index 98%
rename from Geo/GaussQuadratureHex.cpp
rename to Numeric/GaussQuadratureHex.cpp
index 33f7507740d5e1b14015aae04b2f30a780616e3d..daabd208734104a94c4758a9c67af54fce92cc59 100644
--- a/Geo/GaussQuadratureHex.cpp
+++ b/Numeric/GaussQuadratureHex.cpp
@@ -3,8 +3,7 @@
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
 
-#include "MElement.h"
-#include "GaussLegendreSimplex.h"
+#include "Gauss.h"
 #include "GaussLegendre1D.h"
 
 const double a1  = 0.40824826;
diff --git a/Geo/GaussQuadratureQuad.cpp b/Numeric/GaussQuadratureQuad.cpp
similarity index 98%
rename from Geo/GaussQuadratureQuad.cpp
rename to Numeric/GaussQuadratureQuad.cpp
index b59070f4aea367b77f1e0bcf9e955330d7486abf..bb2c6ff83e42194bf269a4e4ef7a0f8abbd7cbcf 100644
--- a/Geo/GaussQuadratureQuad.cpp
+++ b/Numeric/GaussQuadratureQuad.cpp
@@ -3,8 +3,7 @@
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
 
-#include "MElement.h"
-#include "GaussLegendreSimplex.h"
+#include "Gauss.h"
 #include "GaussLegendre1D.h"
 
 IntPt GQQ1[1] = {
diff --git a/Geo/GaussQuadratureTet.cpp b/Numeric/GaussQuadratureTet.cpp
similarity index 99%
rename from Geo/GaussQuadratureTet.cpp
rename to Numeric/GaussQuadratureTet.cpp
index 6335d4613216e8f3ea5697132f754dececbac940..854426ebba894943c8c119f0edc86b937cb9c577 100644
--- a/Geo/GaussQuadratureTet.cpp
+++ b/Numeric/GaussQuadratureTet.cpp
@@ -2,9 +2,9 @@
 //
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
-#include "MElement.h"
-#include "GaussLegendreSimplex.h"
-//#include "Global.h"
+
+#include "Gauss.h"
+#include "GaussLegendre1D.h"
 
 /* constants for 4-point rule */
 #define  a4  0.5854101966249685  
diff --git a/Geo/GaussQuadratureTri.cpp b/Numeric/GaussQuadratureTri.cpp
similarity index 99%
rename from Geo/GaussQuadratureTri.cpp
rename to Numeric/GaussQuadratureTri.cpp
index c76f96521d9f23470c80951829c8b74a6c9576d4..21a4503f2897e776e57e180400eea94a9b0978d4 100644
--- a/Geo/GaussQuadratureTri.cpp
+++ b/Numeric/GaussQuadratureTri.cpp
@@ -2,8 +2,9 @@
 //
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
-#include "MElement.h"
-#include "GaussLegendreSimplex.h"
+
+#include "Gauss.h"
+#include "GaussLegendre1D.h"
 
 IntPt GQT1[1] = { {{.333333333333333,.333333333333333,0},1.0} };
 IntPt GQT2[3] = {
diff --git a/Numeric/Makefile b/Numeric/Makefile
index 6e6bd9c8fa2bb2ae60314b5e06cde1eca892e7a1..f07d08cb20ea31c210f6ff5ce2b2546c8baf6c47 100644
--- a/Numeric/Makefile
+++ b/Numeric/Makefile
@@ -19,6 +19,11 @@ SRC = Numeric.cpp\
       gmshElasticity.cpp\
       EigSolve.cpp\
       FunctionSpace.cpp\
+      GaussQuadratureTri.cpp\
+      GaussQuadratureQuad.cpp\
+      GaussQuadratureTet.cpp\
+      GaussQuadratureHex.cpp\
+      GaussLegendreSimplex.cpp\
       gmsh_predicates.cpp\
       gsl_newt.cpp\
       gsl_min.cpp\
@@ -69,6 +74,7 @@ gmshTermOfFormulation${OBJEXT}: gmshTermOfFormulation.cpp ../Common/Gmsh.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   GmshMatrix.h gmshTermOfFormulation.h gmshFunction.h gmshLinearSystem.h \
   gmshAssembler.h
 gmshLaplace${OBJEXT}: gmshLaplace.cpp gmshLaplace.h gmshTermOfFormulation.h \
@@ -85,7 +91,8 @@ gmshLaplace${OBJEXT}: gmshLaplace.cpp gmshLaplace.h gmshTermOfFormulation.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  Numeric.h NumericEmbedded.h
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  Numeric.h
 gmshElasticity${OBJEXT}: gmshElasticity.cpp gmshElasticity.h \
   gmshTermOfFormulation.h GmshMatrix.h ../Common/GmshMessage.h \
   ../Common/Gmsh.h ../Common/GmshMessage.h ../Geo/GModel.h \
@@ -100,10 +107,21 @@ gmshElasticity${OBJEXT}: gmshElasticity.cpp gmshElasticity.h \
   ../Geo/MVertex.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  Numeric.h NumericEmbedded.h
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  Numeric.h
 EigSolve${OBJEXT}: EigSolve.cpp
 FunctionSpace${OBJEXT}: FunctionSpace.cpp FunctionSpace.h GmshMatrix.h \
   ../Common/GmshMessage.h ../Common/GmshDefines.h
+GaussQuadratureTri${OBJEXT}: GaussQuadratureTri.cpp Gauss.h Numeric.h \
+  NumericEmbedded.h GaussLegendre1D.h
+GaussQuadratureQuad${OBJEXT}: GaussQuadratureQuad.cpp Gauss.h Numeric.h \
+  NumericEmbedded.h GaussLegendre1D.h
+GaussQuadratureTet${OBJEXT}: GaussQuadratureTet.cpp Gauss.h Numeric.h \
+  NumericEmbedded.h GaussLegendre1D.h
+GaussQuadratureHex${OBJEXT}: GaussQuadratureHex.cpp Gauss.h Numeric.h \
+  NumericEmbedded.h GaussLegendre1D.h
+GaussLegendreSimplex${OBJEXT}: GaussLegendreSimplex.cpp Gauss.h Numeric.h \
+  NumericEmbedded.h GaussLegendre1D.h
 gmsh_predicates${OBJEXT}: gmsh_predicates.cpp
 gsl_newt${OBJEXT}: gsl_newt.cpp ../Common/GmshMessage.h Numeric.h \
   NumericEmbedded.h
diff --git a/Numeric/NumericEmbedded.h b/Numeric/NumericEmbedded.h
index c3f029f02cff95085c62879ffa67c8a3557c3a91..08523ad8df4ef7b0155bf032aa20bafc81cf6599 100644
--- a/Numeric/NumericEmbedded.h
+++ b/Numeric/NumericEmbedded.h
@@ -11,6 +11,11 @@
 #define myhypot(a,b) (sqrt((a)*(a)+(b)*(b)))
 #define sign(x)      (((x)>=0)?1:-1)
 
+struct IntPt{
+  double pt[3];
+  double weight;
+};
+
 double myatan2(double a, double b);
 double myasin(double a);
 double myacos(double a);
diff --git a/Post/Makefile b/Post/Makefile
index a3a8d537181e01560897783eba33e3ee4b3a48a3..871477d8c9684513cd6bf7843455b17d01b2d5bb 100644
--- a/Post/Makefile
+++ b/Post/Makefile
@@ -102,8 +102,8 @@ PViewDataGModel${OBJEXT}: PViewDataGModel.cpp PViewDataGModel.h PViewData.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint2.h \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 PViewDataGModelIO${OBJEXT}: PViewDataGModelIO.cpp ../Common/GmshMessage.h \
   PViewDataGModel.h PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Numeric/GmshMatrix.h ../Geo/GModel.h ../Geo/GVertex.h \
@@ -118,7 +118,7 @@ PViewDataGModelIO${OBJEXT}: PViewDataGModelIO.cpp ../Common/GmshMessage.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
   ../Geo/SVector3.h ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Numeric/Gauss.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Common/StringUtils.h
 PViewOptions${OBJEXT}: PViewOptions.cpp PViewOptions.h ColorTable.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshMessage.h
@@ -143,7 +143,8 @@ OctreePost${OBJEXT}: OctreePost.cpp ../Common/Octree.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint2.h \
   ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h
+  ../Numeric/FunctionSpace.h ../Numeric/GmshMatrix.h ../Numeric/Gauss.h \
+  ../Numeric/Numeric.h
 ColorTable${OBJEXT}: ColorTable.cpp ../Common/GmshMessage.h ColorTable.h \
   ../Common/Context.h ../Geo/CGNSOptions.h ../Mesh/PartitionOptions.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
diff --git a/doc/VERSIONS.txt b/doc/VERSIONS.txt
index 79cf8145c7b7e5e4acc76b0c9e379181b5646aa2..0523613101359a7882ecf685260425ab539fb474 100644
--- a/doc/VERSIONS.txt
+++ b/doc/VERSIONS.txt
@@ -1,10 +1,10 @@
-$Id: VERSIONS.txt,v 1.23 2008-12-06 16:13:56 geuzaine Exp $
+$Id: VERSIONS.txt,v 1.24 2008-12-19 09:45:32 geuzaine Exp $
 
-2.2.7 (?): restored full-quad recombine algorithm; fixed clipping
+2.3.0 (?): restored full-quad recombine algorithm; fixed clipping
 planes when more than 32 views are present ({Geometry,Mesh,View}.Clip
-replaces General.Clip); modified arrow size options
-(View.ArrowSize{Min,Max} replaces View.ArrowSize); major graphics and
-GUI code refactoring.
+replaces General.Clip); modified arrow size (View.ArrowSize{Min,Max}
+replaces View.ArrowSize) and Transform options; major graphics and GUI
+code refactoring.
 
 2.2.6 (Nov 21, 2008): better transfinite smoothing and automatic
 corner selection; fixed high order meshing crashes on Windows and
diff --git a/doc/gmsh.html b/doc/gmsh.html
index 1a75b5fd3627443dd047362f901200946f89f3e9..dbcecef76cec4bc0b65989515548c337154c64e4 100644
--- a/doc/gmsh.html
+++ b/doc/gmsh.html
@@ -25,7 +25,7 @@ generator with built-in pre- and post-processing facilities</h1>
 <p>
 <h3 align="center">Christophe Geuzaine and Jean-Fran�ois Remacle</h3>
 <p>
-<h3 align=center>Version 2.2.6, November 21 2008</h3>
+<h3 align=center>Version 2.3.0, ?? 2008</h3>
 <p>
 <center>
   <a href="#Description">Description</a> |
@@ -67,10 +67,10 @@ binary). Tutorial and demos files are included in all the archives.
 <ul>
 <li>
 <strong>Current stable release</strong>:
-<a href="/gmsh/bin/Windows/gmsh-2.2.6-Windows.zip"><strong>Windows</strong></a>,
-<a href="/gmsh/bin/Linux/gmsh-2.2.6-Linux.tgz"><strong>Linux</strong></a>,
-<a href="/gmsh/bin/MacOSX/gmsh-2.2.6-MacOSX.tgz"><strong>Mac OS X</strong></a> and
-<a href="/gmsh/src/gmsh-2.2.6-source.tgz"><strong>source code</strong></a>
+<a href="/gmsh/bin/Windows/gmsh-2.3.0-Windows.zip"><strong>Windows</strong></a>,
+<a href="/gmsh/bin/Linux/gmsh-2.3.0-Linux.tgz"><strong>Linux</strong></a>,
+<a href="/gmsh/bin/MacOSX/gmsh-2.3.0-MacOSX.tgz"><strong>Mac OS X</strong></a> and
+<a href="/gmsh/src/gmsh-2.3.0-source.tgz"><strong>source code</strong></a>
 <a href="#build-footnote" name="build-footmark"><sup>2</sup></a>
 <p>
 <li>Experimental versions (these might be buggy, or might not even
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index a05a9ae89e3671cacd9cdd2f15a05d779ea60003..4b7072bba6aa8f80a5917dd2b7975494368f4cc9 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -21,7 +21,7 @@
 @c =========================================================================
 @c %**start of header
 @setfilename        gmsh.info
-@set GMSH-VERSION   2.2
+@set GMSH-VERSION   2.3
 @set COPYRIGHT      @copyright{} 1997-2008 Christophe Geuzaine, Jean-Fran@,{c}ois Remacle
 @c
 @settitle Gmsh @value{GMSH-VERSION}